电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>使用Swift语言的带有蜂鸣器的音乐播放器

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

2022-11-02 | zip | 0.12 MB | 次下载 | 免费

资料介绍

描述

在这个项目中,让我们使用蜂鸣器播放一首已知歌曲 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 步:运行项目

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


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  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开发指南
  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数字电路基础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次下载  |  免费