| ホーム | 私の電子工作作品集 |
[ 初公開日:2013年7月7日 ] |
この電子オルゴールは、私のオリジナル作品で、その収録曲数が多いのが特徴です。 4K ワードのプログラムメモリを内蔵した PIC16F648A を使用し、
そのほとんどを曲データで使用しています。 2個の BCD コードスイッチで、自由に曲データの選曲指定ができます。 |
|||
今回(2013年8月)プログラムのバグを修正したのを機に、ハードウエアの見直しをし、電源も電池駆動に改め、ケースに収納 して実用性を高めてみました。 |
| 回路図 (ElectOrgel.CE3) | ページトップ |
現在、この電子オルゴールの2個の BCD コードスイッチの値に割り当ててある曲データは、次表のとうりです。
娘が小、中学生だったころに使用していた、音楽の教科書等から譜面を拾って、次の曲をデータ化しました。 冒頭に書いたように、
4K ワードの PIC のプログラムメモリ中、現在使用中のメモリサイズは、プログラム、曲データを含めて約半分の 2K ワードにしか過ぎません。
この割合でいけば、まだ 20 曲以上は収録できる勘定になります。 次項に曲データの作り方を詳細しましたので、興味のある方はご自分で、お好きな曲データを作ってみたらいかがでしょうか? 勿論、 アセンブルをし直して PIC に書き込まないといけませんが・・・ すべて曲データを入れ替えれば、あなただけのオリジナルな電子オルゴールが 出来上がります。
使用方法は至って簡単で、希望する曲データが割り当ててある番号を、2個の BCD コードスイッチで設定し、START スイッチを 押下するだけです。 すると、赤色の LED が約 0.5 秒間点滅後に、設定してある曲がスピーカから鳴り出します。 やがて曲の再生が終了すると、 再び LED が約 0.5 秒間点滅した後、次の指示待ちになります。 続けて希望する次の曲をコードスイッチで設定、START スイッチの押下を繰り返すことで、 いくらでも楽しむことが可能です。 また、曲の再生中に何らかの理由で中止をしたいような場合には、もう一度 START(STOP)スイッチを押下すれば、直ちに再生を中断して 同じく LED が点滅した後、次の指示待ちに戻ります。 上表で、番号 97、98、99 については例外で、通常の曲の再生とは異なった動作を行います。 番号 97 は、曲データとして設定が無い番号(上表では 12 〜 97 が該当)を指定して START スイッチを押下した場合に、エラーとしてユーザに喚起するために、"ピポッ、ピポッ、ピポッ" と3回 スピーカを鳴らします。 番号 98 は、次項でも触れているように、この電子オルゴールでは 88 音階の出力が可能で、その全音階の再生テストを行います。 番号 99 は、 この電子オルゴールに登録してある全曲データを、順番に再生していきます。 |
| ページトップ |
まず曲データは、次図のように2段階の構成となっています。 各曲データの先頭アドレステーブルと、実際の各曲データテーブルとから、
構成されています。 そして各曲データの先頭アドレステーブル(name_table)に登録した順番( 00, 01, 02, ..... )で、上表の BCD スイッチ値となります。 name_table retlw high kojyonotsuki ;00: 荒城の月 retlw low kojyonotsuki retlw high akatonbo ;01: 赤とんぼ retlw low akatonbo retlw high sakurasakura ;02: さくらさくら retlw low sakurasakura : : name_table_end次に、実際の各曲データテーブルについて説明をします。 この電子オルゴールの曲データテーブルは、1つの音符(または休符等)当たり、 2ワードで構成されます。 下図のように1ワード目の7ビットが "0" の場合は、そのデータが音符であることを意味します。 そして2ワード目でその音符の長さを指定します。 すなわち、 下図の L4 ビットを "1" に指定すれば4分音符を意味し、L8 ビットを "1" に指定すれば8分音符を意味することになります。 この電子オルゴールでは 88 鍵盤を想定し、それだけの音階を出すことが可能となっています。 左下表では基本となるその一部の音( ド(28) 〜 シ(39) )の、 12 音だけを抜き出してありますが、曲データを作成するときは3段目の Do 〜 Si を使用します。 そしてこれらの音以外を指定するには、右下表3段目の Oct1 〜 Oct5 を併用して、たとえば1オクターブ高い音を指定するには、Do + Oct1 のように表現し、また1オクターブ低い音を指定するには、 Do - Oct1 のように 表現します。 要するに 01 〜 88 の 88 鍵盤のうち、1つを指定しているのです。
また、1ワード目の7ビットが "1" の場合は音符以外を意味し、次図のようにヘキサで h'80' の場合には休符(Nn)になります。 この場合には音符の場合と同様に、2ワード目でその休符の長さを指定し、4分休符なり8分休符なりを指定することになります。 他に1ワード目がヘキサで h'c0' の場合には曲のテンポ(Xx)を指定し、h'c1' の場合には繰り返し(Rep)を指定し、2ワード目で それぞれの数を指定します。 [ 補足 ] ここでのテンポの指定は、一般の譜面で指定されている = 60 のような数値を指定するのではなく、下図の tempo の値を意味しています。 それでは実際に、曲 "赤とんぼ" を例にして、上記で説明した各要素を書き込んだものが次の譜面です。 また、これを曲データとしてプログラミングしたものを以下に示します。 上記の譜面とは若干異なってはいますが、メリハリをつけるために 少々の休止を挿入してあります。 ; <<< 赤とんぼ >>> akatonbo retlw Xx ;テンポ retlw 45 retlw Rep ;繰り返し retlw 2 retlw Do ;ゆ retlw L8 retlw Fa ;う retlw L8 retlw Nn retlw Lx retlw Fa ;や retlw L4 | L8 retlw So ;け retlw L8 retlw Ra ;こ retlw L8 retlw Do + Oct1 ;や retlw L8 retlw Fa + Oct1 ;け retlw L8 retlw Re + Oct1 ;| retlw L8 retlw Do + Oct1 ;の retlw L4 retlw Re + Oct1 ;あ retlw L8 retlw Fa ;か retlw L8 retlw Nn retlw Lx retlw Fa ;と retlw L4 retlw So ;ん retlw L4 retlw Ra ;ぼ retlw L2 retlw Nn retlw L4 retlw Ra ;お retlw L8 retlw Re + Oct1 ;わ retlw L8 retlw Do + Oct1 ;れ retlw L4 | L8 retlw Re + Oct1 ;て retlw L8 retlw Fa + Oct1 ;み retlw L8 retlw Re + Oct1 ;た retlw L8 retlw Do + Oct1 ;の retlw L8 retlw Re + Oct1 ;| retlw L8 retlw Do + Oct1 ;は retlw L8 retlw Ra ;| retlw L8 retlw Do + Oct1 ;い retlw L8 retlw Ra ;つ retlw L8 retlw Fa ;の retlw L8 retlw Ra ;| retlw L8 retlw So ;ひ retlw L8 retlw Fa ;| retlw L8 retlw Nn retlw Lx retlw Fa ;か retlw L2 retlw Nn retlw L4 retlw 0そして、1つの曲データの終了を示すために、retlw 0 を必ず最後に付け加えます。 ちなみにこれを忘れると、プログラムは暴走状態になってしまいます。 |
| ページトップ |
前バージョン(Ver. 1.20)には、致命的なバグがありました。 お詫びいたします。 |
現在の最新バージョン: Ver. 1.21 ( 2019/10/22 更新 ) |
| プリント基板パターン図 (部品面) (ElectOrgelPC.CE3) | ページトップ |
| プリント基板パターン図 (ハンダ面) (ElectOrgelPC1.CE3)
| ページトップ |
(主要部品: IC, トランジスタ等) | (データシート) | ||
PICマイコン | .................... | PIC16F648A | |
三端子レギュレータ | .................... | TA78L005AP | |
トランジスタ | .................... | 2SC2120 |
| 部品表
| Excel ファイル (ElectOrgel_parts.xls) |
Finale NotePadとは .....
http://www.finalemusic.jp/products/notepad/index.php
このページの譜面は、Finale NotePad を使用して作成しました。
| ページトップ | ホーム |
上記の旧ハードウエアの プログラム 欄に記したように、前バージョン(Ver. 1.20)には、致命的なバグがありました。 また、ハードウエア的にも実験的なプリント基板のままで、使用性が悪く、とても実用的と呼べるものではありませんでした。 そこで、今回プログラムのバグを修正したのを機に、8年半ぶりにハードウエアの見直しをし、リニューアルです。 電源も電池駆動に改め、ケースに収納して実用性を高めてみました。 |
|||
今回(2013年8月)プログラムのバグを修正したのを機に、ハードウエアの見直しをし、電源も電池駆動に改め、ケースに収納 して実用性を高めてみました。 |
| 回路図 (ElectOrgel2.CE3) | ページトップ |
|
| ページトップ |
ハードウエアの変更を行いましたが、入出力の構成は 上記の旧回路図 と何ら変更はありません。
したがって、ソフトウエアもまったく 上記のプログラム と同じです。 |
現在の最新バージョン: Ver. 1.21 ( 2019/10/22 更新 ) |
| プリント基板(2)パターン図 (部品面) (ElectOrgel2PC.CE3) | ページトップ |
| プリント基板(2)パターン図 (ハンダ面) (ElectOrgel2PC1.CE3)
| ページトップ |
使用したケースは、"秋月電子通商" 取り扱いの 通販コード "P-00358" ポリカーボネートケースです。 | ケース加工図 (ElectOrgel2CS.CE3) | ページトップ | 電源スイッチの取り付けについて この電子オルゴールの作製において、実用性を高めるために、ケースにプリント基板、電池ボックス等のすべてを収納したのですが、使用したケースに 少々問題がありました。 小さいことはコンパクトで良いのですが、少しばかり小さかったようです。 そのため電源スイッチの取り付けに苦労をすることになりました。 こんなことはあまりお勧めできることではありませんが、下写真のように電源スイッチと電池ボックスを、かなり酷い方法で加工をしてしまいました。 電源スイッチは、そのままでは電池ボックスにぶつかって収納ができないため、使用しない端子をニッパーで切り取ってしまいました。 また使用する端子についても 当然ぶつかってしまうため、電池ボックス側のそのぶつかる部分をハンダ鏝先で溶かして、スペースを確保しました。 なお、使用した電源スイッチ用のスライドスイッチは、私の手持ちの中でパネル取り付け用では一番小さなものですが、7〜8年前に "千石電商" の通販で購入したもので、 メーカー、形名等は不明です。
|
(主要部品: IC, トランジスタ等) | (データシート) | ||
PICマイコン | .................... | PIC16F648A |
| 部品表
| Excel ファイル (ElectOrgel_parts.xls) |
| ページトップ | ホーム |