題:
我如何聽到數學函數的聲音?
Matt D
2016-03-31 06:02:23 UTC
view on stackexchange narkive permalink

我現在正在從事微分方程的家庭作業,我剛剛遇到了以下形式的問題的解決方案:

enter image description here

我用計算機繪製了該函數的圖形,並且它有一個有趣的波形,我想听聽。有辦法嗎?

[頻率太低而無法聽到](https://www.wolframalpha.com/input/?i=play+(16%2F15)cos(0.5t)-(1%2F15)cos(2t))。
您可以嘗試將頻率加倍一兩次或三倍,然後對其進行傅立葉分析以獲得其頻譜,然後使用加法合成器重新創建它。我感覺好像在某個地方,必須有一個合成器,可以接受一個波形方程,但是我不確定。我想知道您是否會在軟件建議棧交換中得到一個好的答案。
您無需進行傅立葉分析-它是餘弦的線性組合。等式中的位置處的傅立葉係數為“ 16/15”和“ -1/15”,其他所有係數均為零。您可以在任何其他合成器中重新創建此文件,例如ZynAddSubFX,或Ableton中的運算符。它聽起來像正弦波,具有安靜的二倍頻程諧波。
您可以將“任何”值向量饋送到各種類似DAC的工具,這些工具會將數據轉換為音頻輸出。人們用pi位數完成了此操作,其中包括一些古怪的事情。
@naught101感謝您的寶貴見解!您是否願意闡述自己如何知道第二個八度音階諧波更柔和?它是-1/15項嗎?還是與.5t和2t有關
@sova:是的,`cos`之外的數字基本上是縮放因子。括號內的數字定義頻率。嘗試將`* cos(b * x)`(用實數替換`a`和`b`)放入https://www.desmos.com/calculator,並弄亂a和b的值。您將快速了解這兩個係數如何影響繪圖。然後嘗試類似`cos(x)+ cos(2 * x)`之類的東西來查看加法的工作原理。
五 答案:
topo Reinstate Monica
2016-03-31 12:50:58 UTC
view on stackexchange narkive permalink

正如naught101所說,這裡的特殊情況是正弦波,具有安靜的三次諧波。要以可聽的頻率聽到這聽起來像什麼,請在支持Web Audio API(例如Firefox或Chrome)的瀏覽器中轉到 http://meettechniek.info/additional/additive-synthesis.html。 ,打開音頻,並將其設置為:

enter image description here

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以秒為單位)。 混疊時要注意的一件事-為避免這種情況,您需要以至少兩倍於該函數生成的波形的任何頻率分量的值的速率進行採樣。

leftaroundabout
2016-03-31 23:47:44 UTC
view on stackexchange narkive permalink

您不需要任何特定的音頻軟件即可生成可聽波形。這是一個簡單的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)中,該功能應立即可用。

也許是“雙音高= 440; double angularVelocity = pitch * 2 * 3.14159`?
是的,但是這裡的物理單位還是有些混亂。如果_t_是時間,則考慮cos(2⋅_t_)並沒有任何意義。
在編寫自己的軟件時,您不需要任何特定的音頻軟件。
José David
2016-04-08 15:02:53 UTC
view on stackexchange narkive permalink

該問題假定所涉及的波形直接可被人聽到。如果真是這樣,那麼編程方式的另一種方法是使用加法合成器來合成波形。對於那些進入計算機音樂/ DAW領域的人,有許多免費的VST合成器執行加法合成,我記得至少有一個(必須在我的備份檔案中尋找它)可以直接從數學函數生成波形

。但是,呈現的功能不是人類可以聽到的。它是2個正弦波頻率的組合:

  • f1 = 0.5 /(2 * Pi)=〜0.32 Hz
  • f2 = 2 /(2 * Pi)= 〜3,14 Hz

人類的聽力始於20Hz左右,因此無法直觀聽到所提供的功能。為了對功能進行聲音渲染,我們將必須應用某種“聲化”過程,即對功能進行某種變換,以使其進入人類可聽到的音頻範圍。在這種情況下,簡單的倍頻,例如乘以100,就可以解決問題,並允許應用先前答案中指出的方法。但是,有很多非常有趣的技術可以用來“共鳴”任何樣本數據。

通過搜索“ sonification”可以找到大量信息,但是對於那些還沒有起點的感興趣的人,我建議嘗試從以下位置免費在線獲取 Earsketch環境佐治亞理工大學。它是一個基於Python語法的完整的交互式音樂編程環境,因此,如果您已經熟悉Python會有所幫助,但是Python還是一種易於學習的語言。它完全在線,您無需安裝任何軟件。

Earsketch在線教程的特定章節討論了聲化。

這是一個數據分類共享Earsketch示例項目(在這種情況下,是天氣數據)。只需替換您自己的數據就很容易。

OP不包含任何物理單位。它也可能是_f₁_=(0.5 min¹)/2π≈0.0013 Hz,甚至進一步進入亞音速。或者,更明智地,可以將其理解為是指“任意時間標度”,即基本頻率是任意的。
thrig
2016-03-31 19:29:57 UTC
view on stackexchange narkive permalink
可以將等式輸入到 SuperCollider。另一種選擇是“圍柵”方程式並將這些點處的方程式值轉換為音高(可能還需要一個持續時間,可能基於該點的斜率,等等),儘管這需要一定程度的麻煩。適當地縮放柵欄(x值是什麼)並輸出(y值)以適合合適的環境:
 %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- 

enter image description here

Illia Koshovyi
2020-04-09 05:20:11 UTC
view on stackexchange narkive permalink

為此,我們需要4年的時間,我們做到了。我們以440 frq創建樣本。
f(x)= 16/15 cos(1 / 2x)-1/15 cos(2x)享受聆聽 https://drive.google.com/file/d / 1BPtJyHHpR3jCnHHlDAtylO6IpPDHsPb7 / view?usp = sharing enter image description here



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...