したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

管理人の独り言(プログラミング関連)

1949 ◆adhRKFl5jU:2009/05/22(金) 23:05:25
#include <stdio.h>
#include <math.h>
#include <windows.h>

#define PI 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211

void CALLBACK waveOutProc(
HWAVEOUT hwo,
UINT msg,
DWORD dwInstance,
DWORD dwParm1,
DWORD dwParm2
){
}

int main(int argc, char **argv){
HWAVEOUT hwo;
WAVEFORMATEX wf;

wf.wFormatTag = WAVE_FORMAT_PCM;
wf.nChannels = 1;
wf.wBitsPerSample = 8;
wf.nBlockAlign = wf.nChannels * wf.wBitsPerSample / 8;
wf.nSamplesPerSec = 44100;
wf.nAvgBytesPerSec = wf.nSamplesPerSec * wf.nBlockAlign;

waveOutOpen(
&hwo,
WAVE_MAPPER,
&wf,
(DWORD)waveOutProc,
0,
CALLBACK_FUNCTION
);

int len = wf.nAvgBytesPerSec * 2;

BYTE *p = (BYTE*)malloc(len);

unsigned int hz;
puts("適当にHz数でも入力してください。二秒ぐらい音がします。");
scanf("%d", &hz);

for(int i = 0; i < len; ++i){
//p[i] = sin((double)i / 180 * 1024 * 2 * 2 * 2 * 2 * 2 * PI) * 0xFF;
p[i] = sin((double)i / wf.nAvgBytesPerSec * PI * 2 * hz) * 0xFF;
}

WAVEHDR whdr;
whdr.lpData = (LPSTR)p;
whdr.dwBufferLength = len;
whdr.dwFlags = WHDR_BEGINLOOP | WHDR_ENDLOOP;
whdr.dwLoops = 1;

waveOutPrepareHeader(hwo, &whdr, sizeof(WAVEHDR));
waveOutWrite(hwo, &whdr, sizeof(WAVEHDR));

Sleep(2050);

return 0;
}


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板