Home>プログラミング講座>Mac C 講座中級> 第一回 サウンド>

Mac C 講座中級 第一回 サウンド

  お久しぶりです、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だと音をなり止ませて、処理を続けるようです。
 そして、'snd 'リソースの作り方です。ResEditを起動して下さい。どこかからコピーしてくる場合なら、'snd 'リソースを作って一番上にくるウインドウ(図1)を閉じて、どこぞのアプリケーションなりの'snd 'リソースからコピーしてきたのをペースとすればいいし(図2)、SimpleTextで録音すると'snd 'リソースに音を溜め込むので、それを利用してもいいでしょう。


図1
図1

図2
図2 このウインドウにペースト
 無駄話コーナー。音をならしながら他の処理もできるということは、音をならしながら音をならす事も可能なのです。SndNewChannelの第二引数はそのIDみたいなものらしいので、ID0のものとID1のものを同時にならす事も可能なのです。(もっと多くても多分いいはず)

[次の回へ>]


[Mac C講座中級]
[プログラミング講座]
[Home]