はじめに
この記事は、限界開発鯖 Advent Calendar 2020の20日目の記事です。
FDDで演奏する方法を解説しています。
前回:Proxyを華麗にスルーしてWi-Fiを飛ばすには ネタモロ被りして急遽変えたのは内緒
次回:RISC-Vなんにもわからないけどベアメタル開発環境とか紹介してみる
とりあえずこれを見てくれ!
とりあえずこれを見てください。
Floppy Disks - Megalovania - Undertale (Remastered) - Youtube
FDDのクセに、めちゃくちゃエモい演奏ができていることがわかると思います。
FDDは中古で叩き売られててやっすいので、いい感じのおもちゃになります。
ビジュアル的に映えるので、文化祭の出し物とかにしても良いと思います。
なお、予算については、Arduino、FDD3台 (中古)、ジャンパ線でだいたい3000円ぐらいでした。
お前は誰
こるくといいます。
限界開発鯖とかいうヤバいプログラマーコミュニティーに所属している茨城の高専生です。
なお、筆者はハードウェアの知識は皆無です。かなり適当なことを口走っています。
マサカリなどありましたら**やさしくコメント**していただけると助かります。
おねがい
※これは書きかけの記事です!
随時記事内容をアップデートしていく予定です。
もう1度言いますが、筆者はハードウェアの知識は皆無です。
この記事は3年前に文化祭に出したときの曖昧な記憶を基に書いてます。
何が言いたいかと言うと、この記事の内容を実践してなんか損失を被った場合でも、責任は負えません。
必要なもの
ソフトウェア
-
Windows または Mac
- Windows、Macどちらでも動作しました(検証済み)
-
JavaDevelopmentKit (JDK)
- 11以上 8系ではエラーが出ますわよ!(1敗)
-
Arduino IDE
- TimerOneライブラリをインストールしておいてください
-
Moppy2 ControllGUI
- 今回のキモです、実際にMIDIを読み取り、それに従いArduinoに信号を送ります
-
Moppy2 Sourcecode
- 実際にArduinoがFDDを制御する際に使います
-
MIDIシーケンサー(任意)
- Dominoがおすすめ
-
演奏させたいMIDIのファイル
- 後述しますが、Moppy2にサンプルが付属しています
ハードウェア
-
Arduino
- Arduino UNOやESP8266などを推奨
-
USB-A オス USB-B オス ケーブル
- ArduinoとPCをつなぎます
-
FDD(1台以上)
- サイズは問い台ませんが、3.5インチがわかりやすい
-
電源
- PC電源や安定化電源など、DC 5Vが出れば大丈夫
-
大量のジャンパ線
- 新しく買うのならメスメス、 オスオスだけを買っておくといいでしょう
- なおメス端子が無いと詰みます
やっていき!w
ハードウェア準備編
といってもやることは配線です。
FDDのピンの見方
まず、接続するFDDをすべて背面が手前になるように置いてください。
画像のような状態で作業を進めていきます。
下の画像を見てください。
FDDのピンは、このように番号が割り振れらています。
配線!
Moppy2、Arduino Unoを用いれば、最大9台のFDDを接続することができます。
####1. 11番ピンと、12番ピンを接続する
Drive Select(B)を何らかの方法でショートさせます。
一番簡単なのは、ジャンパ線でつなげてしまう方法でしょう。
####2. 18番ピンをArduinoの2番ピン、20番ピンをArduinoの3番ピンに接続する
実際に制御を行うステップピン、ダイレクションピンをArduinoに接続します。
####3. 17番ピン、19番ピンをArduinoのGNDに接続する
####4. 電源を接続する
以下の画像を参考にしてください。
PCの電源が使える場合は、4ピン電源を接続すれば準備は完了です。
それ以外の電源を用意した場合、電源の1番右に**+5Vを、その隣にGND(負極)**を接続してください。
残りの2本は使いません。
####複数のFDDを接続する場合
複数のFDDを接続する場合でも、大まかな流れは変わりません。
ただ、2台目以降は手順2でArduino側に接続するピンが変わります。
1台目は18番ピンをArduinoの2番ピン、20番ピンをArduinoの3番ピンに接続しました。
2台目は、18番ピンをArduinoの4番ピン、20番ピンをArduinoの5番ピンに接続します。
このように、それぞれのFDDを18番をArduinoの偶数ピン、19番をArduinoの奇数ピンに接続していけばよいです。
7台目以降は、A0、A1...と続いていきます。
これでハードウェアの準備は完了です!
ソフトウェア準備編
JDK11以上、ArduinoIDE、TimerOneについては事前にインストールしてください。
ArduinoIDEの準備
ArduinoIDE、TimerOneがインストールされている前提で進めます。
- 公式のダウンロードページへ行きます
- 最新のバージョンを選択した後、**
Source code (zip)
**をダウンロード - zipファイルを解凍
-
Microcontroller/Moppy2-Arduino/Moppy2-Arduino.ino
をArduinoIDEで開く - プロジェクトを接続されているArduinoにUploadする
- 準備完了!
Moppy2のダウンロード
- 公式のダウンロードページへ行きます
- 最新のバージョンを選択した後、**
MoppyControlGUI-(バージョン).zip
**をダウンロード - zipファイルを解凍
-
bin/MoppyControlGUI.bat
を実行- このとき、11以上のJDKが入っていないとエラーが起きます
- こんなかんじの画面が開ければOK!
<img width=450 a
lt="fdd-melody.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542505/c833651d-d5cc-8a1f-78cf-fb7baaa479f9.png">
ついに演奏!
1. 接続されているArduinoのシリアルポートを選択します
#### 2. AddFileより、演奏したいMIDIファイルを追加します **先程ダウンロードした`MoppyControlGUI`の`samplesongs`中に、サンプルのMIDIが入っています。** #### 3. 演奏開始! **演奏したい曲をダブルクリックします**これで演奏が始まったと思います!
補足
演奏用のMIDIについて
(追記予定)
さいごに
あとがき
いかがだってでしょうか。今回は一般誤家庭に落ちているArduinoを使ってFDDを演奏する試みでした。
みなさんもこの機会に中古屋でFDDを購入して演奏してみてはいかがでしょうか。
なおここでは書きませんでしたが、どうやらラズパイを使う方法もあるようです。
実際にFDDを演奏してみると、メーカーや型番によって音が全然違うことがわかると思います。
和音やハーモニーなど、いろいろなFDDを使って試行錯誤して演奏してみてくださいね。
Special Thanks!
- FD-1165さん (FD-1165)
- 急な頼みだったのに懇切丁寧に教えてくれました
- フライさん (@loxygenK)
- Arduinoを買ってくれました
- [DIY] Faire de la musique avec un lecteur floppy et un Arduino
- Floppy Diskdrive pinout and wiring @ old.pinouts.ru
- Moppy2 Wiki
- FPGAでFDDコントローラを作る (1) ヘッド操作