0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何創(chuàng)建基于DCO的音頻合成器

摩爾學(xué)堂 ? 來源:摩爾學(xué)堂 ? 2023-04-13 10:04 ? 次閱讀

在此項(xiàng)目中,學(xué)習(xí)使用 Arduino Nano 或 Arduino Uno 創(chuàng)建數(shù)控振蕩器或基于 DCO 的音頻合成器。

我喜歡音樂,也喜歡電子產(chǎn)品。多年來,我一直在制造音樂電子設(shè)備,主要是為我的電吉他演奏服務(wù)。在構(gòu)建和修改了幾個(gè)電子管放大器和效果踏板之后,我決定涉足音頻合成領(lǐng)域。我經(jīng)常夢(mèng)想創(chuàng)建自己的 Eurorack 合成器,一次一個(gè)模塊,但對(duì)于我的第一個(gè)合成器項(xiàng)目,我決定從一個(gè)獨(dú)立的鍵盤開始。我的成品——一個(gè)改裝過的玩具鍵盤。

在這個(gè)項(xiàng)目中,我移除了現(xiàn)有的電子設(shè)備,并用一個(gè)以Arduino Nano為核心的基于數(shù)控振蕩器 (DCO) 的音頻合成器取而代之。雖然我使用的是 Arduino Nano,但也可以使用Arduino Uno 。讓我們深入探討如何制作基于 DCO 的合成器。然而,在走得太遠(yuǎn)之前,讓我們先談?wù)勗诤铣善髦惺褂谜袷幤鳌?/p>

振蕩器:任何合成器的心臟

任何合成器的關(guān)鍵要素是其振蕩器電路。模擬合成器通常有兩個(gè)或多個(gè)獨(dú)立可控的振蕩器。但是,任何進(jìn)入過模擬壓控振蕩器 (VCO)原理圖的互聯(lián)網(wǎng)兔子洞的人都知道它們通常很復(fù)雜且雜亂無章。一些混亂來自可以優(yōu)雅地處理的功能,例如多個(gè)控制電壓輸入。然而,即使最簡單的振蕩器電路在原理圖中被隔離,剩下的部分仍然很復(fù)雜,因?yàn)闊岱答伡记墒拐袷幤髟谄浣M件預(yù)熱時(shí)保持調(diào)諧。

當(dāng)我考慮創(chuàng)建自己的合成器時(shí),VCO 電路的復(fù)雜性和混亂一直是我的絆腳石,即使我喜歡模擬合成器,我也無法克服它凌亂的電子軟肋。當(dāng)我欣賞Roland Juno 系列合成器時(shí),這一切都改變了。

Roland 的 Juno-6于 1982 年上市,作為當(dāng)時(shí)其他和弦合成器的更實(shí)惠的替代品。它也是第一個(gè)使用 DCO 代替?zhèn)鹘y(tǒng) VCO 的合成器。與替代品相比,這顯著提高了儀器的調(diào)諧穩(wěn)定性,因?yàn)?DCO 使用數(shù)字電路來控制振蕩器模擬信號(hào)的頻率??紤]到這一點(diǎn),使用 DCO 而不是 VCO 當(dāng)然需要權(quán)衡取舍。許多人喜歡兩個(gè)略微失諧的 VCO 齊聲演奏的“溫暖”聲音,這是很難用基于 DCO 的合成器模擬的。然而,調(diào)制效果可以應(yīng)用于 DCO 的干輸出信號(hào),以產(chǎn)生豐富、優(yōu)美的聲音。

總的來說,Arduino Uno 和 Nano 開發(fā)板的普遍性和低成本,再加上這些數(shù)字平臺(tái)預(yù)裝了 16 MHz晶體振蕩器,使得創(chuàng)建便宜的 DCO 變得異常容易。

使用微控制器定時(shí)器模塊創(chuàng)建 DCO

查看任何現(xiàn)代微控制器的數(shù)據(jù)表,您會(huì)在其外圍設(shè)備中找到定時(shí)器模塊。定時(shí)器模塊允許嵌入式設(shè)計(jì)人員在獨(dú)立于CPU(中央處理器)的嵌入式系統(tǒng)后臺(tái)設(shè)置運(yùn)行計(jì)數(shù)器。此外,定時(shí)器模塊可以在多種情況下中斷 CPU,例如當(dāng)它們溢出計(jì)數(shù)寄存器或達(dá)到特定計(jì)數(shù)時(shí)。嵌入式設(shè)計(jì)人員可以配置中斷條件以滿足其特定應(yīng)用的需要。

