PICの基本動作から応用プログラムまでを学びます。

ホーム
16F18313
16F18325
16F18346
16F1619
Curiosity
---
---
    
12F1822
16F1455
16F1459
18F14K50
18F26J50
dsPIC
その他
オルゴールデーター作成 Windows プログラム
2022-01-04

 

目次

  1. プログラム概要
  2. アプリのダウンロード・インストール
  3. 新規作成 曲テンポと拍子の指定
  4. 音符の配置
  5. 曲の再生
  6. 楽譜の編集
  7. 楽譜のデータ出力
  8. 楽譜の保存
  9. 楽譜データ仕様
  10. 電子オルゴール製作例
  11. [動画] アプリの使い方

 

1 プログラム概要

Visual C# 2019 を使い、PC画面上で4和音のオルゴール楽譜を作成し、PIC用データに変換するWindowsアプリケーションを作成しました。 最下段の B7_PICOrgelData.zip を解凍し、オルゴールデータ作成.exe をダブルクリックしてください。 下の様なデータ作成用ウインドが現れます。

画面上にマウスで音符を配置し、PIC用データ「書き出し」ボタンを押すと4和音オルゴールプログラム用のgakufu.h ファイルが作成できます。 PICにMPLAB経由で書き込めばPICからの演奏を楽しめます。作成した楽譜の内容は、PC内蔵のMedia Playerを起動しPCスピーカーからの音でPIC書込み前に確認することができます。

このWindowsアプリケーションの操作概要は以下の通りです。

 1 ファイル:
作成した楽譜を、専用フォーマット(拡張子.pgf )で、保存、ロードすることができます。圧縮ファイルの中に、赤い靴とハッピーバースデーの楽譜を保存したものが同梱されています。「開く」ボタンをクリックし、読み込んでください。
 2 楽譜名前 :
PIC用, 配列データに、コメントとしてこの内容が記録されます。
 3 音符キー:
矢印:
楽譜上の音符等をクリックし、そのままドラッグすると移動できます。また、音符等に合わせダブルクリックすると、その音符を削除することができます。
音符のない場所をクリックし、ドラッグするとその範囲内の音符を選択することができます。選択された音符は、まとめて編集することができます。
ト音記号、ヘ音記号
新規楽譜にはト音記号が配置されています。。ヘ音記号に変更するときは、変更したいパートのト音記号を矢印ボタンを押し削除してから、ヘ音記号を配置します。なお、この記号は初めのページに設定すると以降の全てのページに同じものが設定され、曲の途中で変更することはできません。
拍子記号:
新規楽譜には4/4拍子が配置されています。他に変更するときは、変更したい拍子マークのあるボタンをクリックすると全てのパートの拍子記号が変更されます。この記号は、曲の途中で変更することはできません。
音符:
配置する音符ボタンをクリックし、五線譜上にカーソルを移動すると選んだ音符がカーソルに付いてきます。配置場所で、クリックすると音符が固定され楽譜画像にも反映されます。位置を修正するには、音符等をクリックし、そのままドラッグすると移動できます。間違えたときは「矢印ボタン」で消去します。
休符:
配置する休符ボタンをクリックし、五線譜上にカーソルを移動すると選んだ休符が五線譜中央に移動します。配置場所で、クリックすると固定され楽譜画像にも反映されます。位置を修正するには、音符等をクリックし、そのままドラッグすると移動できます。間違えたときは「矢印ボタン」で消去します。
臨時記号:
音符と重ならないように配置します。配置位置から、小節の終わりまでその高さの音を半音変化させます。
調号:
臨時記号を最初のページの拍子記号の右横(楽譜上部▽マークまで)に配置すると調号と判断され、全てのページに反映されます。曲の途中で変更することはできません。
 4 表示:
画面に表示するパートを変更します。 一つのパートだけを選んだ場合は、1画面に4行(4ページ分)が表示されます。
 5 相対音量:
主旋律を基準に、他のパートの音量を調整します。右端が100%、左端が消音です。
 6 MediaPlayer演奏:
指定パートをPCのMediaPlayerで演奏します。全体を演奏するか表示しているページだけを演奏するかを選ぶことができます。
 7 PIC用データー:
4和音のオルゴールで使用する p1gkf[ ],p2gkf[ ], p3gkf[ ], p4gkf[ ], 配列データとしてファイルに書き出します。PIC MPLAB X プロジェクトに保存しコンパイルしてください。データ形式は「word」を選びます。
 8 テンポ
楽譜の演奏テンポを入力します。
 9 小節番号と小節内演奏時間:
楽譜の上段には、小節番号が表示されています。各小節内の音符演奏時間をモニターしており、既定の長さに満たない場合は、「- 未完 -」。既定の長さを越えた場合は、「- 超過 -」と、赤で表示されます。
10 ページ:
楽譜のページを移動します。

 

2 アプリのダウンロード・インストール

B7_PICOrgelData.zip をダウンロードし解凍してください。解凍すると、アプリプログラムの他に MediaPlayer用のライブラリプログラム2本とサンプル用の楽譜3本が同梱されています。楽譜データはどこに移動しても構いませんが、ライブラリプログラムはオルゴールデータ作成アプリと同じフォルダー内に置いてください。

オルゴールデータ作成.exe をダブルクリックするとデータ作成用ウインドが現れます。

