お久しぶりです、ikasmeです。今回は音関連を解説しようと思います。 初級編とはちょっとちがったテイストで出来上がっていますが、どうぞお読みになって下さい。早速ソースコードです。 Handle sound; sound = GetResource( 'snd ',10000 ); if( sound == NULL { ExitToShell(); } SndPlay( NULL, (SndListHandle)sound, false ); ReleaseResource( sound );< ちなみに、10000はリソースのIDです。これだけで取りあえず音がなります。しかし、音がなるだけなのです。その間、処理が止まってしまいます。つまり、これだと音をBGMにはできないのです。しかし、音をならしながら他の処理もできる方法が用意されています。 Handle sound; SndChannelPtr chan = NULL; sound = GetResource( 'snd ',10000 ); SndNewChannel( &chan;, 0, initMono, NULL ); HLock( sound ); SndPlay( chan, (SndListHandle)sound, true ); SndDisposeChannel( chan, false ); HUnlock( sound ); ReleaseResource( sound ); SndNewChannelをしておき、SndPlayの第に引数がtrueだと、SndPlay()とSndDisposeChannel()の間、音がなっていても他の処理が出来ます。SndDisposeChannelの第二引数がfalseであれば、なり終わるまで処理を止めて、なり終わったら音を解放します。trueだと音をなり止ませて、処理を続けるようです。 |
図2 このウインドウにペースト
無駄話コーナー。音をならしながら他の処理もできるということは、音をならしながら音をならす事も可能なのです。SndNewChannelの第二引数はそのIDみたいなものらしいので、ID0のものとID1のものを同時にならす事も可能なのです。(もっと多くても多分いいはず) |