Linuxで音声出力を試みています。
任意のRAWデータをaplayコマンドで音声出力させたいです。
以下の記述で、systemコマンドで音声を出力する事はできました。
#include <stdio.h> #include <stdlib.h> #include <math.h> #define DATASIZE 10000 int main(){ double smp_freq = 16000; double freq = 880; double sec; FILE *fp; fp = fopen("waveRAW.raw","w"); char waveData[DATASIZE]; sec = 1/smp_freq; for(int i=0;i<DATASIZE;i++){ waveData[i] = 100 * sin(2*3.14159*freq*sec*i) + 100; fputc(waveData[i],fp); } char *waveOut = "aplay -traw waveRAW.raw"; system(waveOut); }
が、Linuxのプログラム本を読むとsystemはシェルを立ち上げるので遅いよという記載があり、
execlで記述しようと試みましたがうまくいきません。
以下を削除し
char *waveOut = "aplay waveRAW.raw"; system(waveOut);
以下を追記しました。
execl("aplay", "aplay", "waveRAW.raw",NULL);
恐らくexeclについて理解が不足しているのだと思いますが、
コメント頂ければ幸いです。
回答1件
あなたの回答
tips
プレビュー