對(duì)于這個(gè)項(xiàng)目, ATMega328P的定時(shí)器模塊——Arduino Nano 和 Uno 的大腦——充當(dāng)合成器的 DCO。通過配置定時(shí)器模塊的時(shí)鐘源和最大計(jì)數(shù)值,可以實(shí)現(xiàn)音頻觸發(fā)定時(shí)器模塊中斷。DCO 輸出是通過在這些周期性中斷的中斷服務(wù)例程 (ISR) 期間操縱微控制器的 GPIO 引腳來實(shí)現(xiàn)的。

在接下來的部分中,我將討論這個(gè)項(xiàng)目背后的硬件和軟件設(shè)計(jì),然后展示這個(gè)自制合成器的一些音頻片段。

使用 Arduino Nano 的音頻合成器硬件

在深入了解該項(xiàng)目中涉及的不同硬件以及它們?nèi)绾螀f(xié)同工作之前,表 1 顯示了 BOM(物料清單)。

數(shù)量 成分
1個(gè) Arduino 納米 v3.x
4個(gè) 470 nF電容
1個(gè) 2.1 毫米筒式千斤頂
1個(gè) 1/4" 單聲道開關(guān)插孔
2個(gè) 4.7k電阻
3個(gè) 47k電阻
7 100k電阻
1個(gè) 100k電阻
2個(gè) 100k電位器
1個(gè) 1M電位器
23 SPDT微型瞬時(shí)開關(guān)
1個(gè) 開關(guān)式DC-DC 轉(zhuǎn)換器(5 V 輸出)
1個(gè) MicrochipMCP23017I/O 擴(kuò)展器
1個(gè) LF411運(yùn)算放大器(運(yùn)放)

接下來,讓我們看一下圖 2 的系統(tǒng)圖,它顯示了這個(gè)合成器的各個(gè)部分是如何組合在一起的。

a8c12b5e-d957-11ed-bfe3-dac502259ad0.png

圖 2.合成器的硬件系統(tǒng)圖。

鍵盤部分由一組 23 個(gè) SPDT 開關(guān)組成,每個(gè)開關(guān)一個(gè)。其中 16 個(gè)鍵被路由到 MCP23017 I/O 擴(kuò)展器,其余 7 個(gè)鍵直接路由到 Arduino Nano 上的 GPIO 輸入。MCP23017 然后通過I2C連接到 Arduino Nano 。

Arduino Nano 從這里開始處理來自鍵盤的輸入,并根據(jù)這些按鍵在 D11、D12 和 D10 上生成三個(gè)獨(dú)立的振蕩器輸出。Arduino Nano 上這些數(shù)字引腳的輸出被路由到加法放大器電路,其原理圖如圖 3 所示。

a8d4849c-d957-11ed-bfe3-dac502259ad0.jpg

圖 3.加法放大器電路原理圖 [點(diǎn)擊圖片放大]。

求和放大器包含三個(gè)電位器。它們獨(dú)立控制振蕩器 2 和 3 的音量以及樂器的主音量。放大器電路的輸出直接路由到 ?” 單聲道音頻插孔,可以輕松直接插入吉他放大器。

為了給這個(gè)樂器供電,我使用了一個(gè)標(biāo)準(zhǔn)的 2.1 毫米 9 V DC 吉他踏板桶形插孔。此外,來自該插孔的 +9 V 被路由到小型 DC-DC 開關(guān)電源轉(zhuǎn)換器以生成 5 V 電源連接。+5 V 電源為 MCP23017 供電。Arduino 由 +9 V 電源通過其 Vin 引腳供電。運(yùn)算放大器的 V+ 和 V- 由桶形插孔的 +9 V 和接地連接提供,5 V 電源用作運(yùn)算放大器的浮動(dòng)接地連接。

圖 4 顯示了該系統(tǒng)的所有部分如何連接的示意圖。

a8df42f6-d957-11ed-bfe3-dac502259ad0.jpg

圖 4.整個(gè)系統(tǒng)的示意圖 [點(diǎn)擊圖片放大]。

