すらいむがあらわれた

こまんど >  たたかう  にげる

超初歩的なGainer mini + SoundCipher

今日はProcessingでMIDIを扱えるライブラリ「SoundCipher」の使い方を調べてました。
SoundCipher
http://soundcipher.org/index.html

Gainer miniサイト(http://www.gainer-mini.jp/download.html)からダウンロードできるサンプルの中のボタンを押してウィンドウの色を変えるコードとSoundCipherのサンプルコード「MIDI File Writer」を合わせて改造してみたのがこれ↓
ボタンを押すと音が鳴ります。
GainerPlusSoundCipher1
GainerPlusSoundCipher1 posted by (C)kanpan


import processing.gainer.*;
import arb.soundcipher.*;

Gainer gainer;
SCScore score;
int instrument = 4; // Electric Piano1

void setup(){
size(200,200);
background(0);
gainer = new Gainer(this);

score = new SCScore();
float p = score.pcRandom(60, 72, score.PENTATONIC);
score.addNote(0, 1, instrument, p, random(60, 100), 0.25, 0.8, 50);
score.addNote(0.25, 2, instrument, p+4, random(60, 100), 0.25, 0.8, 50);
score.addNote(0.5, 3, instrument, p+7, random(60, 100), 0.25, 0.8, 50);
}

void draw(){
if(gainer.buttonPressed){
fill(255,0,0);
score.play();
}else{
fill(0,0,255);
}
rect(20,20,160,160);
}

instrumentの値を変えると楽器の音が変わる。使える楽器の音はMIDIで決まっていて全部で127種類。
詳説MIDI規格:GM規格音色マップ表
http://www.pluto.dti.ne.jp/~daiki/Midi/IL_ProgramNum.html


私はそもそもMIDIをまったく知らなかったので、まずSoundCipherのレファレンスで使われている言葉がわからず(_ _;
詳説MIDI規格
http://www.pluto.dti.ne.jp/~daiki/Midi/Midi.html
このサイトの解説がわかりやすかったです。とはいっても、まだまだ楽器の音の指定方法がなんとかくわかった程度。。。まだピッチとかベロシティとかノートオンとか全然わかりません(^_^;