電子發(fā)燒友App

硬聲App

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>Arduino:連續(xù)MIDI控制器/鍵盤

Arduino:連續(xù)MIDI控制器/鍵盤

2023-06-27 | zip | 0.00 MB | 次下載 | 免費

資料介紹

1:背景

?
?
?
pYYBAGOImh6AWYIaAABrrOSlpLI815.png
?
1 / 2
?

演奏連續(xù)音符是印度斯坦音樂不可分割的一部分。演奏這種類型的音符需要有多種表達方式。有像小提琴、西塔琴或長笛這樣的樂器可以做到這一點。典型的鍵盤只能彈奏離散的音符,而在高端鍵盤中,提供了一個彎音輪,可以將音符在正側或負側彎曲到典型的 2 個半音(此值是可調的,但將其設置得非常高可能會很困難準確地使用它)。這不是一種非常直觀的音樂播放方式。市場上有各種鍵盤,如 Haken Continuum Board、ROLI seaboard。這些是一種功能強大的儀器,可以很好地完成這項工作。您可以在相應儀器的網(wǎng)站上找到更多詳細信息。

受上述儀器的啟發(fā),我之前嘗試過制作一個簡單的基于 Arduino 的觸摸鍵盤。更多細節(jié)可以在instructable of the same中找到。該項目使用了大約 14 個板(低精度)和使用 Arduino 音調庫產生的聲音。由于它的聲音只是一個方波,所以聽起來一點也不悅耳。

這些是從我以前的項目中學到的,我試圖在這里改進。

  • Tone library 的聲音生成太差了,所以我在這里使用了 MIDI 按摩質量可以提高,
  • 由于尺寸較大,板數(shù)較少,板的定位精度太低。在這里,我?guī)缀鯇⒏袘宓臄?shù)量增加了兩倍,并將其寬度減半。
  • 舊項目也沒有使用壓力數(shù)據(jù),因為音調庫無法調制音量。使用 MIDI 為所有這些可能性打開了大門。
  • 電容感應不是一種非??煽康姆椒?。它可能會因接地、木板吸收的濕氣,甚至是您在玩耍時穿的鞋子而受到影響。在這里,我們需要解決這個問題,因為其他方法既復雜又/或昂貴。

2:概念

?
?
?
poYBAGOJSHeAYz16AABi0NQP-yQ314.jpg
?
1 / 3
?

整體工作流程如下:

傳感:

我發(fā)現(xiàn)了兩種可行的方法。一種是基于霍爾效應傳感器(用于 Haken Continuum 板),它非常準確但相對復雜。這需要一些精確的機制來獲得準確的輸出。但是,如上一節(jié)(步驟)所述,我發(fā)現(xiàn)非常方便的方法是利用電容感應。如果我們去電容感應,我們不需要任何傳感器組件,我們可以簡單地將金屬板連接到任何 Arduino 引腳上,它就變成了電容傳感器。還有一個可用于電容感應的庫可以直接使用的。有關此庫工作的更多詳細信息,請參見上述鏈接。總之,此方法檢查金屬板通過電阻器從 0V 充電到 5V 所需的時間。該時間值代表電容。我們獲得的另一個優(yōu)勢是我們還可以通過使用數(shù)據(jù)來測量壓力。我們按得越用力,手指與板接觸的面積就越大,電容就會增加。所以這就是我們不會只有接近感應的方式,但我們會得到一些關于我們按壓力度的數(shù)字。

處理數(shù)據(jù):

Arduino 捕獲并處理數(shù)據(jù)。它根據(jù)預設值計算觸摸位置、壓力值。它還將所需的平滑應用于所有這些值。MIDI 消息只不過是我們需要編寫的串行消息。Arduino 基本上控制四個信號。首先是打開和關閉任何音符。另外兩個信號彎音和壓力值在任何音符打開時連續(xù)計算和傳輸。

聲音生成:

來自 Arduino 的傳輸數(shù)據(jù)在 FL Studio 中用于生成所需的聲音。它需要各種軟件來插入 FL studio 中的 MIDI 信號。

3:準備硬件

?
?
?
poYBAGOJSHqAeLPtAADSDyUZKn8126.jpg
?
1 / 4
?

制作過程可以直接復制我之前的項目。詳細信息可在我的舊教程中找到:https://www.instructables.com/DIY-Arduino-Based-Co ...。

?

但是,在制作時需要考慮一些更改。板的寬度減少到 6 毫米(相對于之前的 12 毫米)。選擇尺寸的原因是,當我們以最小壓力接觸表面時,所創(chuàng)建的貼片的尺寸約為 8-9 毫米。所以當我觸摸任何關鍵手指時,至少會接觸到兩個板。

