×

使用PocketBeagle板创建乐器

消耗积分:0 | 格式:zip | 大小:0.30 MB | 2023-07-10

訾存贵

分享资料个

描述

访问我的 Github:https ://github.com/jas21RICE/ENGI301/tree/master/project_01

背景:

该项目的目标是使用小型 PocketBeagle 板创建一种易于制作且易于使用的乐器。作为一名音乐家,我一直喜欢在我周围的事物中寻找音乐,并尽我所能创作音乐,但现在我已经成功地制作了可以制作音乐的东西!

研究规划

在我开始开发这个项目之前,我首先必须弄清楚我想在合成器上看到什么样的功能。我从其他几个Hackster.io项目中汲取了一些灵感来实现我要实现的功能:

https://www.hackster.io/team-sunshine/keychain-synth-376159

https://www.hackster.io/95016/keyboard-melodies-9ac4ab

https://www.hackster.io/the-ohmonics/the-ohminator-analog-synthesizer-142dc7

https://www.hackster.io/etiennedesportes/pocket-synthesizer-785b50

在我仔细阅读其他项目以获得灵感后,我想出了一个我希望在设备上看到的功能列表:

1. 现场音效,就像任何键盘或钢琴一样

2.多倍频程支持

3.集成节拍器

4.录音/循环播放功能

定义了我的基本功能后,我开始规划实现每个功能所需的基本 UI 硬件。我决定我需要三个扬声器,一个用于播放,一个用于现场声音,一个用于节拍器。我需要 12 个用于合成器按键的按钮,以及一个用于在需要新录音时清除录制音乐的按钮。此外,我需要四个可变电阻器,三个用于音量控制,一个用于节拍器的速度控制。我还想要两个 4 位十六进制显示器以及一个用于节拍器的 LED。确定了可能的零件清单后,我创建了该设备的外观模型:

pYYBAGOSoO-AAFHGAAD7SSBy-AI946.jpg
第一个 UI Layout 设计理念
 

有了我最初的 UI 设计布局,我就开始为我的每个控件规划固定和电源。初始系统和电源框图如下所示:

pYYBAGOSoPSAN0SWAADPmTx-3VA201.jpg
第一系统框图
 
poYBAGOSoPeAROo4AADzOCIQJzs506.jpg
第一个电源框图
 

然而,在开始开发过程后不久,我发现我可能无法实现我最初想要的所有功能。我努力完成我能给定的时间范围内的所有事情,但最终删除了一些功能。我最终制作的设备的新系统和电源框图如下所示:

pYYBAGOSoPqAKwNgAAClCflWOew308.jpg
最终系统框图
 
poYBAGOSoPyABEGvAACzqRcocHs612.jpg
最终电源框图
 

有了这个新布局,我们就可以着手制作设备了!

开发过程:

现场音响

我从实施 12 键键盘开始,因为这是该项目的核心部分。我从朋友 ( https://www.hackster.io/nickericlester/ir-breakbeam-candy-dispenser-with-zelda-music-c76e65 )那里借来了代码,使用我得到的扬声器制作了一个笔记库并进行交互用扬声器演奏音符。一旦我成功地在 PocketBeagle 上为迷你扬声器设置了 PWM 引脚并成功地让它们播放指定的音符,我就开始连接我的 12 音符键盘:

poYBAGOSoTyAO6REABIKNG3xGww379.jpg
12 键键盘布局
 

键盘由 PocketBeagle 上的单个 3.3V_OUT 引脚供电,每个按钮都连接到跳线,该跳线连接到 PocketBeagle 上的不同 GPIO 引脚。在我的代码中,我将每个 GPIO 引脚设置为输入并为每个音符标记引脚。请注意,上图中的某些按钮并联连接,以便在某些情况下共享电阻。通过一些实验,我发现 GPIO 引脚默认配置为拉低,并确保编写我的代码,以便在 GPIO 读取 1(即按下按钮)时播放音符。通过键盘设置,我继续使用节拍器

节拍器

相对于 12 键键盘,节拍器设置很简单。我通过滑动开关和电位计将其中一个扬声器连接到 PocketBeagle 上的 PWM 引脚,然后接地。滑动开关允许关闭节拍器,电位器通过改变扬声器接收的电压来调节音量。

poYBAGOSoYaAO3fAAA89YUxlOU8636.jpg
节拍器组装。从左到右:速度旋钮、电源开关、音量、扬声器
 

节拍器的下一步是可调速度。我将速度旋钮连接到 PocketBeagle 模拟引脚(1.8V 输出、参考、输入),并将模拟读数转换为速度。袖珍比格犬使用该速度来确定节拍器发出声音的时间。为了让节拍器在用户播放音乐时运行,我设置了第二个线程来运行节拍器与主要任务以及播放方法。

录音/回放

该项目最困难的部分是弄清楚如何记录用户弹奏的音符并循环播放它们。硬件很简单,3.3V 电源通过一个 10kOhm 电阻器连接到一个滑动开关到一个 GPIO 引脚,一个扬声器连接到一个 PWM 引脚以及一个用于音量控制的电位器。

pYYBAGOSocKAAZwfABC-4mNksSA926.jpg
滑动开关切换录制/播放模式
 
poYBAGOSogKATA_RAA1BERSajfE688.jpg
左扬声器:播放,右扬声器:现场声音
 

然而,该软件更加困难。


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

评论(0)
发评论

下载排行榜

全部0条评论

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