| ホーム |     私の電子工作作品集

025. 電子オルゴール

[ 初公開日:2013年7月7日 ]

 この電子オルゴールは、私のオリジナル作品で、その収録曲数が多いのが特徴です。 4K ワードのプログラムメモリを内蔵した PIC16F648A を使用し、 そのほとんどを曲データで使用しています。 2個の BCD コードスイッチで、自由に曲データの選曲指定ができます。


今回(2013年8月)プログラムのバグを修正したのを機に、ハードウエアの見直しをし、電源も電池駆動に改め、ケースに収納 して実用性を高めてみました。

■ 回路図 ■

| 回路図 (ElectOrgel.CE3) | ページトップ |

■ 収録曲と使用方法 ■

現在、この電子オルゴールの2個の BCD コードスイッチの値に割り当ててある曲データは、次表のとうりです。 娘が小、中学生だったころに使用していた、音楽の教科書等から譜面を拾って、次の曲をデータ化しました。 冒頭に書いたように、 4K ワードの PIC のプログラムメモリ中、現在使用中のメモリサイズは、プログラム、曲データを含めて約半分の 2K ワードにしか過ぎません。 この割合でいけば、まだ 20 曲以上は収録できる勘定になります。

次項に曲データの作り方を詳細しましたので、興味のある方はご自分で、お好きな曲データを作ってみたらいかがでしょうか? 勿論、 アセンブルをし直して PIC に書き込まないといけませんが・・・ すべて曲データを入れ替えれば、あなただけのオリジナルな電子オルゴールが 出来上がります。

BCD スイッチ値 曲  名
00 荒城の月
01 赤とんぼ
02 さくらさくら
03 君が代
04 黒田節
05 砂山
06 待ちぼうけ
07 野ばら
08 赤い川の谷間
09 マルセリーノの歌
10 旅愁
11 星かげさやかに
:
97 曲設定無し番号:エラーとして使用
98 全音階の再生テスト
99 全曲データの再生

使用方法は至って簡単で、希望する曲データが割り当ててある番号を、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つを指定しているのです。

ド# レ# ファ ファ# ソ# ラ#
28 29 30 31 32 33 34 35 36 37 38 39
Do Do_ Re Re_ Mi Fa Fa_ So So_ Ra Ra_ Si
1 オクターブ 2 オクターブ 3 オクターブ 4 オクターブ 5 オクターブ
12 24 36 48 60
Oct1 Oct2 Oct3 Oct4 Oct5


また、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月)プログラムのバグを修正したのを機に、ハードウエアの見直しをし、電源も電池駆動に改め、ケースに収納 して実用性を高めてみました。

■ 回路図 (2) ■

| 回路図 (ElectOrgel2.CE3) | ページトップ |

■ 電子オルゴール外観と内部の様子 ■

ケース上面写真 ケース裏面写真 ケース上蓋を外した写真
ケース右側面写真

| ページトップ |

■ プログラム ■

ハードウエアの変更を行いましたが、入出力の構成は 上記の旧回路図 と何ら変更はありません。 したがって、ソフトウエアもまったく 上記のプログラム と同じです。

現在の最新バージョン: Ver. 1.21  ( 2019/10/22 更新 )

■ プリント基板(2)パターン図 (部品面) ■

| プリント基板(2)パターン図 (部品面) (ElectOrgel2PC.CE3) | ページトップ |

■ プリント基板(2)パターン図 (ハンダ面) ■

| プリント基板(2)パターン図 (ハンダ面) (ElectOrgel2PC1.CE3) | ページトップ |

■ ケース加工図 ■

 使用したケースは、"秋月電子通商" 取り扱いの 通販コード "P-00358" ポリカーボネートケースです。


| ケース加工図 (ElectOrgel2CS.CE3) | ページトップ |


電源スイッチの取り付けについて

この電子オルゴールの作製において、実用性を高めるために、ケースにプリント基板、電池ボックス等のすべてを収納したのですが、使用したケースに 少々問題がありました。 小さいことはコンパクトで良いのですが、少しばかり小さかったようです。 そのため電源スイッチの取り付けに苦労をすることになりました。

こんなことはあまりお勧めできることではありませんが、下写真のように電源スイッチと電池ボックスを、かなり酷い方法で加工をしてしまいました。

電源スイッチは、そのままでは電池ボックスにぶつかって収納ができないため、使用しない端子をニッパーで切り取ってしまいました。 また使用する端子についても 当然ぶつかってしまうため、電池ボックス側のそのぶつかる部分をハンダ鏝先で溶かして、スペースを確保しました。

なお、使用した電源スイッチ用のスライドスイッチは、私の手持ちの中でパネル取り付け用では一番小さなものですが、7〜8年前に "千石電商" の通販で購入したもので、 メーカー、形名等は不明です。

加工前のスイッチの裏面端子の様子 加工後のスイッチの裏面端子の様子 ケースの右側面に取り付けた様子
電池ボックスをハンダ鏝先で溶かして加工 ケース内に収納後(スイッチの後方側) ケース内に収納後(スイッチの前方側)

■ 使用部品表 (2) ■

(主要部品: IC, トランジスタ等)

(データシート)
PICマイコン .................... PIC16F648A

| 部品表 | Excel ファイル (ElectOrgel_parts.xls) |

| ページトップ | ホーム |


Copyright (C) 2005-2023 やまもとみのる
初版:2005年2月18日、初公開:2013年7月7日、最終更新:2023年11月4日