※このサイト内の情報は一切保証されません。参考にする際はすべて自己責任となります。
2023/07/02 Misskeyリンクの追加(内容に変更ありません)
2023/02/11 アクセスカウンタ・アクセス解析タグ入れ替え(内容に変更ありません)
2020/09/13 HTMLタグ修正(内容に変更ありません)

目次

1. 概要
2. パーツ
3. 回路
4. 製作
5. 実験
6. あとがき
7. 参考にさせていただいたサイト・情報

1. 概要

Intel 8254を使用したBeep音再生装置(以下、8254Beep)を過去に製作しましたが、制御にはFT245RLを使用し、専用のプログラムとドライバを必要としました。
当初、8254Beepの目的は、64bit版WindowsでオンボードのIntel 8254(チップセット内互換機能)へアクセスできないものを代替することでした。
したがって、マイクロコントローラを回路上に積むことはしませんでした。
しかし、その目的は達成されたので、今度は、マイクロコントローラを使用して、MIDI音源として簡単に制御できるようにしてみました。
マイクロコントローラには様々な製品がありますが、今回は、簡単にUSB経由でプログラムができるArduino UNO(互換品)を使用することにしました。

2. パーツ

8254Beep音再生装置をそのまま流用します。
MIDIインタフェースは、純正品のArduinoであれば不要なのですが、互換品ではMIDIクラスでUSB接続ができないため、MIDIインタフェースを使用しています。
抵抗1kΩはMIDIインタフェースからのデータ線のプルアップ用です。信号線は5mAのドレインが規定されているので、5V/5mA=1kΩです。
なお、回路や製作の項でも書きますが、本来MIDIインタフェースと回路を直結してはいけません。
実験として、一時的かつ、MIDIインタフェース・母艦PCその他周辺回路・機器の破損を想定の上で、自己責任で行っています。
製作の際は、必ずフォトカプラを間に入れて信号をMIDIインタフェースから回路に流してください。

3. 回路



回路はいたって簡単で、ArduinoのPORTDの2-7番ピンとVcc/GNDを、FT245RLの1-6番ピンとVcc/GNDに対応するICソケットにジャンパ線で接続するだけです。
MIDIインタフェースは5番ピン(切り欠きを上にしてメスコネクタを見た時に左から2つ目)が信号線なので、これをArduinoのRxD端子に繋ぎます。MIDIはカレントループ方式なので、プルアップします。
ドレインされたときが論理0なので、ArduinoのRxDから見れば正論理になります。
もう一度言いますが、本来、MIDIでは、フォトカプラを介したアイソレーションが規定されています。
プルアップ抵抗での直結は絶対に真似してはいけません。

4. 製作

回路の項で書いたようにArduino・8254Beep・MIDIインタフェースをジャンパ線でブレッドボードを介して接続します。
何度でも言いますが、MIDIインタフェースからプルアップでの他の回路への直結は絶対に真似しないでください。
実際に製作をする場合は、MIDI Manufacturers Associationが示すように、フォトカプラを必ず使用してください。
8254Beepの、FT245RLが挿入されていたICソケットは丸ピンICソケットなので、そのままジャンパ線が安定して挿入できます。
なお、MIDI側の+5V(4番ピン)とGND(2番ピン)は使用しません。特にGNDに関しては開放あるいはコンデンサを介した接地が規定されています。

5. 実験

MIDIインタフェースと8254Beepの間にArduinoを経由するため、実験にはプログラムが必要になります。
といっても、プログラムも、USB-8254ボード用制御プログラムを流用しています。
出力をFT245Rではなく、ArduinoのPORTDに書き換えて、MIDI信号を受ける関数を追加しています。
MIDIを受ける関数自体も、ライブラリが用意されているので、それを利用すれば簡単にMIDI信号を受けられます。
プログラムはこちらです。Arduino IDEのスケッチからそのままコピーしたものなので、そのままスケッチに貼り付けてください。
コンパイルにはMIDIライブラリが必要です。GitHubのReleasesから入手できます。

実際にUM-2G->Arduino->8254Beepでデモ演奏をした様子を以下に貼り付けます。

動画中で、ICソケットに刺さっているジャンパピンの1つに黄色みの虫クリップが繋がれていますが、これはスピーカのグランド線です。

6. あとがき

この製作・実験を行ったのは2年前の7月ですが、東雲保管庫にまとめるのをすっかり忘れていたので、思い出しながら記事にしました。
そのため、必要・重要な事項が抜け落ちているかもしれません。
8254Beepの記事のあとがきでは、「マイクロコントローラを使用しない」ということに重きを置いていました。
しかし、今回はMIDI音源化するということが主目的なので、マイクロコントローラに頼りました。
つかってみると、C/C++で記述できるので、移植作業も1日かからずに終わり、動作まですんなりたどり着きました。(若干MIDIライブラリの使い方に苦戦しましたが)
SMFのほうが、DAWなどのツールが豊富で、MML記述をコンパイルするよりも、直感的に作ることができ、簡単に音楽を再生できるので、鳴り物製作としてはこちらの方が使いやすいかもしれません。

・・・えっ、矩形波生成もArduinoでやればいいじゃないかって?

えー、その、それは・・・・・・冗長万歳!^^;;;;;;;
(Arduinoをもっとちゃんと使う人なら、矩形波どころかPCM音源を作ってしまうでしょう)

最後にもう一度。
絶対に、MIDIインタフェースの出力信号を、フォトカプラを介さずに回路へ直結しないでください。

7. 参考にさせていただいたサイト・情報


上へ
戻る