在这个项目中,让我们使用蜂鸣器播放一首已知歌曲 Twinkle twinkle little star。
您将使用的零件都包含在此Maker 套件中。
在开始阅读代码之前,您需要了解一些关于注释的信息。
钢琴键盘上共有 88 个键,从 A0 到 C8。这些音符对应不同的频率。
半音或半音是音符之间的最小间隔,例如,A键和A#键之间的间隔是半音。两个半步构成一个全步,就像A和B之间的间隔一样。
一个八度由 12 个半音组成。它是一个音符与下一个同名音符之间的距离,例如,第一个键 A 到第二个键 A 形成一个八度。
四分音符是音乐中常见的音符长度,只有一个节拍。然后其他音符以此为基础:二分音符有两个节拍,全音符有四个节拍,八分音符有一半节拍,等等。
BPM或每分钟节拍用于测量一段音乐的节奏。例如,60 BPM 表示一分钟有 60 次节拍,每个节拍持续 1 秒。
将屏蔽罩放在 SwiftIO 板的顶部。
将蜂鸣器模块连接到引脚 PWM2B (D10)。
文件Twinkle.swift
:
import PWMTone
struct Music {
static let twinkle: [(note: PWMTone.Note, value: Int)] = [
(.C4, 4),
(.C4, 4),
(.G4, 4),
(.G4, 4),
(.A4, 4),
(.A4, 4),
(.G4, 2),
(.F4, 4),
(.F4, 4),
(.E4, 4),
(.E4, 4),
(.D4, 4),
(.D4, 4),
(.C4, 2),
(.G4, 4),
(.G4, 4),
(.F4, 4),
(.F4, 4),
(.E4, 4),
(.E4, 4),
(.D4, 2),
(.G4, 4),
(.G4, 4),
(.F4, 4),
(.F4, 4),
(.E4, 4),
(.E4, 4),
(.D4, 2),
(.C4, 4),
(.C4, 4),
(.G4, 4),
(.G4, 4),
(.A4, 4),
(.A4, 4),
(.G4, 2),
(.F4, 4),
(.F4, 4),
(.E4, 4),
(.E4, 4),
(.D4, 4),
(.D4, 4),
(.C4, 2)
]
}
文件main.swift
:
/* Import the SwiftIO library to use everything in it. */
import SwiftIO
/* Import the board library to use the Id of the specific board. */
import SwiftIOBoard
/* Import this library to set the PWM signal according to the musical notes. */
import PWMTone
var halfStep = 0
/* BPM, beat per minute, measures the tempo of music. */
var bpm = 60
/* Initialize a player. */
let player = PWMTone(PWMOut(Id.PWM2B), bpm: bpm)
while true {
/* Play the music. */
player.play(track: Music.twinkle)
/* Increase the bpm to make the music faster. */
bpm += 40
player.setBPM(bpm)
/* Raise an octave and the pitch sound higher. */
halfStep += 12
player.setFixedHalfStep(halfStep)
sleep(ms: 1000)
}
您可以在项目中找到两个文件。
该文件Twinkle.swift
记录了旋律的音符和每个音符的持续时间。
在文件main.swift
中,您将设置 PWM 信号来播放音乐。让我们来看看它。
import SwiftIO
import SwiftIOBoard
import PWMTone
SwiftIO和SwiftIOBoard是所有这些项目中使用的库。
您将使用另一个库PWMTone。它允许您根据乐谱设置 PWM。
var halfStep = 0
该值halfStep
用于更改音高。它等于 0,因此音高保持不变。
var bpm = 60
将 bpm 设置为 60,因此每个节拍将持续一秒钟。
let player = PWMTone(PWMOut(Id.PWM2B), bpm: bpm)
初始化播放器。它有三个参数:
player.play(track: Music.twinkle)
此语句是播放音乐。该方法play(track:halfstep)
有两个参数。
track
是表示音符和音符长度的元组数组。Music.twinkle
指的是写在文件中的分数Twinkle.swift
。在 struct Music中,有一个恒定的闪烁存储音符和音符长度。所以轨道写成Music.twinkle
。halfStep
默认值为 0。稍后您将对其进行设置。所以你可以在这里忽略它。
bpm += 40
player.setBPM(bpm)
然后增加 bpm 以使速度快一点。此增量是您喜欢的随机数。
halfStep += 12
player.setFixedHalfStep(halfStep)
这两个语句旨在提高一个八度,因此音乐的音高听起来更高。
成功下载代码后,您将听到蜂鸣器发出的旋律。音乐会逐渐变快,音调会变高。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !