我現在正在從事微分方程的家庭作業,我剛剛遇到了以下形式的問題的解決方案:
我用計算機繪製了該函數的圖形,並且它有一個有趣的波形,我想听聽。有辦法嗎?
我現在正在從事微分方程的家庭作業,我剛剛遇到了以下形式的問題的解決方案:
我用計算機繪製了該函數的圖形,並且它有一個有趣的波形,我想听聽。有辦法嗎?
正如naught101所說,這裡的特殊情況是正弦波,具有安靜的三次諧波。要以可聽的頻率聽到這聽起來像什麼,請在支持Web Audio API(例如Firefox或Chrome)的瀏覽器中轉到 http://meettechniek.info/additional/additive-synthesis.html。 ,打開音頻,並將其設置為:
H1,那裡代表您的(16/15)cos( ½t)
,儘管此在線合成器的默認頻率為440,但我們已將其有效縮放為cos(440×2π×t),並且(16/15)剛剛被歸一化為'1.000' 。 H3代表-(1/15)cos(2t)
位,並再次按比例增加頻率-理想情況下,音量應為0.0625,即基本音量(H1)的1/16,但是0.065足夠接近。
您可能根本找不到聽起來很有趣!實際上,所有嚴格週期性且無變化的波形聽起來似乎很無聊(至少對我而言)-它們全都是靜態的嗡嗡聲或嗡嗡聲。通常,波形形狀隨時間的變化使它聽起來很有趣。
由於該特定方程式的性質,很容易在加法合成器中再現其輸出。在更一般的情況下,一種聽到方程式的方法是對進行採樣-為某些“ t”值(在諸如44.1 kHz的特定採樣率下)生成“ y”每秒生成44100個樣本)-並播放y值列表作為PCM數字音頻數據。
例如,我使用的一個音頻編輯器是(相當古老的)Adobe Audition 1.5,可以加載到文本文件中,將每一行解釋為樣本值,然後像WAV或任何其他音頻文件一樣播放結果波形。為此,它希望將y值縮放為適合8位或16位數據的範圍(例如,對於16位,在−32,768到32,767之間),並四捨五入到最接近的整數,因此文本文件看起來像(例如)
391745875387464530241911791-632-1901
-2554-2124-1234
您可以在 https://softwarerecs.stackexchange.com/上詢問是否有任何更新/免費的音頻編輯器可以像這樣導入文本樣本數據。
如果您完全可以進行任何編碼,那麼找到一個可以一次編寫音頻文件(例如Python語言具有“ wave”模塊)的庫應該相當容易。您已經生成了一個採樣值列表,因此您可以輕鬆地從程序中以通用格式編寫音頻文件。
這種採樣很可能是Dom出色的Wolframalpha建議在內部執行的操作,儘管我無法在瀏覽器中使用它!為了使方程式進入可聽範圍,您可以對其進行縮放-例如使用(16/15)cos(250 *2π* t)-(1/15)cos(1000×2π×t)將給您一個基頻為250Hz的波(假設t以秒為單位)。 混疊時要注意的一件事-為避免這種情況,您需要以至少兩倍於該函數生成的波形的任何頻率分量的值的速率進行採樣。
您不需要任何特定的音頻軟件即可生成可聽波形。這是一個簡單的C程序,它將在標準輸出上生成所需的數據:
#include <stdint.h>#include <stdio.h>#include <math.h>#include { cos(t / 2)-cos(t * 2))/ 15;}雙音高= 440 * 2 * 3.14159; //因此基本音高將為標準A noteint main(){int16_t v; char * p =(char *)(&v); //標準輸出double t = 0的“緩衝區”;而(t + = 1. / 44100){v =(int16_t)(y(t * pitch)*(2<<12)); putchar(p [0]); putchar(p [1]); //免責聲明:這不是很好的編程putchar(p [0]); putchar(p [1]); //樣式,只是快速破解輸出數據}返回0;}
保存 signal.c
,然後執行
gcc signal.c -lm && ./a.out | aplay -f cd
在正常的Linux安裝(例如Ubuntu)中,該功能應立即可用。
該問題假定所涉及的波形直接可被人聽到。如果真是這樣,那麼編程方式的另一種方法是使用加法合成器來合成波形。對於那些進入計算機音樂/ DAW領域的人,有許多免費的VST合成器執行加法合成,我記得至少有一個(必須在我的備份檔案中尋找它)可以直接從數學函數生成波形
。但是,呈現的功能不是人類可以聽到的。它是2個正弦波頻率的組合:
人類的聽力始於20Hz左右,因此無法直觀聽到所提供的功能。為了對功能進行聲音渲染,我們將必須應用某種“聲化”過程,即對功能進行某種變換,以使其進入人類可聽到的音頻範圍。在這種情況下,簡單的倍頻,例如乘以100,就可以解決問題,並允許應用先前答案中指出的方法。但是,有很多非常有趣的技術可以用來“共鳴”任何樣本數據。
通過搜索“ sonification”可以找到大量信息,但是對於那些還沒有起點的感興趣的人,我建議嘗試從以下位置免費在線獲取 Earsketch環境佐治亞理工大學。它是一個基於Python語法的完整的交互式音樂編程環境,因此,如果您已經熟悉Python會有所幫助,但是Python還是一種易於學習的語言。它完全在線,您無需安裝任何軟件。
Earsketch在線教程的特定章節討論了聲化。
這是一個數據分類共享Earsketch示例項目(在這種情況下,是天氣數據)。只需替換您自己的數據就很容易。
%perl -e',用於$ x(0..10){ printf“%d \ n”,60 + 10 *(16/15 * cos(.5 * $ x)-1/15 * cos(2 *%x))}'7068656054504849525762%perl -e'為$ x( 0..100){printf“%d \ n”,60 + 10 *(16/15 * cos(.5 * $ x)-1/15 * cos(2 *%x))}'| | | | atonal-util pitch2ly --mode = absolute | ly-fu --instrument = orchestral \豎琴--open --absolute-
為此,我們需要4年的時間,我們做到了。我們以440 frq創建樣本。
f(x)= 16/15 cos(1 / 2x)-1/15 cos(2x)享受聆聽 https://drive.google.com/file/d / 1BPtJyHHpR3jCnHHlDAtylO6IpPDHsPb7 / view?usp = sharing