トップページ > 記事閲覧
音声
名前:らーてん 日時: 2018/03/23 21:57

現在DXライブラリでSIN波を音として出すことは可能ですか? 複数のsin波を音として合成して音を鳴らしたいのですが、DXライブラリの機能で可能でしょうか? やり方を教えてください。
メンテ

Page: 1 |

Re: 音声 ( No.1 )
名前:管理人 日時:2018/03/24 15:16

ソフトサウンドの機能を使用すると可能です 1000Hz の sin波と 200Hz の sin波を合成して再生するプログラムを組んでみましたので、よろしければご覧ください m(_ _)m #include "DxLib.h" #include <math.h> // 44.1Hz で10秒ぶんのサンプル数 #define SAMPLE_NUM (10 * 44100) int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int SoftSoundHandle ; int SoundHandle ; ChangeWindowMode( TRUE ) ; if( DxLib_Init() < 0 ) return -1 ; // 44100Hz, 16bit, 1チャンネルの 10秒の長さのソフトサウンドハンドルを作成 SoftSoundHandle = MakeSoftSound1Ch16Bit44KHz( 10 * 441000 ) ; // 10秒ぶんの波形データを作成する for( int i = 0 ; i < SAMPLE_NUM ; i ++ ) { // 1000Hz の sin波の値を取得 double Sin1 = sin( ( 3.1415926535 * 2.0 ) / 44100.0 * 1000.0 * i ) ; // 200Hz の sin波の値を取得 double Sin2 = sin( ( 3.1415926535 * 2.0 ) / 44100.0 * 200.0 * i ) ; // 二つの値を合成( 足して2で割った後、16bitの値の範囲 -32768 〜 32767 に収まる値にスケーリング ) int Mix = ( int )( ( Sin1 + Sin2 ) / 2.0 * 32766.0 ) ; // 波形データに書き込む WriteSoftSoundData( SoftSoundHandle, i, Mix, Mix ) ; } // 作成した波形データからサウンドハンドルを作成する SoundHandle = LoadSoundMemFromSoftSound( SoftSoundHandle ) ; // サウンドハンドルを作成した後はソフトサウンドハンドルは不要なので削除 DeleteSoftSound( SoftSoundHandle ) ; // 作成したサウンドハンドルをループ再生 PlaySoundMem( SoundHandle, DX_PLAYTYPE_LOOP ) ; // キー入力待ち WaitKey() ; // 作成したサウンドハンドルを削除 DeleteSoundMem( SoundHandle ) ; // DXライブラリの後始末 DxLib_End() ; return 0 ; }
メンテ
Re: 音声 ( No.2 )
名前:らーてん 日時:2018/03/25 12:31

ご回答ありがとうございます。 助かりました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存