ぐる式 (貳) より引っ越し作業中.未完.

2005年11月1日火曜日

Squeak Classes concerning Sound #01

音に関するクラス (*Sound) 群のメモ,その一. MIDI 派閥を除く.嘘言を書いてる場合がある.

  • 大半が 'Sound-Synthesis' カテゴリにある. MIDI 系は 'Sound-Scores' カテゴリ. 'Sound-Interface' カテゴリにはモルフ系のクラス群がある. EnvelopeEditorMorph と WaveEditor は佳く使うかも.
  • StreamingMP3Sound は 'Movies-Kernel' カテゴリにある.

クラス階層はこんな感じ.

  • AbstractSound
    • FMSound
      • FMBassoonSound
      • FMClarinetSound
      • UnloadedSound
      • M3HMMosnerFMSound
    • LoopedSampledSound
    • MixedSound *
    • PluckedSound
    • QueueSound *
    • RepeatingSound *
    • RestSound
    • ReverbSound
    • SampledSound
    • ScorePlayer
    • SequentialSound *
    • StreamingMonoSound
    • StreamingMP3Sound

他には.

  • SoundPlayer: 再生を一手に担当.
  • SoundCodec (ADPCMCodec, GSMCodec, MuLawCodec, WaveletCodec)
  • Envelope (PitchEnvelope, RandomEnvelope, VolumeEnvelope)
  • SoundBuffer: サンプリングの生データ.
  • Sonogram, FWT, AIFFFileReader, SunAudioFileWriter, 等のユーティリティ.
  • SoundRecorder (SoundInputStream): リアルタイムのサウンド入力.

AbstractSound 以下を三つに分ける.

  1. 自分自身で音データを持っているもの.
    • FMSound とそのサブクラス群: FM 音源系.
    • LoopedSampledSound: サンプル・テーブルにピッチ等を与えて作る.
    • PluckedSound: 弦に特化した音源.
    • RestSound: 音と測りあえるほどの沈黙,無音.高さ,強さは意味がないが,長さは意味がある.
    • SampledSound: サンプリング音源系. Squeak 内蔵の効果音はコレ.モノラルの wav. aiff を読み込むと,これのインスタンスが生成される.
  2. 上の音データ・クラスを入れる器であるもの.器の中身は器自身であってもよい.
    • MixedSound: 時間軸に対して横に配置する.
    • SequentialSound: 時間軸に対して縦に配置する.
    • QueueSound: SequentialSound と同様だが, SharedQueue を使っている.
    • RepeatingSound: ループを作る.
  3. それ以外のもの,未詳のもの,使ったことのないもの.
    • ReverbSound: リバーヴ (残響).常にオンのままで使ってる (笑).
    • ScorePlayer: MIDI.
    • StreamingMonoSound: .au, .aif ファイルの読み込みでしか使ってない.
    • StreamingMP3Sound: .mp3 ファイルや動画ファイルの読み込みでしか使ってない.
器について.
クラス メモ
MixedSound [ <--- soundA ---> ]
[ <--- soundB ---> ]
[ <--- soundC ---> ] ----------------------------------> 時間

soundA, soundB, soundC が同時に再生される.

  • パニングの指定が可能.
  • ステレオの wav, aiff を読み込むと,ステレオの SampledSound インスタンスが生成されるのではなく,それぞれのチャンネルが SampledSound である MixedSound のインスタンスが生成される. -> マルチ・チャンネルに対応予定? (笑)
SequentialSound [ <--- soundA ---> ][ <--- soundB ---> ][ <--- soundC ---> ] ----------------------------------> 時間

soundA, soundB, soundC が追加した順番で再生される.

  • モノラル.ステレオ (マルチ・チャンネル) にしたい場合は MixedSound を組み合わせる.
QueueSound
RepeatingSound [ <--- soundA ---> ] が終了すると頭に戻り,再生開始する.
  • ループ回数の指定が可能.無限ループにしたいときはシンボル #forever を渡して生成.

再生と停止.

  • aSound play で再生開始 (SoundPlayer playSound: aSound). -> SoundPlayer のクラス変数 ActiveSounds に追加される.
  • SoundPlayer pauseSound: aSound で停止. -> SoundPlayer のクラス変数 ActiveSounds から削除される.
  • 無限ループ (aRepeatingSound) を SoundPlayer pauseSound: aSound で停止すると,問答無用で停止. iterationCount: n で無限ループを解除すると, n 回ループしたあとループの最後まで行って止まる.その後にSoundPlayer pauseSound: aRepeatingSound で SoundPlayer のクラス変数 ActiveSounds から remove するべき.
  • 全サウンド停止は SoundPlayer stopPlayingAll.再生プロセスも停止したいときは SoundPlayer stopPlayerProcess.捕まえ損なったサウンドやプロセスを停止するときは ProcessBrowser から terminate する.

という感じで,とりあえず概観.

0 件のコメント:

コメントを投稿