×

使用Swift语言的带有蜂鸣器的音乐播放器

消耗积分:0 | 格式:zip | 大小:0.12 MB | 2022-11-02

李泳瑜

分享资料个

描述

在这个项目中,让我们使用蜂鸣器播放一首已知歌曲 Twinkle twinkle little star。

第 1 步:您需要什么

poYBAGNh0fSAGlXZAACcud3RQzk685.png
 

您将使用的零件都包含在此Maker 套件中。

  • SwiftIO 板
  • 蜂鸣器
  • 4 针电缆

第二步:关于音符

pYYBAGNh0faAFroEAADV9OXf0wQ219.png
 

在开始阅读代码之前,您需要了解一些关于注释的信息。

钢琴键盘上共有 88 个键,从 A0 到 C8。这些音符对应不同的频率

半音或半音是音符之间的最小间隔,例如,A键和A#键之间的间隔是半音两个半步构成一个全步,就像A和B之间的间隔一样。

一个八度由 12 个半音组成。它是一个音符与下一个同名音符之间的距离,例如,第一个键 A 到第二个键 A 形成一个八度。

四分音符是音乐中常见音符长度,只有一个节拍然后其他音符以此为基础:二分音符有两个节拍,全音符有四个节拍,八分音符有一半节拍,等等。

BPM或每分钟节拍用于测量一段音乐的节奏。例如,60 BPM 表示一分钟有 60 次节拍,每个节拍持续 1 秒。

第 3 步:电路

poYBAGNh0gCAMDd-AAD2bVJKsaM746.png
 

将屏蔽罩放在 SwiftIO 板的顶部。

将蜂鸣器模块连接到引脚 PWM2B (D10)。

第 4 步:代码

文件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)
}

第 5 步:代码分析

您可以在项目中找到两个文件。

该文件Twinkle.swift记录了旋律的音符和每个音符的持续时间。

在文件main.swift中,您将设置 PWM 信号来播放音乐。让我们来看看它。

import SwiftIO
import SwiftIOBoard
import PWMTone

SwiftIOSwiftIOBoard是所有这些项目中使用的库。

您将使用另一个库PWMTone。它允许您根据乐谱设置 PWM。

var halfStep = 0

该值halfStep用于更改音高。它等于 0,因此音高保持不变。

var bpm = 60

将 bpm 设置为 60,因此每个节拍将持续一秒钟。

let player = PWMTone(PWMOut(Id.PWM2B), bpm: bpm)

初始化播放器。它有三个参数:

  • 第一个是PWM引脚,
  • 第二个是bpm。
  • 第三个设置每个音符之间的间隔,默认为 0.1。
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)

这两个语句旨在提高一个八度,因此音乐的音高听起来更高。

第 6 步:运行项目

成功下载代码后,您将听到蜂鸣器发出的旋律。音乐会逐渐变快,音调会变高。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !