天天看點

ART-Pi 實作音樂播放器 --播放《天空之城》

  • 2020-11-25

    廬州月光,撒在心上,月下的你不複當年模樣。太多的傷,難述衷腸,歎一句當時隻道是尋常 。

    – 許嵩《廬州月》

一、開發環境

ART-Pi 實作音樂播放器 --播放《天空之城》
  • 1.1、軟體環境
    • RT-Thread Studio: V1.1.5
    • RT-Thread版本:V4.0.2
    • STM32 CubeMX: V6.0.1
  • 1.2、硬體環境
    • 晶片:STM32H750XBH6
    • 開發闆:ART-Pi
    • 子產品:無源蜂鳴器

(注:本文是在基于文章《應用 RT-Thread 實作蜂鳴器播放器》來實作的,詳細的實作過程,該篇文章已經非常非常詳細,我就重複了,隻是說說關鍵的地方)

二、一些樂理的基本知識

我們知道,聲音的三要素是:響度、音色、音調。利用這三個要素就可以演奏不同的音樂。

一般說來,蜂鳴器演奏音樂隻能是單音頻率,它不包含相應幅度的諧波頻率,也就是說不能象電子琴那樣能奏出多種音色的聲音。是以蜂鳴器奏樂隻需弄清楚兩個概念即可,也就是“音調”和“節拍”。音調表示一個音符唱多高的頻率,節拍表示一個音符唱多長的時間。十二平均律就規定了每一個音符的标準頻率。

十二平均律,是一種音樂定律方法,将一個純八度平均分成十二等份,每等分稱為半音,是最主要的調音法。十二平均律中各音的頻率: C: 262 Hz、#C: 277 Hz、D: 294 Hz、#D: 311 Hz、E: 330 Hz、F: 349 Hz、#F: 370 Hz、G: 392 Hz、#G: 415 Hz、A: 440 Hz、#A: 466 Hz、B: 494 Hz

ART-Pi 實作音樂播放器 --播放《天空之城》
下面是兩隻老虎的簡譜
ART-Pi 實作音樂播放器 --播放《天空之城》

其中1=E 表示樂譜的曲調,就是說,“這歌曲唱E調”。那麼 1(do) 的頻率就為 330 HZ,同樣 2 = F,3 = G依次類推。後面 4/4 是用來表示節拍的,它表示樂譜中以四分音符為節拍,每一小結有四拍。比如第二行的第二小節,其中5、6 為一拍,5、4為一拍,3為一拍,1為一拍共四拍。5、6的時值為四分音符的一半,即為八分音符長。

簡譜裡音符下面加一道橫線表示該音減少一半時值,即該音符為半拍;加兩道橫線表示該音在減少一半時值基礎上再減一半時值,即該音符為四分之一拍。附點音符,時值是原音符的長加上這個音長的一半。

那麼一拍到底該唱多長呢?一般說來,如果樂曲沒有特殊說明,一拍的時長大約為400—500ms 。我們以一拍的時長為400ms為例,則當以四分音符為節拍時,四分音符的時長就為400ms,八分音符的時長就為200ms,十六分音符的時長就為100ms

---- 來源《應用 RT-Thread 實作蜂鳴器播放器》

十二平均律給出了“

do re mi fa so la si

”對應的頻率值,也就是說我們通過改變輸出pwm的頻率讓蜂鳴器發出不同頻率的聲調,就能得到譜成樂譜的“

do re mi fa so la si

”,進而實作音樂播放的效果。

三、實作過程

  • 3.1、首先要配置ART-Pi的輸出引腳(本執行個體使用的是PH10)為pwm模式,用于控制蜂鳴器發出不同頻率、不同音量。參考文章《使用RT-Thread Studio 實作PWM裝置底層配置 (RT-thread && RT-thread Studio && ART-Pi)》
  • 3.2、網上找到天空之城的樂譜。
    ART-Pi 實作音樂播放器 --播放《天空之城》
  • 3.3、利用

    MusicEncode

    (對簡譜進行編碼的軟體)來擷取編碼(編碼的具體意義看《應用 RT-Thread 實作蜂鳴器播放器》,這裡就不解釋了)。

    根據樂譜點選

    1

    位置的符号,能夠得到

    2

    處的譜子,點選

    開始轉換

    ,得到

    3

    處的編碼,就是要放入我們程式的東西。
    ART-Pi 實作音樂播放器 --播放《天空之城》
  • 3.4、通過上一步我們得到了編碼,單片機利用這些編碼就能得到要輸出的頻率和停頓時間,也就是能奏響音樂。

    直接使用《第 4 節:音樂資料的編碼與解碼》裡面的解碼檔案。

    ART-Pi 實作音樂播放器 --播放《天空之城》
  • 3.5、将示例中的紅框部分更換成我們利用軟體生成的編碼(也就是那個

    3

    位置的那個數組)
    ART-Pi 實作音樂播放器 --播放《天空之城》
  • 3.6、下載下傳到ART-Pi就可以聽到音樂響起。
  • 3.7、還怪好聽的,OVER。

四、參考資料

  • 《應用 RT-Thread 實作蜂鳴器播放器》

繼續閱讀