2010-10-14 82 views
3

我有一個double數組(大於60k條目),我有頻率值。現在我想用C/C++來創建一個聲音,我可以在揚聲器上播放它。我的操作系統是Linux。如何從雙數組中創建聲音並在揚聲器上播放它

謝謝。我希望我很清楚。

+0

我假設'double'值只是振幅,而不是一些壓縮(類似MP3的)表示? – MSalters 2010-10-15 08:40:18

+0

是的,這是對的! – Dilawar 2010-10-16 07:42:16

回答

1

Qt庫可能是矯枉過正你想要做什麼,有可能是更容易的選擇,但它選項:)

您應該能夠使用QAudioOutput類做你想做什麼。

1

另外兩個API是SDL和SFML。

2

以下信息來自Debian中提供的名爲beep的命令行程序。源代碼可通過存儲庫獲取,也可從here獲取。

有一個ioctl()呼叫與控制檯設備的KIOCSOUND請求,您可以用來播放通過PC揚聲器的聲音。該片段是:

ioctl(fd, KIOCSOUND, CLOCK_TICK_RATE/(int)frequency); 

播放聲音頻率frequency,並且:

ioctl(fd, KIOCSOUND, 0); 

停止蜂鳴聲。 fd是一個文件描述符,其寫入權限爲/dev/consolefrequency是聲音頻率,單位爲赫茲。常數CLOCK_TICK_RATE與用於創建蜂鳴聲的定時器芯片有關,並且在beep源代碼中的值爲1193180(赫茲)。雖然這對您的系統可能會有所不同,但如果我的想法是正確的,我記得在使用PC揚聲器的舊DOS程序中看到了相同的常量。

相關問題