掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
音声ファイルを出力するには? (ID:53986)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
前に投稿させていただいた者です。何度もすみません。 Cで.au形式の簡単な音声ファイルを作るプログラムなのですが、 出力されたauファイルが開けません。 原因としては、このプログラムはbig endianのもので、 私のPCはlittle endianなので、開けないようです。 どなたか、big endianからlittle endianの変換の仕方を教えていただけないでしょうか? ちなみにbig endianのプログラムです↓ #define MAXDATA 40000 #include <stdio.h> #include <math.h> typedef struct { int magic; int dataLocation; int dataSize; int dataFormat; int samplingRate; int channelCount; char info[4]; } SNDSoundStruct; main(int argc, char *argv[]) { SNDSoundStruct hdr; FILE *fp; int frequency = 800; double step; int i; char x; if(argc != 2) { fprintf(stderr, "Usage: mysound <frequency>\n"); exit(-1); } if (((frequency = atoi(argv[1])) <= 0) || (frequency > 4000)) { fprintf(stderr, "frequency should be between 0 to 4000 Hz\n"); exit(-1); } fp = fopen("myfiling.au", "w"); strcpy((char *)(&hdr.magic), "dns."); hdr.dataLocation = sizeof(hdr); hdr.dataSize = MAXDATA; hdr.dataFormat = 2; hdr.samplingRate = 8000; hdr.channelCount = 1; fwrite(&hdr, sizeof(hdr), 1, fp); for(i=0; i<MAXDATA; i++) { x = (char)(128.0 + 128.0 * sin(3.14 * 2 * frequency * i)); fwrite(&x, 1, 1, fp); } fclose(fp); }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.