月別アーカイブ: 12月 2011

Java VS Ruby The Third Impact

Javaで書く基本ループ

public class SampleC {

public static void main(String[] args) {
int i = 0, j = 0;
while(true){
if(i >= 5) break;
System.out.print(” ” + i++);
}
System.out.print(“:”);
do{
System.out.print(” ” + j);
j++;
} while(j < 5);
System.out.println();
for(int m = 0, n = 20; m < n; m += 5,n++){
if(m % 2 == 0) continue;
System.out.println(“m = ” + m + ” n = ” + n);
}

}

}

rubyで書く基本ループ

class SampleC
def main
i = j = 0
while true
break if i >= 5
p (” ” + i.to_s)
i += 1
end
p “:”
loop do
p (” ” + j.to_s)
j += 1
break if j < 5
end
p “\n”
m = 0
n = 20
for s in 1..4
m += 5
n += 1
next if m % 2 == 0
p (“m = ” + m.to_s + ” n = ” + n.to_s + “\n”)
end
end
end
x = SampleC.new
x.main

ちなみにRubyは実行環境入れてないのでエラーチェックしてないです。

追記:

チェックしたところ、ダブルクォーテーションが全角なのを除いて

コピペでちゃんと動きました。

Java VS Ruby Returns

JAVAの教科書にあったソース

class Dog {
 int weight = 50;
 static {
  System.out.println(“static inr”);
 }
 {
  System.out.print(“inr “);
 }
 Dog() {
  System.out.println(“ctr”);
 }
 void meth() {
  System.out.println(weight);
 }

}

class SampleA {
 public static void main(String[] args){
  Dog x = new Dog();
  Dog y = new Dog();
  x.meth();
 }
}

Rubyに翻訳

class Dog
 def initialize
  @weight = 50
  p “inr ctr”
 end
 def meth
  p @weight
 end
end

p “static inr”
x = Dog.new
y = Dog.new
x.meth

 もういっちょJAVA

import java.util.*;

class SampleB {
 public static void main(String[] args){
  int[] ds = {1, 2, 3, 4, 5};
  for(int d : ds)
   System.out.println(d);
  System.out.println();
  int[][] nns = {{1, 2, 3}, {10, 20, 30}, {100, 200, 300}};
  for(int[] ns : nns){
   for(int n : ns){
    System.out.println(n);
   }
   System.out.println();
  }
  List<String> ss = new ArrayList<String>();
  ss.add(“abc”);
  ss.add(“def”);
  ss.add(“ghi”);
  for(String s : ss)
   System.out.println(s);
  
 }
}

もういっちょRuby

class SampleB
 def main
  ds = [1, 2, 3, 4, 5]
  for d in ds
   p d
  end
  p “”
  nns = [[1, 2, 3], [10, 20, 30], [100, 200, 300]]
  for ns in nns
   for n in ns
    p n
   end
   p “”
  end
  ss = []
  ss.push(“abc”)
  ss.push(“def”)
  ss.push(“ghi”)
  for s in ss
   p s
  end
 end
end

x = SampleB.new
x.main

打ち込みよもやま話:BrightnessとResonance編

常駐で会社から出ていたので、随分間が空いてしまいましたね。
久々ですが、よもやま話の続きです。

「Brightness(ブライトネス)」とは、そのパートの音の明るさを
設定するパラメータです。
ローパスフィルターとも呼ばれ、0~127の値を設定できます。
初期値は64です。

基本的に値を大きくすれば明るく、小さくすれば暗くなりますが、
楽器によっては一定以上は明るくなったり暗くなったりしない
限界値みたいなものが存在します。
限界値は楽器によっても異なる(っぽい)ので、一概にこの値と断定はできません。
耳で聞いて判断してください。

とはいうものの、先に断っておくとこのパラメータは標準MIDI音源では対応しておらず、
設定しても何の効果も得られません。
Resonanceも一緒です。悪しからず。

さて、音の明るさといってもよく分からないですよね。
ざっくり言うと、閉じてる音が暗い音で開いてる音が明るい感じになります。
口をすぼめて出した声は暗く、大きく開いて出した声は明るいのです。
この口のすぼまり具合を調整するのがBrightnessだと思ってください。
音を曲の雰囲気に馴染ませるために使うことがほとんどです。
そして、Brightnessとセットで使いたいのが「Resonance(レゾナンス)」。
こちらは音にクセを付けるためのパラメータです。
0~127の値が設定でき、初期値も同じく64。
楽器によって限界値があるのも一緒です。

Brightnessが口のすぼまり具合なら、
Resonanceは舌の広がらせ具合といったところでしょうか?
舌を平たく広がらせて声を出すと、なんか変な声になるじゃないですか。
Resonanceを上げると音があんな感じになります。
特徴の無い音やマイルドな音にアクセントを付け、目立たせるために使います。

どちらのパラメータもがっつり値を振れますが、実際に使うときは
大抵10程度、多くても20弱くらいしか振りません。
それだけパラメータの効き方が強いんです。
3振るだけでも随分変わってきますよ、マジで。

主に曲の雰囲気作りに使うパラメータ達ですが、
2つを組み合わせることでギターのワウを表現できるようになります。
ワウってのは名前の通り、音がワウワウする奴のことです。
うまいこと設定すると、ギュアオォーンってな感じの
かっこいい音を作れたりもします。
音源持ってる人は手軽に演奏をパワーアップできるので、
弄ることを勧めたいパラメータですね。
あんまワウワウしすぎるとバカっぽくなるのでご注意を。

次のよもやま話は……うーん、どうしようか。
標準MIDI音源でできることは、既に粗方話してしまいました。
「Soft Pedal」でもやっとく?