C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ソースを解読してください(><)


(過去ログ 43 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■22579 / inTopicNo.1)  ソースを解読してください(><)
  
□投稿者/ ゆりか (2回)-(2008/07/27(Sun) 04:33:26)

分類:[C/C++] 

#include <stdio.h>
#include <limits.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>

void wave_binary_write()
{
char s[4];
FILE *fp;

fp = fopen("binary.wav" , "wb");

// RIFFヘッダ
s[0] = 'R';
s[1] = 'I';
s[2] = 'F';
s[3] = 'F';
fwrite(s, 1, 4, fp);

// ファイルサイズ(Chank サイズ)
unsigned long cl;
cl = 36;
fwrite(&cl, sizeof(long), 1, fp);

// WAVEヘッダ
s[0] = 'W';
s[1] = 'A';
s[2] = 'V';
s[3] = 'E';
fwrite(s, 1, 4, fp);

// chunkID(fmt チャンク)
s[0] = 'f';
s[1] = 'm';
s[2] = 't';
s[3] = ' ';
fwrite(s, 1, 4, fp);

// チャンクサイズ
int chank_size;
chank_size = 16;
fwrite(&chank_size, sizeof(long), 1, fp);

// フォーマットタグ
unsigned short tag;
tag = 1;
fwrite(&tag, sizeof(short), 1, fp);

// channel数
int channel;
channel = 2;
fwrite(&channel, sizeof(short), 1, fp);

// チャンネル数によるバイト量の決定
int byte;
if (channel == 1)
byte = 1;
else if (channel == 2)
byte = 2;

// サンプリングレート
int rate;
rate = 44100;
fwrite(&rate, sizeof(long), 1, fp);

// 1秒間に読み込ませるデータ量
int asps;
asps = channel * rate * byte;
printf("%d\n", asps);
fwrite(&asps, sizeof(long), 1, fp);

// 1秒間に読み込ませるチャンネル当たりのデータ量
int chasps;
chasps = channel * byte;
printf("%d\n", chasps);
fwrite(&chasps, sizeof(short), 1, fp);

// 1サンプリングあたりのデータ量
int byteasps;
byteasps = byte * 8;
fwrite(&byteasps, sizeof(short), 1, fp);


// chunkID (data チャンク)
s[0] = 'd';
s[1] = 'a';
s[2] = 't';
s[3] = 'a';
fwrite(s, 1, 4, fp);


fclose(fp);
}

void main(void)
{

wave_binary_write();
FILE *fp;

fp = fopen ("binary.wav", "a+b");

int bytesize;
bytesize = 10 * 44100 * 2; //2.5sの再生時間
fwrite(&bytesize, sizeof(long), 1, fp);

long i,j,k;
int x[44039];

j = 44039;
// 乱数の seed 値のセット
srand((unsigned) time(NULL));

// 44039個の乱数を生成して出力
for(k=0; k<10; k++)
{
for (i=0; i<j; i++)
{
int n = rand();
x[i] = n;

printf("%d %d\n", x[i],i);
fwrite(&n, sizeof(short) ,1, fp);
}
}

// if (gecth()) return;*/
}



引用返信 編集キー/
■22580 / inTopicNo.2)  Re[1]: ソースを解読してください(><)
□投稿者/ れい (720回)-(2008/07/27(Sun) 05:01:04)
ホワイトノイズをwavフォーマットで作成するコードのソースですね。


引用返信 編集キー/
■22590 / inTopicNo.3)  Re[2]: ソースを解読してください(><)
□投稿者/ やじゅ (499回)-(2008/07/28(Mon) 09:53:02)
やじゅ さんの Web サイト
こういう簡易的な質問方法は私は好まない、それは置いといて・・・

このソースのこの部分が分からないとか限定してくれたほうが
回答が得やすいですよ。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -