MIDIインタラプタ
タマゴさんですよ。こんにちはこんにちは。
先日の工陵祭ではたくさんの人にお越しいただきました。
差し入れを下さった方々本当にありがとうございます。
さて、テスラコイルで演奏するのに必要なMIDIインタラプタについてちょっと書いておきます。
今頃需要があるかわかりませんが。これからテスラコイルを作って演奏しようと思っている人向け。
そもそもなぜテスラコイルで音階が出せて演奏ができるのか
工陵祭のときも最も多く質問されました。さすがにこれくらいは知ってるよ!っていうひとは読み飛ばしてくださいね。
音というのは空気の振動です。一秒間に振動する回数を周波数と呼び、これが少ないと低い音が聞こえ、多いと高い音が聞こえます。
テスラコイルが放電が発生させた瞬間、空気中に衝撃を与え、空気を振動させます。
これを短い間隔で何度も繰り返します。放電のON-OFFを繰り返すという制御をするわけです。
すると、空気が振動する間隔も短くなり、周波数が高くなり、高い音が発生します。
つまり、放電を断続的に発生させ、一秒間にN回放電を繰り返すと、Nヘルツの音が聞こえるということです。
音階の周波数を出すように制御させることで、演奏が可能になります。
例えば261.626ヘルツの音は「ド」、440.000ヘルツの音は「ラ」だったりします。
そして、パソコンやキーボードなどから出力するMIDIを、テスラコイルのON-OFFを制御するための矩形波パルスに変換してくれるのが、MIDIインタラプタというものです。
和音を出す仕組み
和音とは複数の音階が同時に鳴っている状態の音です。
テスラコイルを放電させる時間は非常に短くする(数十μ秒~数百μ秒間)ので、デューティ比の小さい矩形波パルスを出力します。
そのため、それぞれの音階の波形を単に重ねるだけで2値信号でも和音を表現することが可能になります。
以下の図は例として「ド」と「ソ」の和音の波形を示します。
パルス幅が常に一定だとすると、高音や、音を多く重ねた和音は、デューティ比が大きくなります。
作例
私が製作したMIDIインタラプタは8bitマイコンのPIC16F1827を使用しています。
4和音まで出せます。
めっちゃスカスカで適当ですが気にしないでください。
CソースファイルとHEXファイルはこちら
詳しくはREADMEを参照してください。
CCPやタイマなどのモジュールは使ってないので、UARTが使えてクロックが32MHzに対応しているPICならなんでも使えると思います。
仕組みとしては、MIDIを入力するとUARTの割り込みを入れてMIDIデータをデコードし、パルスをある間隔で出力するだけです。
PICからはワンショットパルスを出力するだけなので、タイマIC555を用いて、パルス幅を可変する回路を追加します。
以下に回路図を示します。
フォトカプラで機器側と絶縁することはMIDIのお約束です。
しかし、この回路だけでは問題があります。
以下の図のように、555からのパルス出力がOFFになる直前にPICから再びパルス入力があったとすると、555からのパルス出力が余計に伸びてしまいます。
インタラプタのパルスが長いと、テスラコイルがONになる時間が延びてしまい、過電流が流れてしまう恐れがあります。
よって、以下のようにパルス幅制限回路を設けます。
555出力のパルス幅をパルス幅制限回路における制限幅より少し長めにとり、パルス幅制限回路で、最終的なパルス幅を固定するのがよいでしょう。
また、パルス幅制限回路は、インタラプタ側ではなく、テスラコイルの制御回路側に実装することをおすすめします。
とまあMIDIインタラプタについてはこんな感じです。
プログラムに何か問題点などがあったら報告してくださると幸いです。。。
電子工作初心者のパワエレ幼女です。マジでド素人なので記事内容はあまり参考にしないほうがいいかもしれません。
はじめまして
もし宜しければ使用したハーフブリッジやフルブリッジのゲートドライバの回路図や工夫した点の解説の記事が見たいです。
このMIDIインタラプタをプログラムをお借りして作ってみました。MIDI出力のあるピアノを繋いで、短時間(0.1s程度)だけ鍵盤をはじくとPICの出力がバグる現象が起こるのですが、そちらでもこの様な症状はありましたか?
プログラムをお借りして同じものを作ってみました。MIDI出力のあるピアノに接続して使用してみました。ゆっくり弾く分には問題ないのですが、鍵盤をはじく(0.1s程度)とPICの出力がおかしな挙動をします。そちらでも同じような症状はありましたか?