以下はwav形式のサウンドファイルをC言語で開くプログラムです
時間とデータを出力します.
リニアPCM形式16ビットのモノラルデータに対応しています.
//wav形式データを読み込むプログラム
//リニアPCM形式のデータなら先頭の44バイトがヘッダである
//16ビットモノラルデータに対応
//時間とデータを出力する
//ヘッダは下位データから並ぶ正数
//波形データは下位データから並ぶ符号付整数
//0Xは16進数,0Bは2進数
#include <stdio.h>
main(){
int i,a,b,rate;
FILE *fin=fopen("test.wav","rb");
for(i=0;i<20; i++)b=fgetc(fin);//RIFF to "fmt ""byte"
for(i=0;i<2; i++)b=fgetc(fin);//format ID
b=fgetc(fin);
b+=fgetc(fin)*0X100;
printf("ch=%d\n",b);
b=fgetc(fin);
b+=fgetc(fin)*0X100;
b+=fgetc(fin)*0X10000;
b+=fgetc(fin)*0X1000000;
printf("rate=%d\n",b);
rate=b;//サンプリングレート(sample/s)
b=fgetc(fin);
b+=fgetc(fin)*0X100;
b+=fgetc(fin)*0X10000;
b+=fgetc(fin)*0X1000000;
printf("Byte/sec=%d\n",b);
for(i=0;i<2; i++)b=fgetc(fin);//Block size
//bit/sample
b=fgetc(fin);
b+=fgetc(fin)*0X100;
if(b!=16){printf("data is not 16bit"); return 0;}
for(i=0;i<4; i++)b=fgetc(fin);//data
b=fgetc(fin);
b+=fgetc(fin)*0X100;
b+=fgetc(fin)*0X10000;
b+=fgetc(fin)*0X1000000;
printf("total data=%d\n",b);
for(i=0;i<1000;i++){
a=fgetc(fin);//下位バイト
b=fgetc(fin);//上位バイト
a+=(b%0X80)*0X100;
if(b&gt;=0X80)a-=0X8000;
printf("%f\t%d\n",(float)i/rate,a);
}
fclose(fin);
}
ATMELのAT-Tiny26,ATmega,R8Cなどのワンチップマイコン,C言語,JAVAなどのプログラミング言語の入門のためのページです.サンプルプログラムを中心に紹介します.他にもLinixや数学ソフトなどの紹介も行います.
このブログを検索
内容
Visual C++ Express Editionを用いたプログラミングメモ
Windows版 Mathematicaの使い方
MATLABとOctaveを使う
Fedora,Vine,Debian,KnoppixでLinux一本勝負?
CygwinやMinGWでCプログラミングを行う
C言語のプログラミング入門
R8Cで液晶SC1602BSの表示を行う
マイコンと2進数
R8CTinyマイコンの最初の一歩(Cプログラミング)
R8C/TinyシリーズのリセットとIDコードチェック機能
R8CTinyでCOMポートの通信実験
CT-208でR8CTinyの実行(アセンブラ)
R8C/Tiny29(サンハヤトのMB-8C29)の評価
サウンドファイルwavを開く
よく使うATMELのマイコンのアセンブラの比較
ATMELのATTiny26入門
Tiny26で液晶SC1602BSの表示を行う
AD変換の結果を液晶に表示する
マイコンによる電子オルゴール
Tiny2313でパルスの分周とカウンタ
Tiny2313でシリアル通信とROMリーダ
Tiny2313でGPSデータを液晶に表示
加速度センサを使う
マイコンでI2C-EEPROMの読み書きを行う
TINY13,TINY25,2313などの8ピンマイコンを使う
PSOCマイコンスタートアップ
AF,FMラジオ
Windows版 Mathematicaの使い方
MATLABとOctaveを使う
Fedora,Vine,Debian,KnoppixでLinux一本勝負?
CygwinやMinGWでCプログラミングを行う
C言語のプログラミング入門
R8Cで液晶SC1602BSの表示を行う
マイコンと2進数
R8CTinyマイコンの最初の一歩(Cプログラミング)
R8C/TinyシリーズのリセットとIDコードチェック機能
R8CTinyでCOMポートの通信実験
CT-208でR8CTinyの実行(アセンブラ)
R8C/Tiny29(サンハヤトのMB-8C29)の評価
サウンドファイルwavを開く
よく使うATMELのマイコンのアセンブラの比較
ATMELのATTiny26入門
Tiny26で液晶SC1602BSの表示を行う
AD変換の結果を液晶に表示する
マイコンによる電子オルゴール
Tiny2313でパルスの分周とカウンタ
Tiny2313でシリアル通信とROMリーダ
Tiny2313でGPSデータを液晶に表示
加速度センサを使う
マイコンでI2C-EEPROMの読み書きを行う
TINY13,TINY25,2313などの8ピンマイコンを使う
PSOCマイコンスタートアップ
AF,FMラジオ