楽譜作成プログラム B7_PICOrgelData.zip

 

3 新規作成 曲テンポと拍子の指定

オルゴールデーター作成 アプリをダブルクリックしてプログラムを実行すると、新規作成画面が開きます。デフォルトでは、主旋律の一音だけの五線譜が4行表示されています。

作成する楽曲の楽譜を手元に準備しておくとスムーズに楽譜データの作成ができます。この動画では、「カエルの合唱」を例にして電子オルゴール用のデータを作成します。

はじめに、曲の演奏速度(テンポ)を五線譜の左上の記入欄にキーボードから値を入力します。曲の拍子は、上部に並んでいいるアイコン一覧の中から希望の拍子アイコンをマウスでクリックしてください。クリックするだけで五線譜に拍子記号が書き込まれます。

 

4 音符の配置

ここから、音符を五線譜に配置する作業に入ります。

配置する音符の記号を上部のアイコン一覧から選びマウスでクリックします。クリック後にマウスを五線譜上に移動すると、マウスポインタが選択した音符記号の形状にかわります。配置する五線譜の位置でクリックすると、音符がその位置に固定され配置完了です。同じ種類の音符を配置するのであれば、連続して、配置する位置をクリックすれば、OKです。

 

5 曲の再生

ある程度音符を並べたら、間違いがないかPCから音を再生させて確認します。注意深く音符を配置したつもりでっも意外とミスを犯しているものです。配置後に再生してみるとミスを発見しやすくなります。

 

6 楽譜の編集

マウスを使い五線譜上の音符を選択し、移動、削除、置き換え、コピーなどが可能です。同じ旋律を繰り返す場合など、大いに作業の時間短縮になります。

例えば、第一、第二小節に配置した音符全体を,第三、第四小説にコピーするには、

 

7 楽譜のデータ出力

曲を打ち込み終えたら、書き出しボタンをクリックすれば、マイコン用のデータに変換し、gakufu.h 形式で任意の場所に保存することができます。

 

8 楽譜の保存

作成した楽譜情報は、保存ボタンでオルゴールデーター作成アプリの専用ファイルフォーマット(拡張子 .pgf)で保存ができます。

作業の中断や後ほど変更が予定される場合には、こまめに保存することをお勧めします。

 

9 楽譜データ仕様

電子楽器の分野で有名な電子フォーマットに、MIDI があります。しかし、MIDIフォーマットをそのまま利用するには、PICにはメモリー容量などのハード面の制約が大きく現実的ではありません。

そのため今回はこのプログラム独自の楽譜フォーマットを作成しました。独自の楽譜フォーマットには、このプログラムで演奏する必要最低限の情報が書き込まれるので、PICの内臓メモリーだけでも充実した演奏を可能にしています。

最低限必要な情報

電子楽譜に必要な情報は、各音符(休符も含む)の音階と演奏時間の二つしかありません。これらを各 8bits の計 16bits (1 word) で表現することにしました。

音の高さ

音階は、半音ずつに別れ、「ド」から「シ」まで、12段階でオクターブになります。これらに番号を振れば、一意に音符の音の高さを電子的に取り扱うことができます。中央の「ド C4」を基準として「60 (0x3C」番にします。これは、MIDI と同じです。

また、音の高さ「0」の音符は休符を意味します。

音の長さ

音符は、二分音符、四分音符、八分音符、十六分音符 とその長さが、半分ずつになります。基準単位を設けて、四分音符は8単位、八分音符は4単位・・・とします。

楽譜の独自フォーマット

音階は、16bits (1 word) で表現し、MSB 8 bitが音の高さ、 LSB 8 bitが音の長さを表します。

   | 76543210| 76543210|
   |    高さ     |   長さ     |

楽譜の情報は、"gakufu.h" に、ある、unsigned int 配列 「p1gkf」に記述します。

 

実際の曲と"gakufu.h"

実際の曲と"gakufu.h"を並べて比較してみます。

const unsigned int p1gkf[] = {
    120, // カエルの合唱
    0x3C08,0x3E08,0x4008,0x4108,0x4008,0x3E08,0x3C10,0x4008,
    0x4108,0x4308,0x4508,0x4308,0x4108,0x4010,0x3C08,0x0008,
    0x3C08,0x0008,0x3C08,0x0008,0x3C08,0x0008,0x3C04,0x3C04,
    0x3E04,0x3E04,0x4004,0x4004,0x4104,0x4104,0x4008,0x3E08,
    0x3C10,
    0xFFFF,
    0xFFFF,
};
			

 

10 電子オルゴール製作例

以下のプログラムで、このアプリせ作成した楽譜データをそのまま利用することができます。

PIC16F1459 主旋律のみ  [オルゴール]
PIC16F1459 四音同時演奏 [和音オルゴール]
PIC16F1822 主旋律のみ  [オルゴール]
PIC16F1822 四音同時演奏 [和音オルゴール]
PIC16F18313 主旋律のみ  [オルゴール]
PIC16F18313 四音同時演奏 [和音オルゴール]
PIC16F18325 主旋律のみ  [オルゴール]
PIC16F18325 四音同時演奏 [和音オルゴール]
Arduino UNO 主旋律のみ  [オルゴール]

 

 

11 アプリの使い方[動画]

このページで説明した概要を動画にまとめました。参考にしてください。