言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

音について調べる

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