用树莓派自制 MIDI 键盘

MAKER:midiIdentifier/译:趣无尽 Cherry(转载请注明出处)
本教程将手把手教你从零开始自制属于你自己的 MIDI/钢琴/音乐/歌曲键盘。这是一个基于树莓派的开源项目,其中所需的文件在本项目文件库中可以找到。

 

 

如果你是70后、80后,你会认出部分的设计。我们的灵感主要来自Apple II。标志性的特点有底部正面略微向上的角度,以及略微向上倾斜的键盘(如图)。

物件清单

1、树莓派3B型 × 1
2、电容式触摸显示屏7寸× 1(Waveshare 树莓派 3.5英寸触摸屏 TFT LCD(A)320 * 480)
3、扬声器 × 2
4、Midi USB 键盘 × 1
5、胶合板 × 若干(约3mm厚)
6、热熔胶 × 1

软件依赖

在为midiIdentifier安装实际软件之前,首先需要安装许多依赖项。其中大部分都可以使用“apt-get”工具进行安装,该工具预装在每个Raspbian OS发行版上。在下面你可以找到安装相应依赖项所需的特定命令,包括依赖项功能的简要说明。

依赖项说明如下:
1、一个干净的Raspbian OS
2、Fluidsynth合成软件(播放音乐的音频输出和音频生成所需):

sudo apt-get install fluidsynth

从以下URL下载Fluidsynth声音字体:
https://sourceforge.net/p/fluidsynth/wiki/SoundFont/

SOUNDFONT,顾名思义,就是“声音字体”。档案储存为 .SF 或 .SF2。 它是几年前 ( 2000年 & 2001年第二版本 ) 由 新加坡创新公司 Creative Technology 在中档声卡上 (EMU SoundBlaster)使用的音色库技术。它是用字符合成的,一个Sound Fond表现出一组音乐符号。用MIDI键盘输入乐符时,会自动记下MIDI的参数,最后在Sound Fond中查找,当你需要它时,就下载到声卡上。

设置Fluidsynth自动启动:

crontab -e

添加以下行:

@reboot /usr/bin/screen -dm /usr/bin/fluidsynth -a alsa -m alsa_seq -i -s -o "shell.port=9988" -g 2 /FluidR3_GM.sf2

3、安装Py-Audio(各种声音输入和输出功能所需):

sudo apt-get install python3-pyaudio

4、Telnet(需要连接到负责音频输出的Fluidsynth服务器):

sudo apt-get install telnet

5、Screen(作为后台任务所运行的应用程序):

sudo apt-get install screen

6、Git(需要下载midiIdentifier软件/克隆代码库)

sudo apt-get install git

显示设置

需要对 Raspbian OS 初始配置,以便支持触摸屏。具体需要对启动配置文件进行各种更改。请注意,对这些配置文件的随意的更改可能会使树莓派无法正常启动。

1、使用文本编辑器(nano)打开启动配置文件。需要root权限(sudo)才能对文件进行更改。用于打开和编辑文件的命令如下:

sudo nano /boot/config.txt

添加以下行(如果已存在,请删除现有行)

max_usb_current=1
hdmi_group=2
hdmi_mode=87
hdmi_cvt 1024 600 60 6 0 0 0
hdmi_drive=1

请注意不要在“=”符号前后包含任何空格。
保存并关闭文件。如果你使用的是nano,请执行以下操作:

Press CTRL + X
Type “Y” and press Enter

2、将显示器随机连接到HDMI和树莓派的USB端口上。
3、打开背光(开关在显示屏的背面)。
4、重启树莓派。

MidiIdentifier 软件

在下文中,我们假设应用程序将在名为“pi”的用户下运行。如果不是这种情况,则需要相应地调整目录路径(/home/[你的用户名])。
1、使用以下命令从Github克隆midiIdentifier仓库:

2、将仓库添加到Pythonpath。
打开文件~/.bashrc(使用 nano,方法参考上一步)。
添加以下行:
PYTHONPATH="${PYTHONPATH}:/home/pi/workspace/midiIdentifier/src"
保存文件,然后使用以下命令重新加载它:
. ~/.bashrc<br>

注意命令中的空格,重启树莓派。

3、设置应用程序的自动启动。
在主目录中创建一个名为“start_gui.sh”的文件,并添加以下行:

#!/bin/bash
sleep 3
cd /home/pi/workspace/midiIdentifier/src/guiMI
python3 /home/pi/workspace/midiIdentifier/src/guiMI/gui.py
sleep 30

