曾经想根据 80 年代的旧芯片曲调构建自己的合成器吗?播放简单的复调曲调,听起来就像这些旧的 Sega Master System 和 Megadrive 视频游戏听起来像?
我有,所以,我从 ebay 订购了一些 SN76489 芯片和一个 MIDI 主机接口并试了一下。好吧,对我来说,这不是在公园里散步,但是,我很享受每一刻。
首先,我学会了如何直接连接 SN76489 并用它制造一些噪音。这有一些令人困惑的元素,但是在 The Oddbloke Geek Blog 和其他一些示例的帮助下,连同芯片规范文档,我能够开发一个简单的 arduino 库。
接下来,我必须学习如何将 MIDI 键盘与 USB 迷你主机屏蔽连接。这并不难,因为有一些可用的文档,并且存在带有清晰示例的好的库。
一旦我了解了如何控制芯片以及如何连接我的 USB MIDI 键盘,剩下要做的就是编写一些代码,将所有这些封装在一起,并允许我使用键盘来控制芯片。
在此过程中,我了解到频率低于我尝试为 0x2f MIDI 音符生成的声音听起来不正确,因此,我决定使用它来允许为 0x28 和 0x2f 之间的任何 MIDI 音符发送噪音到噪音发生器并且还允许播放带有东方阿拉伯风格的音符,用于低于 midi 0x28 的任何内容。
回顾过去,构建起来非常有趣且非常有趣。
我希望你和我一样觉得它有趣有趣,如果你自己建造一个,你会很乐意分享一些照片。
如果您喜欢这个项目,请在下方为它投票,以帮助赢得它参与的比赛。
1 x 性能板 |
1 x arduino nano |
1 x USB 迷你屏蔽 |
1 x SN76489 声音芯片 |
1 个移位寄存器 595 |
1 x 4MHz 晶振 |
1 x 5V 稳压器 7805 |
1 x 稳压器散热器 |
3 x 10uF 电容器 |
电线|
1 x 红色 LED 电源 |
1 x 220 ohm 电阻器,用于限制 LED 电流 |
1 x 12v 电源连接器 |
1 个开/关开关 |
一个合适的盒子(我用一个在我的储藏室里放了多年的旧抽屉做了我的)
由于 USB mini host shield 工作在 3.3V,而我使用的 USB midi 键盘需要 5V,所以需要通过切断连接到 USB out Vcc 的 3.3V 线来调整 shield 的输出电压,所以,我们以后可以连接它至 5V。
有很多关于如何做到这一点的教程,结果很简单:
只需切断 2k2 电阻和 Vcc 线之间的线(见附图)。我用螺丝刀刮了这条线,并测试了它是否与连续性计一起使用。
幸运的是,有很多关于如何做到这一点的信息,所以,通过谷歌搜索“Arduino Nano 和 mini USB 主机屏蔽”,我登陆了这个线程https://forum.arduino.cc/index.php?topic=603476.0
它描述了如何连接 USB mini v2.0 扩展板,在遵循它之后,我直接测试了一些 USB MIDI 示例。
接线:
Arduino主机盾
10--------------5
11--------------6
12--------------7
13--------------8
2----------------2
5V--------------1
3.3V------------9
接地-----------3
RST------------4
在这个线程中,还提到他们切断了 3.3V 引线,以便 USB 可以从 VBUS 获得 5V。
此描述和随附的图像来自此线程。
顺便说一句,这个板上的印刷品有一个错误,所以这有点令人困惑,但是,你可以看到我对此的反馈 (tyrkelko) 以及我从哪里学到的。
现在是时候添加产生这种惊人声音的芯片了。
我已经开发了一个库来将 arduino 与这个芯片连接起来,并且只需要按照我的说明进行操作。
该库在 GPLv3(我的第一个开源版本)下在 github 上发布。
https://github.com/tyrkelko/sn76489
76489 和 595 的连接如从库 readme.txt 文件中捕获的随附图像中所示
76489 的低电平写入启用 (NotWE) 与 nano 的引脚 3 连接,可以在代码中更改。
#define PIN_NotWE 3
595 与 nano 的连接方式如下,也可以通过编辑引脚号进行调整:
#define PIN_SER 7
#define PIN_LATCH 6
#define PIN_CLK 5
我使用的振荡器是一个有 4 条腿的 4MHz 晶体振荡器。
它在代码中配置如下,您可以将其值调整为 500kHz 和 4MHz 之间的任何振荡器频率:
#define 频率 4000000.0
连接我使用的振荡器如下:
引脚 1 - 未连接
引脚 7 - 接地
引脚 8 - 连接到 76489 引脚 14 - 时钟 osc
本项目中用到的库需要添加到 Arduino IDE 中,如下:
打开 Arduino IDE
将以下库下载到 IDE 的库文件夹中(希望很快能在 IDE“工具”菜单的“管理库...”菜单下看到这些):
https://github.com/felis/USB_Host_Shield_2.0
https://github.com/tyrkelko/sn76489
使用以下 github 项目中的代码:
https://github.com/tyrkelko/usb_midi_tone
下载 usb_midi_tone.ino,编译并上传到您的 Arduino nano。
现在是时候测试一切是否正常了。
为此,我们需要:
1.放大器和扬声器
2. USB MIDI 键盘
将 SN76489 引脚 7(音频输出)连接到放大器音频输入。
给放大器加电,然后给 arduino nano 加电。您现在应该能听到一秒钟的开机测试声音。
连接 USB MIDI 键盘并测试。
如果一切正常,您应该可以同时播放 3 种音调,还可以播放 8 种噪音,甚至是 24 EDO-Scale 的四分之一音。
如果它不起作用,请检查步骤以查看可能出了什么问题。
如果您觉得这是由于说明不明确造成的,请给我留言,以便我更新说明以修复它。
在这一步中,您应该能够在测试电路工作正常后将其包装起来。
1.添加一个LM7805和两个10uF电容和0.1uF的电源调节器。有很多关于这方面的教程,
2. 添加一个 12V 电源连接器,Vcc 通过开/关开关连接
3. 增加一个带限流电阻的LED,用于指示何时上电。
一旦电路经过测试并按照您的喜好工作,除了建造一个漂亮的外壳,用令人敬畏的颜色涂上它并播放一些音乐之外,没有什么可做的了。
我希望您喜欢阅读本教程,并且它启发了您构建自己的合成器或开始您正在从事的另一个项目。
如有任何问题,请在下面发表评论,如果您根据本教程构建了类似的东西,如果您能在“我做了这个!”中分享您所做的,那就太好了。区域或反馈部分。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !