PIC製作は初めてなので、簡単かつオリジナリティーあふれるものを・と考えた結果、
電子オルゴールを製作することになりました。
電子オルゴールと言っても簡単なビープ発音を音程にしただけです。
← 部品面
早速組み上げました(爆) テスト基板上なので、いびつでデカくなってます・・
クロック周波数は10MHz(表水色のセラロック)です。
水晶発振子とコンデンサの組み合わせのほうが精度がいいですが、ローテクなんで・・
(周波数が要なのに・・・)
← ハンダ面
使用する入出力は13ポートのうちのたった1ポート(出力)のみです。
あとは、MCLRとブザーに10KΩの抵抗、整流のために0.1μFのコンデンサ
電源は9V整流化→5V動作が一般的ですが、3V(単三電池2本)を直接つないでいます。
ちゃっかり電池も100円均一もの、電池ボックスは拾い物です。
最近では100円で3Vボタン電池2個買えるんですね〜・・
というわけで、本当に無駄を省いたワイルドな形ですね^^;>
プログラムはルーチンを用いた単純なシーケンス処理のみということで、アセンブラを選びました。
ビープは一番再現の簡単な矩形波(方形波)を選びました。
← 信号のON・Offを繰り返すことにより赤い波のような信号を再現するというしくみです。
矩形波でも再現する方法はいろいろありますが、今回は
(A)と(B)の距離、つまりウェイトの数を調節することにより、周波数を調節しています。
ウェイトの数と周波数は相関を持っているものの、このような曲線を描いています
MS-EXCELの分析ツールも結構役立ちます^^>
ウェイトの数を調節すると、ON/Offの回数では実際の音の長さが計れないようになります。
それで無理やり長さを調節する手間がかかりましたT T
最高音を設定し、そのON/Off回数分との誤差を引くといった修正です。
数値的な問題で、使用する音域は設定しなければならなくなります。
●・・というわけで
完成!聞いてみてください。
原曲はオリジナル、「TACHY March (C)TACHY TA-MIDI-Project」
PICオルゴール用に最適化されています。
私が初めて作った電子音です^^
技術的にはまだまだですが、オリジナリティーはあふれているでしょう?
まさに、世界にたった一つと言えるものです^^
(もっとコンパクトにできたらな〜)
主なスペック
音色数 | 矩形波1音(電子音^^;>) |
同時発音数 | 1音(和音対応させたいです) |
最大ノート数(目安) | 約160音(TachyMarchだと約54秒) |
最高周波数(理論値) | 1760Hz(A6)(計算上の周波数) |
〃 (感覚値) | 4435Hz(C#8)(実際耳に聞こえる周波数) |
最低周波数(理論値) | 196Hz(G3) |
〃 (感覚値) | 494Hz(B4)(その誤差なんと長3度と1oct!) |
分解能 | 2.93〜373.57(t=120,(理)D5を最高音として) |
周波数最小単位 | 1.3853Hz((理)C4を基準として) |
ベロシティ | 未対応(周波数によってまちまちです。) |
ピッチベンド | 半対応(ループ使って無理やり入れる^^;) |
これらの値は、音域やテンポの設定により、多少変化します。決して一定ではありません。
分析・考察・課題
Fviewによる出力結果です。
TQTのページhttp://hp.vector.co.jp/authors/VA029289/
音階が見えるWavプレイヤーFview
[Click]をクリックしてみてください。
実際耳に聞こえる音階とプログラミングした音階は1オクターブと長3度の差があります。
しかし、プログラムの段階にトランスポーズで補正すればなんとかなります^^;
課題点
・最大ノート数の少なさ
音符データの容量である最大ノート数は、設定できる周波数やタイミングの単位を符号化することに
よって上げられるでしょう。
現在、周波数は数値指定で、最小で1.3853Hz単位で調節できてしまいます。
だから、こういったことも可能となります。
これでピッチベンドも再現できそうですね・・
ウェイト補正なしでできる限り最小の単位で並べてみました。わかりやすくするように、全体的に表現可能分解能373.57(t=120)の10倍のウェイトを入れています。
曲線になっている理由は、設定数値と周波数との関係のほかに、
周波数によりウェイトの数が少なくなり、音の長さ自体が短くなっていることがあります。
こんなブザーのようなものもできます。
・実は、休符が無い・・
空ループで作れますが、作るの忘れてた・・(爆)
ローテクキーワード
総開発費2000円以下(電子オルゴール部品代は約600円)
単音電子オルゴール
無駄な多段階調整
アセンブラによるシーケンス処理
<< HOMEに戻る