PIC電子オルゴールに、クラシック曲を追加[2022年08月17日(Wed)]
PIC電子オルゴール Ver7_3に、新曲を追加
アニメの中でもよく使われる、クラシックの有名曲を追加していただいた。
アニメの中だけでなく、テレビCMや歌詞を付けてカバーされたりと、今もなお色あせないクラシックの名曲だが、果たしてオルゴールでその魅力が表現できるだろうか?
おもちゃクリニック ゆりかご ToyDr.わたなべ が挑戦してみた。
【PIC電子オルゴールVer7_3のリリース】
私が愛用している、つつじが丘おもちゃ病院「PIC電子オルゴール+音声再生」は、Dr.大泉さまにより日々進化している。
PIC電子オルゴール(orgel)をMPASMからpic−asへの移行作業が進行中だが、7月24日、orgel7_3(pic-as対応初版)がリリースされた。
pic−asへの移行が完了しているのは
・プロジェクトは orgel_1705.X のみ。
・音符データと音声データは orgel_1705.X に組み込んでいるもののみ。
今回の開発では、PIC電子オルゴールVer6_3をMPASMからpic-asへ移行したもので、機能上の変更は無いとのこと。
差し出がましくも、拙作の曲データについてバージョンアップのお手伝いをしたいと申し出たが、「ソングデータについては、渡辺さんのものも含めて 手入れ済みです。」との回答。いつもながら、仕事が早い!
MPASMとpic-asの非互換や、思わぬバグ発見など、移行作業でのご苦労は開発者のブログをご参照あれ。
【2022新曲を追加】
是非とも、新バージョン対応の新曲データを作ってみたいと、開発者のブログにコメントしたところ、「ソングデータの追加は楽しみ」との返答あり。これは、張り切るしかない。
いつもの「ゆりかご編」とは大違い、今回は交響曲などのダイナミックな曲が中心なので、演奏途中におけるベロシティの動的変更で音量に変化を与え、割とメリハリを効かせている。
今回の曲データ作成は、まるで交響楽団の指揮者の気持ちだった。
開発者からも、「いいですね。ベロシティの計算にはCPUを多く割いているのですが、このように効果的に使っていただくとPICも喜んでいると思います。」と好評。
【ダウンロード】
今回の拙作の曲データについても、オリジナルの PIC電子オルゴールVer7_3 に取り込んでいただき、最新版の公開フォルダ内に含まれている。
これで、「orgel_1705.x」プロジェクトのサンプルコード内にあるソングインデックスから、お好みの曲名を指定すれば即実装できる。あらためて開発者に感謝、ありがとうございます。
今回追加曲を含む曲目一覧表は「ドキュメント」フォルダ内に、「ゆりかご」曲目一覧PDFで整理されている。
なお、今回の新曲データを作る際にエクセルシート上で切り貼り作業を実施したが、それらは当方の共有ドライブで公開する。
特に音符データシートには、様々な音楽表現の苦労の跡がセルに色付けしたまま残っているので、興味のある方はぜひ覗いてみて欲しい。
なお、これらのプロジェクトは(拙作の曲データも含めて)、複製・改変・再配布は自由であることを、あらためて付け加えておく。
【参考情報】
せっかくの機会なので、採譜データ作成手順を備忘録としてメモしておく。
詳しくは、作業ZIPファイル中の 採譜データ(ブラームスの子守歌)をご参照あれ。
1) 採譜曲目の楽譜入手 "ピアノソロ初級用譜面"
2) 各パートの単音選定 "和音より動き重視"
3) 各パートを階名読み "あらかじめドレミ…を振る"
4) 音価テーブル作成 "使用する音価の一覧 cho_mac"
5) 音高テーブル作成 "使用する音高の一覧 on_mac"
6) 音符テーブル作成 "各音設定は1小節づつ作業 onp_mac"
7) ソースファイル作成 "音符ファイル、簡略な曲名で命名"
8) 曲目データを作成 "曲ファイル、TEMPOとKEYTRNS"
9) プロジェクトに追加 "asmファイルをsong.incに定義付"
SHEPARD音源と、enve_VIB波形
正弦波の基本波に、+2次+4次+8次を同レベルで合算して一つの音源波形にしたものが、SHEPARD音源の正体。
つまり、一つの音符に、実音+1オクターブ上の音+2オクターブ上の音+3オクターブ上の音も同時に重ねて作られている。(開発者からのレクチャー解説、以下同様)
また、エンベロープテーブルのオフセットがインクリされる周期[us]は、eps_mac値 ×env_mac値となる。(これが1サンプル)
エンベロープ波形 enve_VIB は、ビブラートの1周期(山+谷)を8サンプルにして、全体で32周期=256サンプル に設定されている。
eps_macパラメータは songデータで設定、
env_macパラメータは onpuデータで設定、
その乗算値で 揺らぎ速度を最適値に調整する。
(※最適値とは、ユーザーの「好み」に合せると言う方が正しい。)
パラメータの調整
例えば、聞きなれた「AOIMENO」で、推奨に従って次のとおり設定すると、、、
eps_macのパラメータ=1000 と設定、
env_macのパラメータ=23 と設定して計算すると、
1サンプル=23000[us]=23[ms]となり、
256サンプル=5888[ms]≒5.9[s]
エンベロープ波形全体では、約5.9秒間 に32回 ワウワウして音が消えることになる。
「AOIMENO」のように異なる音源の songデータがある場合は、各音源によって eps_macのパラメータが違っているが onpuファイルは共通なので、orgel7_3へ移行後も eps_macのパラメータは違いを保ったままにするのが妥当である。
SHEPARD音源の eps_macのパラメータを 1000に上げるならば、
SIN14音源の eps_macのパラメータも比例して 1263に上げれば良い。
そのとおりに試作してみた結果は、上手く行きました!
「AOIMENO」は、SIN14音源でも SHEPARD音源でも従前どおり再現できた。
次の曲データを作るときは、これを参考にしたい。
ただし、エンベロープの設定では事情があり、計算の過程で小数点以下を四捨五入して 整数値にしているので誤差が出る。非力なPICでは8ビット処理で精度が得られるように演算のスケーリングに配慮が必要とのこと。
ユーザー側でも計算上の誤差は承知のうえで(あまりシビアに考え過ぎずに大胆に動かして)、必ず実際に試聴して効果を検証しながら、パラメータを調整するようにしたい。
おもちゃ修理技術の情報交換は、コチラを ご参照ください。
https://blog.canpan.info/charts/category_17/
おもちゃリサイクルの活動報告は、コチラを ご参照ください。
https://blog.canpan.info/yurikago/category_6/
※おもちゃクリニックゆりかごは、 糸魚川市・糸魚川市教育委員会後援の 「おもちゃリサイクル普及啓発事業」です。
本物のビブラフォンでは、音板直下に置かれた共鳴パイプ上の円形羽根がモーターでゆっくりと回転して独特の「揺らぎ」が生み出されます。共鳴音が大きくなったり、小さくなったりで作られる揺らぎ音なので、どちらかと言うと、AM変調に近いかなと思いました。
「ビブラフォン風エンベロープ」とのネーミングはここから。
もし、FM変調のビブラート奏法だったら「バイオリン風」と呼ぶのかな?