超低予算でRaspberry Pi 3/4をハードウェアシンセサイザー化する


総予算1万円以下でRaspberry Piをシンセサイザーにする。

用意するもの

Raspberry Pi 3 - 3,990円
ブレッドボード - 332円
PCM5102基板 - 1,050円
OLED基板 - 550円
5pin DINソケット - 60円
フォトカプラー PC900V - 213円
ジャンプワイヤキット - 1,055円
ジャンパワイヤ オス-メス - 633円
電子工作部品セット - 1,980円
(使うのは抵抗 220Ω x2、ダイオード 1N4148 x1、セラミックコンデンサ 0.1μF x1)

総額 9,863円 (納期重視国内調達の場合。Ali Expressで揃えればもっと安くなる)

製作

ブレッドボードに部品を載せる。上記の部品はこの写真に載っているものと多少違うかもしれないが、細かいことは気にしない。接続に関しては下記の通り。

PCM5102基板

VCC - 5V
GND - GND
LCK - GPIO19
DIN - GPIO21
BCK - GPIO18

OLED基板

VCC - 5V
GND - GND
SCL - GPIO3 (SCK)
SDA - GPIO2 (SDA)

MIDI IN回路

VCC - 3.3V (←5Vではないので注意!)
DATA - GPIO15 (UART RX)

回路としては下記なのだが、AMEIのサイトにあるMIDI INの回路の「2番ピンは0.1μFのコンデンサを介してGNDに接続する」をしないとオーディオ回路が正常に動作しなかった。

Qiita

実際の回路は写真のような感じ。この例ではフォトカプラーにH11L1、OLED基板は128x64のタイプを使っている。

ソフトウェア動作確認

MT32-piを使ってしまおう。基本はSDカードにコピーするだけ。mt32-pi.cfgを下記のようにエディット(変更部分のみ)。

mt32-pi.cfg
# mt32:      Use mt32emu (Munt) for Roland MT-32 emulation
# soundfont: Use FluidSynth for SoundFont synthesis
default_synth = soundfont

# Set audio rendering chunk size (samples).
# Values: 2-2048 (256*)
chunk_size = 64

# Select an initialization sequence for the DAC.
# pcm51xx: for DACs based on PCM5121 or similar (e.g. PCM5141, PCM5242)
i2c_dac_init = pcm51xx

# Select LCD driver.
# ssd1306_i2c:  Small I2C-based OLED graphical display (usually 0.96")
type = ssd1306_i2c

課題

ブレッドボードによっては上記の通り組んでもオーディオがブリブリのノイズだらけになってしまうことがあった。また、同じブレッドボードでも、オーディオ基板を置く位置によって正常に鳴ったり鳴らなかったりしたこともあった。この辺、グランドをしっかり取るとか対策が必要なのかもしれないが、なにぶん当方ハードウェアに関しては知識ゼロなので解決できないままです。