このサンプルは出来るだけシンプルに音を鳴らすプログラムです.
サウンドライブラリ・ドライバの初期化を行い,880Hzの音を再生する.
処理の流れとしては
本サンプルには下記の注意事項があります.
実際のコーディングを下記に提示する.なお,このサンプルはエラーチェックをかなり省いています.
/********************************************************* * * Sound Library Sample * * 簡単な発音を行います. * *********************************************************/ #include <sd_sg.h> /* サウンドドライバがあるアドレス */ #define SNDDRV_ADR (0x8c050000) int main( void) { SDS_MIDI_MES midi_mes; SDMIDI midi_handle = NULL; Sint32 midi_ch = 0x00; /* MIDIチャンネル番号0 */ Sint32 i; /* * 初期化を行う */ if ( SoundInit( SNDDRV_ADR) != SDE_ERR_NOTHING) { /* エラーが起こった */ goto exit; } /* * MIDIメッセージを送信して音を鳴らす */ /* MIDIポートのオープン */ if ( sdMidiOpenPort( &midi_handle) != SDE_ERR_NOTHING) { /* エラーが起こった */ goto exit; } /* MIDIメッセージの作成(0x90,0x51,0x7F) */ if ( sdMidiSetMes( midi_handle, &midi_mes, SDD_MIDI_NOTE_ON | midi_ch, 0x51, 0x7F) != SDE_ERR_NOTHING) { /* エラーが起こった */ goto exit; } /* MIDIメッセージの送信 */ if ( sdMidiSendMes( midi_handle, &midi_mes, 0) != SDE_ERR_NOTHING) { /* エラーが起こった */ goto exit; } /* サウンドサーバを実行(本来Vブランクなどで呼ぶ) */ sdSysServer(); /* * しばらく待つ */ for ( i = 0; i < 0x10000; i++); /* * 鳴っている音を止める */ /* MIDIメッセージの作成(0x90,0x51,0x7F) */ if ( sdMidiSetMes( midi_handle, &midi_mes, SDD_MIDI_NOTE_OFF | midi_ch, 0x51, 0x00) != SDE_ERR_NOTHING) { /* エラーが起こった */ goto exit; } /* MIDIメッセージの送信 */ if ( sdMidiSendMes( midi_handle, &midi_mes, 0) != SDE_ERR_NOTHING) { /* エラーが起こった */ goto exit; } /* サウンドサーバを実行(本来Vブランクなどで呼ぶ) */ sdSysServer(); exit: if ( midi_handle != NULL) { /* MIDIポートのハンドルの破棄 */ result = sdMidiClosePort( midi_handle); } /* 無限ループ */ while ( 1); return ( 0); } /*EOF*/ |