打开文件 ~/.config/lxsession/LXDE-pi/autostart 并添加以下行:

@lxterminal -e /home/pi/start_gui.sh

4、为了让 midiIdentifier 跑起来,需要将一组midi文件手动复制到midi目录中。为避免侵犯版权,我们的git仓库中不包含这些文件。但是,可以通过Google搜索从各种在线资源下载它们。下载文件后,需要将它们复制到以下目录中:

/home/pi/workspace/midiIdentifier/files/new_midi

在此之后,需要使用以下命令解析midi文件:

python3 /home/pi/workspace/midiIdentifier/src/converterMI/midiToText.py

5、重启树莓派。

恭喜你,你做到了!到现在为止,midiIdentifier 应该能正常运行啦!

制作外壳

 

 

 

 

 

切割屏幕框和整个案例所需的所有文件都可以在本项目文件库中下载到。
http://maker.quwj.com/project/67

可选:如果你想修改我们的构建模型或者你只是对设计激光切割机文件的过程感兴趣,请继续阅读:

在纸上绘制基本草图以便了解尺寸,我们使用Adobe Illustrator设计激光切割机的文件(你可以从网站获得1周的测试版本)。然而,我们没有绘制每一个凹槽,这里有一个很棒的免费在线工具可以帮助你,Joinery。我们将AI文件导出为SVG并将其导入Joinery,我们将不同的边缘相互连接。 Joinery允许你定义不同角度的配置文件,以便稍后重复使用,并允许保存项目。
因此,Joinery资料和切割资料如下。如果你想对我们的设计进行微小的更改,这些特别有用,当涉及到切割的公差等时,它们比adobe illustrator文件更容易更改。
midiIdentifier_lasercutter_files.zip
midiIdentifier_joinery_files.zip

将所有一切组合在一起

 

 

安装好树莓派上的软件(并测试它是否正常工作)并切割所有胶合板,你就可以开始组合软件和硬件了。

1、首先,除了背面的板子外,你应该将整个外壳组合在一起。此外,不要连接屏幕盒,这将是最后一步。如果你想用胶水加固,你可以试试。
2、将钢琴键从后面嵌入到外壳,确保将其嵌入成功。将它靠在木头上并测量需要切割的部件的高度以将其固定到位。切割这些碎片(2到3片)并将它们固定在钢琴键和盒子的底座上,将钢琴键保持在应该放置的位置,并确保按下琴键后不会移动。
3、安装完板子后,随后将扬声器的活动铰链放在主箱体内。你可以使用热熔胶或胶水。在下面放一些木块做支撑,这样即使稍后放置盒子,它们也会保持水平。
4、将整个屏幕盒(内部屏幕,通过盒子底部孔突出的电缆)通过活动铰链连接到主体箱上。
5、在主体箱内部添加一个木块,以便在折叠到主体箱时,屏幕盒仍可以保持水平位置(如图)。支撑木块的地方可以用一段铁管支撑屏幕,以便屏幕可以在不同的角度直立。
6、将扬声器安装到木板上(我们使用双面胶)。为了方便运输,屏幕和盒子可以折回到主箱体内!
7、最后,将所有电缆连接到树莓派。

就是这样,完成了!希望你喜欢我们的教程!

 

 

 

 

 

这个人改造了自己的桌子,让自己的 Google Home 用上 “实体专辑”

相信,还在买 CD 或者黑胶的用户其实还有不少。

爱范儿(微信号:ifanr)在之前谈黑胶的时候就已经提到,现在有不少年轻用户还会追黑胶唱片。他们的着眼点并不在体验传统的味道上,而是觉得收集黑胶或者其他实体专辑是一种支持歌手出唱片或提升“仪式感”的行为。

 

虽然不怎么听,但买起来也不会少。

确实,现在要听个实体专辑确实也不容易。黑胶的话经不起折腾,听 CD 也不方便。而且现在的人已经习惯了那种以单曲、EP 为主的音乐消费模式,很少人能够坚持把一张专辑完完整整听完的。

OLYMPUS DIGITAL CAMERA

所以在声音体验也没有差太多的前提下,与其去不断切歌、换碟,倒不如直接用流媒体来得方便。

但其实,现在有人还想去玩“实体专辑”。GitHub 上有一位用户,就通过树莓派做了一个识别感应器,让自家的 Google Home 用上“实体专辑”。

 

