http://minnow.cc.gatech.edu/squeak/1952
あらゆる「音の鳴るもの」は AbstractSound のサブクラスになっている。AbstractSound には音量などの一般的な情報が入っている。
AbstractSound によって定義された音は、SoundPlayer によって出力される。SoundPlayer にはインスタンスメソッドが存在せず、クラスメソッドだけを使う。つまり、シングルトンオブジェクトのように使う(なんか変なような気もしますが)。
SoundPlayer と ScorePlayer(MIDI出力) の関係
SoundPlayer class>>resumePlaying: aSound quickStart: quickStart で演奏を登録する。
SoundPlayer class>>playLoop が実際の演奏を行う。
使われているプリミティブ(失敗するとVMが止まるので、直接使うのは諦めた)。
- SoundPlugin>>primitiveSoundAvailableSpace
- 有効なサウンドバッファの容量
- SoundPlugin>>primitiveSoundPlaySamples: frameCount from: buf startingAt: startIndex
- データを出力する。
s |
s := SoundInputStream new samplingRate: 22050; startRecording; inspect.
(InfoStringMorph on: [s meterLevel]) openInHand