創(chuàng)建音頻合成器的軟件方面

該項(xiàng)目軟件的主要任務(wù)是解釋來自鍵盤按鈕的輸入并相應(yīng)地操作定時(shí)器模塊寄存器(有關(guān)代碼,請(qǐng)參見此處的 Arduino 草圖 PDF)。在草圖中的 setup() 函數(shù)之前,聲明了幾個(gè)全局變量,包括兩個(gè)大型二維數(shù)組的定時(shí)器模塊寄存器值對(duì)應(yīng)于音符。setup() 函數(shù)的過程遵循圖 5 的流程圖,其中僅涉及:

設(shè)置 GPIO 輸入和輸出

啟動(dòng) I2C 通信

初始化三個(gè)定時(shí)器模塊

啟用中斷

選擇定時(shí)器 B 模塊的時(shí)鐘源作為定時(shí)器 A 的時(shí)鐘

啟用全局中斷

a8ebfcee-d957-11ed-bfe3-dac502259ad0.jpg

圖 5.該儀器的 Arduino 草圖的 setup() 函數(shù)流程圖。

圖 6 顯示了表示 Arduino 草圖的 loop() 函數(shù)的流程圖。

a8f993f4-d957-11ed-bfe3-dac502259ad0.jpg

圖 6.該儀器的 Arduino 草圖的 loop() 函數(shù)流程圖 [單擊圖像放大]。

循環(huán)函數(shù)執(zhí)行三個(gè)主要任務(wù):

檢測(cè)鍵盤上按下的鍵

根據(jù)特定鍵的音符設(shè)置定時(shí)器模塊參數(shù)

設(shè)置門變量以允許將振蕩器信號(hào)轉(zhuǎn)發(fā)到它們各自的 GPIO 引腳

循環(huán)函數(shù)一次評(píng)估連接到鍵盤的每個(gè) I/O 端口,直到檢測(cè)到按下的按鈕。端口的評(píng)估順序是鍵盤上從最低音符到最高音符,這意味著較低的音符實(shí)際上具有較高的優(yōu)先級(jí)。當(dāng)我考慮使用 GPIO 和 I2C 中斷來處理鍵盤按鈕按下時(shí),我最終使用了連續(xù)輪詢方法,并且我沒有注意到任何不利的性能結(jié)果。

最后,圖 7 表示 ATMega328P 中三個(gè)定時(shí)器模塊中每一個(gè)的中斷服務(wù)例程。

a9047f94-d957-11ed-bfe3-dac502259ad0.jpg

圖 7.Arduino Nano 的 ATMega328P 定時(shí)器模塊的中斷服務(wù)例程流程圖。

如果設(shè)置了門變量,這些 ISR 中的每一個(gè)都會(huì)切換其輸出引腳值。這種切換是為每個(gè)振蕩器生成音頻輸出的原因。

產(chǎn)生的聲音樣本和潛在的改進(jìn)

您可以在下面找到該項(xiàng)目的兩個(gè)音頻樣本。請(qǐng)務(wù)必單擊播放按鈕圖像進(jìn)行播放 - 請(qǐng)注意,音頻將在單獨(dú)的窗口中打開并播放。

聲音剪輯 1.音頻合成器演示。

正如您從第一個(gè)音頻樣本中聽到的那樣,該合成器產(chǎn)生了一種漂亮的斯巴達(dá)式低保真聲音。該樣本首先演示了根音振蕩器,然后是根音和八度向下振蕩器,最后是根音、向下八度和 7 個(gè)半音向上振蕩器。

聲音剪輯 2。帶有效果器和鼓的音頻合成器演示。

第二個(gè)示例通過一些延遲和相位效果展示了合成器,并覆蓋了多個(gè)軌道。所有旋律聲音都來自 Arduino 合成器,但鼓聲來自 Roland 808 風(fēng)格的鼓機(jī) vst 插件。

總而言之,我對(duì)這個(gè)項(xiàng)目的結(jié)果感到非常興奮,但我確實(shí)認(rèn)為這個(gè)基于 Arduino 的合成器可以實(shí)現(xiàn)許多潛在的改進(jìn)。例如,我想為這個(gè) Arduino 合成器實(shí)現(xiàn)一個(gè) USB midi 接口。我還想使用這些方法創(chuàng)建一個(gè)可擴(kuò)展的復(fù)音合成器。然而,就目前而言,這個(gè)項(xiàng)目的玩具屋已經(jīng)變成了一種有趣、適合舞臺(tái)的低保真樂器,具有非常堅(jiān)韌的低音。