在這里,我還需要覆蓋 2 個八度音階,每個鍵由兩個鋁箔板組成。我們總共需要 48 個盤子。

電氣連接:

從上圖中可以看出,每個板都直接連接到公共引腳(編號 13)。它還通過一個電阻器連接到一個單獨的引腳。我們如何將所有這些引腳連接到感應板沒有任何限制,因為模擬和數(shù)字引腳都支持電容感應。根據(jù)您的連接,需要修改代碼。

筆記:

在切割板或焊接時,您必須確保所有板彼此電氣隔離。

4:Arduino 軟件/代碼

  • 所有板都聲明為電容傳感器,所有連接都需要正確映射到代碼上。對我來說,引腳 13 是通用引腳。
CapacitiveSensor   p1 = CapacitiveSensor(13,12); CapacitiveSensor   p2 = CapacitiveSensor(13,11); 
CapacitiveSensor   p3 = CapacitiveSensor(13,10); 
.
.
.
CapacitiveSensor   p48 = CapacitiveSensor(13,9);

2. 最初捕獲所有傳感器的電容值。“raw_cap()”函數(shù)將捕獲值并存儲在全局聲明的數(shù)組中。

void raw_cap(){
  raw[1]=p1.capacitiveSensor(resolution);
  raw[2]=p2.capacitiveSensor(resolution);
  raw[3]=p3.capacitiveSensor(resolution);
.
.
  raw[48]=p48.capacitiveSensor(resolution);
}

3. 捕獲完整數(shù)據(jù)后,將執(zhí)行另一個名為“data_process()”的函數(shù)。這不僅會處理數(shù)據(jù),還會將 MIDI 消息發(fā)送到計算機。這個函數(shù)的流程如下。

  • 識別出最大幅度的鍵,
  • 觸摸的準確位置是在最大幅度值前一鍵和后一鍵計算的。(這就是為什么我們需要讓手指在任何時候至少觸摸兩個鍵)。
  • 存儲鍵和壓力值的最后 30 個值
  • 如果觸摸壓力值超過預定義值,Arduino 會發(fā)送數(shù)據(jù)以打開音符。
  • 在觸摸打開期間,Arduino 不斷發(fā)送彎音和壓力值。
  • 如果 Key 釋放,它會發(fā)送信號關閉音符。

此代碼還捕捉按鍵觸摸。例如,您在 7.25(在鍵 7 上稍微向右)觸摸,它只會播放鍵 7(純音符)。在該觸摸會話期間,它將是幻燈片的基礎值。此功能可以輕松放置純音符。如果沒有這一點,將很難做到這一點。

完整的代碼可供下載。如果您打算做類似的事情,您可能需要花費大量時間來調整代碼和各種值(如分辨率和觸摸閾值)

要了解 MIDI 消息,您可以參考此鏈接:

https://www.instructables.com/Send-and-Receive-MID ...

?

5:聲音生成

生成聲音需要三個軟件:

1. 無毛 MIDI:這是 MIDI 橋的串行。arduino 傳輸?shù)娜魏螖?shù)據(jù)都被該軟件捕獲。

2. LoopMIDI:這個軟件從 hairlessMIDI 捕獲數(shù)據(jù),并作為 FL studio(或您使用的任何軟件)的 MIDI 設備

3.FL studio:在FL studio的設置中,您可能需要選擇LoopMIDI作為設備。默認情況下,此代碼提供 +8 到 -8 個半音之間的彎音(軟件中的默認值為 +2 到 -2)。這需要在儀器的設置中手動設置。除此之外,您還需要將壓力值分配給體積。

6:常見問題

這是我在開發(fā)過程中遇到的問題列表。

  • 電容感應的一個非常常見的問題是正確接地。如果用戶赤腳接觸地面,靈敏度會增加。如果我們將筆記本電腦插入電源,靈敏度也會增加。但是,打開充電器可能會給數(shù)據(jù)增加噪音。因此,如果您為某些條件設置閾值,它可能適用于其他條件,也可能不適用。
  • 鋁箔之間的連接很關鍵,容易松動,如果松動,很多時候設備可能會出現(xiàn)故障。
  • 直接觸摸板、線或引腳可能會給出完全錯誤的數(shù)據(jù),也會破壞采樣率。演奏時,只能使用塑料覆蓋的部分。所有暴露的金屬都應適當絕緣以避免意外接觸。
  • 如果您將鋁箔直接粘貼到木塊上(使用水性粘合劑),可能需要幾個小時或幾天才能完全干燥。在潮濕條件下,由于板通過水通道相互連接,它會給出錯誤的輸出。

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費