からりおん
はじめに
なんか面白いこと無い?と常日頃から考えているそこの貴方! 紹介"からりおん"はプリンタを使った新しい楽器です。 電子ピアノやパソコンから送信された信号を受信し、 プリンタ内部のステッピングモータ×2を音程にあわせて駆動する事により音楽を演奏します。 MIDI規格に対応しているので、MIDI出力が可能なほとんどの電子楽器(ギター、電子ピアノなど)を接続して楽しむ事ができます。 システム![]() システム全体 ハードウェア
ステッピングモータとはパルスモータとも呼ばれ、信号を順序良く送る事で決められた角度(ステップ)毎に回転するモータです。 与えた信号と回転角度/速度が比例するためフィードバック制御を行う必要がなく、 構造が簡単で安価なので様々な場所で使われています。 欠点としては、高速回転には向かない、消費電力が大きい、 ステップ単位で回転するために回転速度に比例した振動(騒音)が発生するということがあります。 ステッピングモータの「制御がしやすい」という利点と、「速度に比例した音が発生する」という欠点をうまく利用したのが"からりおん"なのです。 ソフトウェア![]() 処理の流れ コントローラ基板上のマイコンはこのような流れで処理を行います。 バッファメッセージの解析などの重い処理を行っている最中にデータが来たらとりあえず貯めておいて、 取り出すときには最初に届いた物から使う仕組みです。 この仕組みがないとデータが来る度に処理をしなければならず、連続で来た場合に取り逃がす恐れがあります。 MIDIメッセージ解析MIDI信号に乗ってやってくる指令を「MIDIメッセージ」と呼びます。 代表的なMIDIメッセージには、鍵盤を押す(ノートオン)、離す(ノートオフ)、音程の連続変化(ピッチベンド)、 音量などの調整(コントロールチェンジ)、音色の変更(プログラムチェンジ)など沢山の種類がありますが、 "からりおん"はこれらの中からノートオン・ノートオフ、ピッチベンドだけを使用します。 タイミング値生成センサのチェックやMIDIメッセージ解析によって得られた結果に従って、 モータドライバへの送信タイミングを決める値を生成します。 モータコントロール信号出力
この処理は一定時間のタイマー割り込みごとに実行されます。(この周期がサンプリング周期となります。) テスト風景![]() ドライバ基板のテスト 紙送りモータの駆動テスト 演奏風景![]() 演奏中の様子(外装なし)
注: 紙を入れなくても動きます。 伴奏ユニット
MIDI入力のデバッグのために作った簡易MIDI音源が、手を加えていくうちにいつの間にか16和音+ピッチベンド(+エンベロープ(注))対応になっていました。
しかもデュアルプロセッサ(ただ単にマイコンが2つ)+オーバークロック(20MHz→27MHz)で最高40和音対応になってしまい、せっかくなので"からりおん"用伴奏ユニットとして公開します。
注: エンベロープとは音が出てから消えるまでの振幅のゆっくりした変化のことです。 今回は音が止まった後の余韻のようなもの(リリースタイム)の長さが音程に比例するというのを入れてみました。 この効果は無効にもできます。
回路のR3(可変抵抗)より右はアンプです。マイコンが2つの時はそれぞれ1kΩの抵抗を通してC1(C2)の前で繋げます。 プログラムは、入力されたMIDI信号を解析して発音ユニットへ渡し、 タイマー割り込み(サンプリング周期)ごとに20個それぞれのユニットの出力を合成したものをPWM出力することで和音を表現します。 MIDIメッセージ解析部のプログラムは、まずこちらで動作確認をしてから"からりおん"に移植しました。 演奏サンプルパソコンのシリアルポートからMIDIを出力するためのドライバ(シリアルMIDIドライバ)でMIDI信号を送っています。 接続すればMIDIピアノなどから鳴らすことも可能です。 | |||||||||||||||||||||||||||||||