從基礎(chǔ)到高級(jí)的ADC講座,將涵蓋高速ADC設(shè)計(jì)的原理、傳統(tǒng)架構(gòu)和最先進(jìn)的設(shè)計(jì)。第一部分首先回顧了ADC的基本知識(shí),包括采樣、開關(guān)電容和量化理論。接下來,介紹了經(jīng)典ADC架構(gòu)的基礎(chǔ)和設(shè)計(jì)實(shí)例,如閃存、SAR和流水線ADC。然后,本教程將對(duì)混合型ADC架構(gòu)進(jìn)行總體概述,這就結(jié)束了第一部分。在第二部分,首先描述了ADC的度量。然后,介紹混合或非混合架構(gòu)的各種先進(jìn)設(shè)計(jì)。該教程最后將以數(shù)字輔助解決技術(shù)結(jié)束。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7840

    瀏覽量

    153305
  • 振蕩器
    +關(guān)注

    關(guān)注

    28

    文章

    3946

    瀏覽量

    140174
  • 合成器
    +關(guān)注

    關(guān)注

    0

    文章

    280

    瀏覽量

    25921
  • 音頻
    +關(guān)注

    關(guān)注

    29

    文章

    2995

    瀏覽量

    82785
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6485

    瀏覽量

    189631

原文標(biāo)題:如何創(chuàng)建基于DCO的音頻合成器

