« BOOX Poke3が出ています(2021/03/07追記) | トップページ | VIERA→REGZAリモコンコンバータの改良【2025/01/28後日談追記】 »

2020/11/03

HP 100/200LXのSNDファイルをArduinoで鳴らす

まずはお恥ずかしい訂正から。FRISKのケースにArduinoクローンを入れた様子ISPモードの追加について書いてきましたが、そこで写っていたラベルに派手なスペリングミスがあったのに全く気が付いていませんでした。
正しくはこちらになります:
Friskisp3a

さて気を取り直して、
秋月電子さんのサイトでたまたま圧電サウンダ(圧電スピーカー)を見かけて、電子工作の定番のひとつ電子オルゴールを作ってみようかなと思いました。ATmega328PやATtiny85を使った作品(一例)を眺めながら、音のフォーマットをどうしようかと考えて、HP 200LXのフラッシュに入れているアラーム用のSNDファイルを鳴らせると面白いと思いました。そしてざっと検索した限りでは見当たらなかったので、自分で作ってみた次第です。

HP 100/200LXのSNDファイルは、1995年ごろまでは基本的にc:\_dat\alarm.sndというファイルを用意してAppointments(非常に優秀なスケジューラ)のOptionsからAlarm BeepでCustomに設定し予定が来たら鳴るというものでしたが、みゅうさんがアラームデータ演奏プログラム playEXを発表されてから様相が一変しました。エンターテイメントとしてアラームを鳴らし、ときにはカラオケの練習などしたものです。このブログを見て下さっている方の中には、かつてNIFTY-ServeのFHPPCやFMIDIで共有されていたSNDファイルを今でも持っている(あるいは現役で鳴らしている)方もいらっしゃるのでは、と思います。そういうわけで、みゅうさんが定義されたMML(Music Macro Language)に準拠したプレイヤーを作ることにしました。
そしてArduinoの記述言語は元々C/C++をベースにしたものなので、うまいこと書いておけば他の処理系にも容易に移せるかもと思い、MMLデコーダの関数decMML()からArduino特有の部分を切り離しておいたつもりです。

書いたプログラムとサンプルファイルは、次のGithubリポジトリに掲載しています:
pado3/playMML: Arduino beep player for HP 100/200LX .SND file

実際にこれで演奏している様子はこちらです:
Playmmlt
…当初は圧電サウンダで鳴らしていたのですが、度重なるテストがやかましかったので、イヤホンを繋いでます…

ちなみにATtiny85では既にフラッシュがカツカツで、他の機能をほとんど付けられません(汗

何かお気づきの点などあれば、教えて頂けると幸いです。
ご利用は自己責任で。

パドラッパ from MacBook Air (2017)

【2020/11/04おまけ】
ATtiny85の出力を録音してみました:

曲は愛の挨拶、むすんでひらいて、チャルメラ、ピポ音、ボレロの順。長い音にノイズが乗るのは宿題です(汗

【2020/11/04おまけ2】
ATtiny85版の演奏終了後にパワーダウンモードに移行するようにしました。元々はアイドル電流880uAだったところ、0.4uAになりました。ソースと履歴はGitHubのリポジトリでどうぞ。

| |

« BOOX Poke3が出ています(2021/03/07追記) | トップページ | VIERA→REGZAリモコンコンバータの改良【2025/01/28後日談追記】 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« BOOX Poke3が出ています(2021/03/07追記) | トップページ | VIERA→REGZAリモコンコンバータの改良【2025/01/28後日談追記】 »