根据 The Verge 的报道,这位来自 GitHub 上的用户叫“hoveeman”,他将一个射频识别读卡机和树莓派 Raspberry Pi Zero 连接起来,并开发了一套专用的程序。安装上这套程序后,树莓派能够给家中的 Google Home 发出指令,让它播放相应的专辑。

在这套组合中,射频识别读卡器 RFID 模块的任务就是用来识别“实体专辑”。

这些“实体专辑”,其实是 hoveeman 自己做的一些小卡片。小卡片的表面印着专辑封面、名称和表演者,卡片内部则呆在了一块小型识别芯片。当用户将芯片放到 RFID 模块上,模块就能够识别出相应的信息,传输到 Raspberry Pi Zero 上。电脑处理后,就会发送的 Google Home 上,让它播放相应的专辑。

这个模块能够隐藏在家居产品当中,不管是木桌还是凳子,只要不阻碍 RFID 识别的,都能够藏在里面。虽然这套设备带来的解决方案有点“多此一举”,但现在看起来有点意思。至少,它比你经常换 CD 来得方便。

现在,Hoveeman 将这套解决方案都上传到 GitHub 上。你可以在这个主页上查到它用过的设备和代码,自己做一套相同的出来。

(Hoveeman 整套方案的内容物)

这个其实有点像之前在那个用 RFID 来控制 Spotify 的方案,那个方案也是用识别卡片来让智能设备播放 Spotify 中的专辑或特定播放列表,做法和实现目标基本上没有什么大分别。

这些方案对于开发者来说,也都是自娱自乐的东西而已。

毕竟,现在的人确实也不怎么喜爱这种消费方式。他们只需要一个简单的听歌方案,而流媒体服务正好能够给他们最简单直接的体验,有这个来确保基本需求之后,其他东西也不重要。

 

树莓派3B 爬虫蓝牙播放器

  

一直没有尝试使用一下树莓派3B 的蓝牙功能,今天特别想试试,于是就烧录了最新的raspbian镜像,然后接上5寸GPIO触摸屏和键盘鼠标,开始了调试,网上看了看其他人的教程,发现都很老了,有的还不能用。所以就诞生了这篇我自己能用的文章,算是做个记录吧。

首先你需要做的准备工作:

  1. 树莓派3B  如果你是2B ,那么你还需要一个USB 的蓝牙接收器(马云家可买)
  2. 树莓派电源5v/2A
  3. 8GB TF 卡一张,读卡器1个
  4. 树莓派外壳(可选) 为了好看和防尘, 还可以选择散热片和风扇,更加专业.
  5. 小米蓝牙小音箱.
  6. 无线网络环境.
  7. 去官方网站下载最新的 Raspbian 系统并且通过 win32_diskimager 烧录到你的 TF卡

好了,万事俱备, 只欠500万,接下来直接进入主题,插上电源,等待RPI开机后,系统中通过点选 wifi 图标先连入网络,然后打开一个终端,执行下面的命令进行更新和安装蓝牙软件:

sudo apt-get  update

sudo apt-get  -y  install  –no-install-recommends bluetooth

sudo service bluetooth status

检查是否有蓝牙服务,如果没有就再重启一下设备。或者用下面的命令尝试扫描一下:

hcitool scan

我之前还尝试了使用blueman,那个在图形上设置更加方便。

sudo apt-get  -y  install  bluetooth  bluez  blueman

但是我更倾向于这样设置:

蓝牙配对

如果看不清楚就看这里:

sudo  bluetoothctl

然后进入bluetooth的交互界面输入

agent  on

default-agent

然后开始扫描

scan on

当找到你的蓝牙设备后,执行配对就好了。

pair  B8:78:2E:12:0F:29   #这里要根据你实际情况选择.

这里输入你的蓝牙的MAC地址,就是类似B8:78:2E:12:0F:29这种

如果要用蓝牙音箱,记得使用blueman,那个有图形界面可以在图形上选择audio的输出方式,可以找到你的蓝牙设备,然后选择成为输出设备,然后就可以用我写好的python爬虫来进行音乐的搜索和播放了。

git  clone   https://github.com/yoyojacy/52Pi.git

cd  52Pi/

python   music.py

第一次执行的时候可能时间比较长,因为在更新系统和安装mplayer,不用担心,通过后就可以看到提示了,输入歌名或者歌手的名字就可以听到歌曲了。如果还想调整一下音量大小可以用:

alsamixer

然后按上下键调整就好了,最后记得ESC退出。

最后,转发的童鞋请注明出处! 谢谢~