文章出處:【微信號(hào):moorexuetang,微信公眾號(hào):摩爾學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用 Arduino Nano 創(chuàng)建基于 DCO音頻合成器

    在這個(gè)項(xiàng)目中,學(xué)習(xí)使用Arduino Nano或Arduino Uno創(chuàng)建數(shù)字控制振蕩器或基于DCO音頻合成器。 我喜歡音樂,我也喜歡電子。 多年來,我一直在制造音樂電子設(shè)備,主要是
    的頭像 發(fā)表于 05-03 16:03 ?2142次閱讀
    使用 Arduino Nano <b class='flag-5'>創(chuàng)建</b>基于 <b class='flag-5'>DCO</b> 的<b class='flag-5'>音頻</b><b class='flag-5'>合成器</b>

    敏捷合成器的技術(shù)原理和應(yīng)用場(chǎng)景

    敏捷合成器,作為一種高性能的信號(hào)發(fā)生器,其技術(shù)原理和應(yīng)用場(chǎng)景值得深入探討。技術(shù)原理敏捷合成器的技術(shù)原理主要基于先進(jìn)的頻率合成技術(shù)和數(shù)字信號(hào)處理技術(shù)。它通常具有寬頻率范圍、快速建立和可編程的相位、頻率
    發(fā)表于 02-20 15:25

    合成器

    1、使用反饋有一種設(shè)備與振蕩器有關(guān),.稱為合成器。在一些情況下,從普通振蕩器出來的正弦波不夠完美。射頻工程師發(fā)現(xiàn)如果振蕩器與其它電路結(jié)合起來,利用反饋,可以使正弦波更完美,這就適合成器的功能:一個(gè)振
    發(fā)表于 12-06 14:06

    基于DDS的頻率合成器設(shè)計(jì)介紹

    直接數(shù)字頻率合成(DDS)在過去十年受到了頻率合成器設(shè)計(jì)工程師極大的歡迎,它被認(rèn)為是一種具有低相位噪聲和優(yōu)良雜散性能的靈活的頻率源,基于DDS的頻率合成器在許多應(yīng)用中能比基于鎖相環(huán)(PLL)頻率
    發(fā)表于 07-08 07:26

    如何利用FPGA設(shè)計(jì)PLL頻率合成器?

    電子技術(shù)應(yīng)用頻率合成技術(shù)是現(xiàn)代通信的重要組成部分,它是將一個(gè)高穩(wěn)定度和高準(zhǔn)確度的基準(zhǔn)頻率經(jīng)過四則運(yùn)算,產(chǎn)生同樣穩(wěn)定度和準(zhǔn)確度的任意頻率。頻率合成器是電子系統(tǒng)的心臟,是影響電子系統(tǒng)性能的關(guān)鍵因素之一
    發(fā)表于 07-30 07:55

    什么是頻率合成器

      頻率合成器是利用一個(gè)或多個(gè)基準(zhǔn)頻率,通過各種技術(shù)途徑產(chǎn)生一系列的離散頻率信號(hào)的設(shè)備。這些頻率的穩(wěn)定度和精度均和基準(zhǔn)頻率相同,而且頻率的轉(zhuǎn)換時(shí)間很短,這樣才會(huì)有效率和實(shí)用價(jià)值?! ☆l率合成器的實(shí)現(xiàn)
    發(fā)表于 08-19 19:18

    鎖相環(huán)頻率合成器是什么原理?

    頻率合成器的主要性能指標(biāo)鎖相環(huán)頻率合成器原理鎖相環(huán)頻率合成器捕捉過程的分析與仿真
    發(fā)表于 04-22 06:27

    頻率合成器,頻率合成器原理及作用是什么?

    頻率合成器,頻率合成器原理及作用是什么? 所謂的頻率合成器,就是以一個(gè)精確度、穩(wěn)定度極好的石英晶體振蕩器作為基準(zhǔn)頻率,并利用加、減
    發(fā)表于 03-23 11:04 ?1.5w次閱讀

    什么是直接式頻率合成器(DS)

    什么是直接式頻率合成器(DS) 頻率合成的歷史 頻率合成器被人們喻為眾多電子系統(tǒng)的“心臟”。現(xiàn)代戰(zhàn)
    發(fā)表于 03-23 11:23 ?1816次閱讀

    間接式頻率合成器(IS)的定義和原理是什么?

    間接式頻率合成器(IS)的定義和原理是什么? 頻率合成的歷史 頻率合成器被人們喻為眾多電子系統(tǒng)的“心臟”?,F(xiàn)代戰(zhàn)爭是
    發(fā)表于 03-23 11:31 ?2488次閱讀

    單環(huán)鎖相頻率合成器,單環(huán)鎖相頻率合成器是什么意思

    單環(huán)鎖相頻率合成器,單環(huán)鎖相頻率合成器是什么意思 頻率合成的歷史 頻率合成器被人們喻為眾多電子系統(tǒng)的“心臟”?,F(xiàn)代戰(zhàn)爭是
    發(fā)表于 03-23 11:36 ?1139次閱讀

    集成鎖相環(huán)頻率合成器,什么是集成鎖相環(huán)頻率合成器

    集成鎖相環(huán)頻率合成器,什么是集成鎖相環(huán)頻率合成器 頻率合成的歷史 頻率合成器被人們喻為眾多電子系統(tǒng)
    發(fā)表于 03-23 11:45 ?859次閱讀

    基于Arduino的頻率合成器

    方案介紹該項(xiàng)目的主要目標(biāo)是創(chuàng)建一個(gè)代碼,允許無線電愛好者從菜單配置合成器,而無需為特定任務(wù)對(duì)其進(jìn)行編程。合成器也可用于帶頻段切換的自制收發(fā)器。
    發(fā)表于 12-26 15:09 ?2次下載

    pll頻率合成器工作原理與pll頻率合成器的原理圖解釋

    pll頻率合成器工作原理與pll頻率合成器的原理圖解釋 我們要搞清楚pll頻率合成器工作原理與pll頻率合成器的原理圖就要先搞清楚pll和頻率合成器
    的頭像 發(fā)表于 02-24 18:19 ?1w次閱讀
    pll頻率<b class='flag-5'>合成器</b>工作原理與pll頻率<b class='flag-5'>合成器</b>的原理圖解釋

    如何制作一個(gè)音頻合成器?

    合成器電路是能夠使用電子設(shè)備產(chǎn)生音頻信號(hào)的電路?,F(xiàn)代合成器現(xiàn)在非常流行,因?yàn)樗峁┝酥谱鲀?yōu)質(zhì)音樂的便利性。您可能已經(jīng)看到一些類似的合成器電路,例如電子鋼琴,MIDI發(fā)生器等。該電路可以
    的頭像 發(fā)表于 05-13 11:29 ?2391次閱讀
    如何制作一個(gè)<b class='flag-5'>音頻</b><b class='flag-5'>合成器</b>?

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品