ジャパリオルゴールを作ってみた（紹介編）

![implemented](https://qiita-image-store.s3.amazonaws.com/0/30370/2d3f9493-f047-496e-30af-07e937abcfbc.jpeg)

🎄**この記事は [けものフレンズ Advent Calendar 2018](https://adventar.org/calendars/3071) 1日目の記事です**🎄

**Arduino Nano** と **YMF825Board** で演奏する電子オルゴール「**ジャパリオルゴール**」を制作しました。
完成までの過程を記録すべく、4記事に分けてジャパリオルゴールについて紹介していきます。

# 機能と特徴

<dl>
  <dt>YMF825Board によるFM音源ステレオ演奏</dt>
  <dd><p><a href="https://yamaha-webmusic.github.io/ymf825board/intro/" target="_blank">YMF825 (SD-1)</a> は同時発音数は16ボイス、1ボイスにつき4オペレータが使用可能なFM音源LSIです。YMF825 自体はモノラルですが、2つを同時使用してステレオ演奏を実現しています。</p><br/></dd>
  <dt>microSD から演奏データの読み出し</dt>
  <dd><p>基板背面に microSD モジュールを搭載しており、大量に演奏データを格納できます。演奏データは1曲1ファイルとなっており、microSD カードに演奏データのファイルをコピーするだけで簡単に追加ができます。</p><br/></dd>
  <dt>miniUSB または DCジャックで電源供給</dt>
  <dd><p>電源電圧は 5V で、USB または DCジャック から選択できます。DCジャックの場合、Arduino Nano に組み込まれているレギュレータにより 7～12V が入力できます。市販の9V電池も使用できます。</p><br/></dd>
</dl>

# 制作までの経緯

![ymf825board](https://qiita-image-store.s3.amazonaws.com/0/30370/59a8a9b3-b644-1457-3495-dd178fb9f972.jpeg)

昨年投稿した「[**YMF825を使ってFM音源でサファリメロディーを響かせてみた**](https://qiita.com/nanase/items/93df2fbb3dbb86da5b97)」にて既に、FM音源LSIを使った楽曲演奏は達成していました。ここで使用した [**YMF825Boardステレオ化基板**](https://sites.google.com/site/lostechmsx/home/products/ymf825stereo) は安価ながら音質も追求されており、演奏用途であっても十分な性能を持っています。

しかし、YMF825Boardステレオ化基板を使うにあたり、解決してみたい問題が出ていました。

<dl>
  <dt>可搬性（持ち出しやすさ）</dt>
  <dd><p>YMF825Boardステレオ化基板は単体では演奏できず、シーケンサが必要になります。大抵の場合はパソコンと接続して、シーケンサとなるプログラムを動かして演奏させます。<br />けものフレンズはファン同士の交流が多く、自分の作品を紹介する機会が少なくありません。ノートパソコンと基板を接続して歩き回るのは両手が塞がってしまいますし、常にパソコンと基板をセットで準備しなければなりません。</p><br/></dd>
  <dt>扱いやすさ</dt>
  <dd><p>シーケンサの実装次第ですが、パソコンはシーケンサとして使うにはオーバースペックです。基板を家の外から持ち出すときは演奏だけができればよく、楽曲編集のユースケースはほぼありません。</p><br/></dd>
</dl>

## おとのなるはこ

![おとのなるはこ](https://qiita-image-store.s3.amazonaws.com/0/30370/ba60318f-9751-5a8c-2443-7690503c32f1.jpeg)

そうして試作したのが「[**おとのなるはこ**](https://www.nicovideo.jp/watch/sm32977733)」です。これは YMF825Boardステレオ化基板 の上に Raspberry Pi Zero W をスタックさせ、さらにスピーカーも組み込んでしまおうという習作です。詳しくはリンク先の動画にて解説しています。

電源こそ外部供給だったものの、RasPi にシーケンサプログラムを作り、データ読み出しも兼ねて演奏しようという意図がありました。ところが、ユニバーサル基板の配線に不慣れな上にコネクタの接触不良も多く、さらには RasPi からのノイズがひどい状態でした。接触不良、ノイズ問題を克服すべく、まずは **プリント基板の設計術を身につける** アプローチをとりました。

## プリント基板で試行錯誤

それまでまったくプリント基板の作り方を知らなかったため、ハードウェアに詳しいフォロワーさんから、まずはオススメの CAD をいくつか教えていただけました。結果、ジャパリオルゴールに至るまで 3 種類の基板を制作しました。

|名称|画像|結果|
|---|---|---|---|
|JukeBOX 2.0|<img src="https://qiita-image-store.s3.amazonaws.com/0/30370/c82fa8e2-be92-0988-4cc7-5b3bdd3667e2.jpeg" width="300">| **失敗** 習作。部品の密度が高すぎ、実装に挫折
|JukeBOX 2.1|<img src="https://qiita-image-store.s3.amazonaws.com/0/30370/3dba9741-8fd0-52fc-5bc0-e2c8f31ddd0d.jpeg" width="300">| **失敗** フットプリントを間違える、パターンカット必須、激しいノイズなど
|miniBOX|<img src="https://qiita-image-store.s3.amazonaws.com/0/30370/b35fe503-63e3-2174-4963-15182081fd9d.jpeg" width="300">| **成功** ノイズ源の RasPi を排除し、演奏に必要な部品だけを厳選。PC接続必須
|JapariOrgel 1.0|<img src="https://qiita-image-store.s3.amazonaws.com/0/30370/9f4effe8-9cc1-f525-874d-c9e0a6f69813.jpeg" width="300">| **成功** Arduinoを採用してPC不要に。microSDも採用してストレージ問題も克服 |
|JapariOrgel 1.1|<img src="https://qiita-image-store.s3.amazonaws.com/0/30370/2d3f9493-f047-496e-30af-07e937abcfbc.jpeg" width="300">| **成功** 機能は変わらず、部品の配置とシルクミスを修正|

最初に失敗が続いているのは、ノウハウの無さが原因です。
部品を配置するためのパッド位置が不正だったり、極性が逆だったり、そもそもCADに慣れていなかったのも原因です。逆に成功した要因は、一度に大量の機能を載せるのではなく、的を絞って部品数を少なくすることで洗練させたためです。作ってみないとわからない、しかし発注したらやり直しが効かないプリント基板の難しさを学びました。

また、シーケンサとして Arduino を使い始めたのも洗練の結果です。ジャパリオルゴールにおいて Arduino は microSD カードからデータを読み出し、デコードして、演奏命令を YMF825 に伝えているだけです。

# ルール

ジャパリオルゴールに至る過程で、以下の3つのルール（要件）を定めました。

- **記録媒体を入れ替えて容易に曲を変更でき、動作にパソコンを必要としないこと**
  - PCM の演奏ではなく、その場でリアルタイムに波形合成される（大前提）
  - 持ち運びが容易である
- **作りやすく、見栄えもよいものをつくること**
  - 製作者本位にならないよう、部品は入手しやすいものを採用する
  - 部品未実装の基板だけでも作品として成り立たせる
- **可能な限り安価であること**
  - お金をかければ何でもできるが、その分 考えるべきことが多くなるため必要最低限で済ませたい

リアルタイム波形合成は大前提としました。FM音源が好きという理由もありますが、これが消えてしまうと、いわば単なるMP3プレイヤーを作ることになりかねないためです。

# 演奏の様子

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">ジャパリオルゴール Ver.1.1 で ようこそジャパリパークへ ～orgel ver.～ を演奏してみました。イヤホン端子からの出力を録音したものです。<br><br>緑と黄LEDがそれぞれ音源LSI（LchとRch）との通信時、赤LEDがmicroSDカードの読み込み時に点灯します。<a href="https://twitter.com/hashtag/%E3%81%91%E3%82%82%E3%81%AE%E3%83%95%E3%83%AC%E3%83%B3%E3%82%BA?src=hash&amp;ref_src=twsrc%5Etfw">#けものフレンズ</a><a href="https://twitter.com/hashtag/%E3%82%B8%E3%83%A3%E3%83%91%E3%83%AA%E3%82%AA%E3%83%AB%E3%82%B4%E3%83%BC%E3%83%AB?src=hash&amp;ref_src=twsrc%5Etfw">#ジャパリオルゴール</a> <a href="https://t.co/VK46XgtnxO">pic.twitter.com/VK46XgtnxO</a></p>&mdash; 七瀬 / リカオンのやべーやつ(EX) (@nanase_coder) <a href="https://twitter.com/nanase_coder/status/1044540313845424129?ref_src=twsrc%5Etfw">2018年9月25日</a></blockquote>

上記の動画はイヤホンジャックからの出力を録音したものです。

ジャパリオルゴールに至るまで、ハードウェアではプリント基板の設計・ファブリケータへの発注、ソフトウェアでは Arduino のスケッチ開発など、ハード・ソフト両面で様々な試みをしました。そのどれもが私にとっては初の試みでした。

それぞれ、どのような製作・制作過程があったかを詳しく解説していきます。

---

[ジャパリオルゴールを作ってみた（ハードウェア編）](https://qiita.com/nanase/items/70345256ce4163402f41) : **次の記事**

[ジャパリオルゴールを作ってみた（ソフトウェア編）](https://qiita.com/nanase/items/4e9c46f154fed15ac1bd)
[ジャパリオルゴールを作ってみた（未来編）](https://qiita.com/nanase/items/810ffc31de1380e321e1)