検索キーワード「MML」に一致する投稿を関連性の高い順に表示しています。 日付順 すべての投稿を表示
検索キーワード「MML」に一致する投稿を関連性の高い順に表示しています。 日付順 すべての投稿を表示

2025年7月18日金曜日

FAMIC on USBという音楽系ガジェット(小さなマイコンボード)を試してみる

電子工作をやっている方にはおなじみかもしれませんが、マルツ(マルツエレック株式会社)のオンラインショップ(←店舗の方にもよく行きました)で、「FAMIC on USB」というMML(Music Macro Language)でプログラムできる音楽系ガジェット(小さなマイコンボード)の取り扱いが始まったとの情報があり、使いそびれていたポイントが少し残っていたのもあって迷わず購入してしまいました。今回購入したのは、FAMIC on USB本体とデータを記録させるためのFAMIC WRITERがセットになっているもので、PRIORISという会社が開発したもののようです。

MMLについては、数年前にも当Blogで紹介したことがありました。IchigoJamを楽器のようにするプログラムを作って、キーボードで演奏したときに使ったのがMMLでした。今回は、FAMIC on USBを動かすための「(FAMIC on USB)MML Playground」を使って、ブラウザー(「Google chrome」を使用)からFAMIC on USBを操作します。MMLがよくわからなくても「MML Command Reference」が使えるので、あてにならない自分の記憶とネットの情報を探しながら使ってみることにしました。そもそも、MMLについては公式な規格が存在しないようで、MMLで動かせることを謳っていても、実装具合が微妙に違うことがあるようです。かっちりした規格があった方が安心してプログラムを作れると思う反面、ゆるさも魅力の一つではある(何なら自分でもいろいろなものに実装可能だということにもなるので)かなとも思います。

さて、本題に戻ります。FAMIC on USBに電池駆動のアンプ内蔵ステレオスピーカー(YAZAWATVR35WH)をつないで音出し実験をしてみたいと思います。chromeブラウザーを動かすのは、愛用のMacBook Proです。公式サイトには、Linuxにも対応しているようなことが書かれていましたので、自作PCLinux Mintからでも制御できると思います。PCなどと接続するためのUSBケーブルは付属していませんでしたが、FAMIC on USB側のUSBコネクタの形状は、USB-Cで接続できる形状になっています。自宅にはUSB-A←→USB-Cケーブルがいくつかありますが、電源供給用のものやUSB2.0までしか対応していないものなどもあって、どのケーブルなら使えるかわかりませんでした。とりあえず、USB3.0対応のUSBケーブルを使うことにして、動作確認をやってみることにしました。

今回は、FAMIC WRITERも同時に購入しているので、こちらも載せて一緒に動作確認していきたいと思います。ガイドとしてオフィシャルWebサイトで紹介されているYouTube動画を参考にしながら作業を進めていきました。プログラムを始める前に、FAMIC on USBにFAMIC WRITERを載せます。ピンを曲げないように気をつけて、しっかりと奥まで挿し込みました。次に、先ほど紹介したアンプ内蔵スピーカーを接続して電源をONにしておきます。あとはMacBook ProとUSBケーブルで接続すれば聞き覚えのある音(名前から想像して…)が鳴って接続されたことがわかりました。

接続した状態からchromeブラウザーを開いて、「MML Playground」にアクセスします。「Ch. 1」のところに「CDEFGAB>C」と入力して、ウィンドウの下方にある「▷(再生)」ボタンをクリックします。すると、MacBook Proにつないでいるスピーカーから音が出ました。ここで、音声出力の設定を「FAMIC WRITER」に切り替えます。(この後は、MML PlaygroundでプログラムしてFAMIC on USBに書き込んだもの以外の音を出すことはできないので要注意です)ウィンドウの上方にある「FAMIC WRITE」ボタンをクリックすると、この設定がFAMIC on USBに書き込まれて、その後は電源さえあれば設定された通りの曲が流れるようになります。

プログラムした曲を別のファイルで保存しておきたい場合は、「Download」ボタンをクリックするとjsonファイルで保存することができます。これは、「Upload」ボタンをクリックして読み込むことも可能です。また、「Examples」ボタンをクリックすると、いくつかのサンプルプログラムが選べるようになっていて、MMLの書き方を学ぶこともできるようになっています。FAMIC on USBを持っていななくてもMML Playgroundでプログラムすることはできる(その場合は、PCなどのスピーカーからも音が出せる)ので、作り込んで鳴り方を確認することができます。

活用のアイデアとしては、この環境で音楽を作ってFAMIC on USBに流し込んだら、電源とアンプ−スピーカーだけで音が出るので、「呼び込みくん」のようなものをオリジナルで作ることもできます。他のマイコンボードとも組み合わせると、更に活用の幅が広がるのではないかとも思いました。

2025年9月25日木曜日

FAMIC on USBを試してみる~Linux Mintでも使えるかやってみる

以前の続きです。「FAMIC on USB」というMML(Music Macro Language)でプログラムできる音楽系ガジェット(小さなマイコンボード)を使ってみています。これまでは、MacBook ProGoogle chromeを使った動作確認をしてきましたが、今回はLinux Mintで動かしている自作PCでも動作確認をしておきたいと思います。

使っていてわかってきたこと(どこかに明記されているかも…)ですが、仕組みとしては、DACのようにPCから音声出力する仕組みを利用してデータの書き込みを行っているようなので、DACのように認識されてしまえば理論的にはLinuxでも使えると思います。今回の動作確認には、自作PCのUSB 3.0ポートにUSB 3.0対応のケーブルを挿して、そこにFAMIC on USBをつないで検証します。今回もYAZAWATVR35WH(電池駆動のアンプ内蔵スピーカー)を使って音が出るか確認します。

Linux版のGoogle chromeで「MML Playground」にアクセスしてMMLでプログラムを作ります。普段は、ヘッドホン出力をBluetoothで飛ばしてスピーカーから音を出しているので、プログラムが完成するまではスピーカーから音を出して確認します。以前からやってみたかった「呼び込みくん群馬電機株式会社製)」の曲を再現してみました。(耳コピですけどね)音の長さをどう表現するか少し悩みましたが、「MML Command Reference」も参考にしながらそれらしいプログラムを作りました。
#著作権等を考慮して、プログラム自体の公開は控えておきます。

いよいよFAMIC on USBを接続してみます。USB 3.0ポートにUSB 3.0ケーブルでつなぐと、予想通りDACと同じように自動的に認識されて、「Analog Output FAMIC WRITER」と「Digital Output (S/PDIF) FAMIC WRITER」として認識されました。デフォルトで「Analog…」の方が選択されるようなので、そのまま「FAMIC WRITE」ボタンをクリックしました。緑のLEDが点灯して、書き込まれている感じになりましたが曲が流れず、リセットボタンを押すともともとプログラムされていた音が流れます。ならばと思い「Digital…」の方でもやってみましたが、結果は同じでした。

この後、挿し込むUSBポートを2.0の方にしてみたり、USBケーブルを2.0対応のものに替えてみたり、書き込むデータを「Example」から選んだものにしてみたりといろいろと試行錯誤してみましたが、どのパターンでも書き込むことができませんでした。挙動としては、緑のLEDが2回点灯するので、書き込もうとしていることはわかるのですが、青のLEDの方は全く反応していないように見えます。

うまくいく方法はないものかと「歯車(設定)」アイコンをクリックして、「WRITING SPEED」を「9600 baud」から「4800 baud」に変更してみました。ダメ元で「FAMIC WRITE」をクリックして書き込みを試みると、青のLEDも点灯して無事に書き込むことができました。「WRITING SPEED」を「4800 baud」にした状態でUSBポートとUSBケーブルの違いを再度検証してみましたが、USBポートやUSBケーブルの問題ではなく、単に書き込み速度(ボーレート)の問題だったことわかりました。

Linuxでの使い方にはちょっと工夫が必要ではありますが、使えることがわかってホッとしました。MMLでのプログラミングについては、もう少しスマートにわかりやすく書けるようになりたいと思いました。自己満足の世界ではありますが、昔ファミコンで遊んだゲームの音を再現して遊んでみるだけでなく、ファミコン音源(のようなもの)で様々な楽曲を演奏できるのが面白いと思いました。

2025年8月8日金曜日

FAMIC on USBの動作環境を検証する

以前の続きです。「FAMIC on USB」というMML(Music Macro Language)でプログラムできる音楽系ガジェット(小さなマイコンボード)を使ってみています。このFAMIC on USBにはUSB-C端子が載っていて、USBケーブルでPCとつないで使います。USB-Cが使えるUSBケーブルには様々なバリエーションがあって、自宅にも様々なUSBケーブルがあります。ケーブル自体に規格が明記されているものもあれば、何も書かれていないもの(こちらの方が多い)もあって、どんなUSBケーブルなら使えるのか検証をする必要があると感じました。

ということで、USBケーブルの規格を確認するために、「USBコネクタケーブルチェッカー(←Amazonの商品ページ」を使うことにします。このチェッカーは、USBケーブルのコネクタの結線状態を確認するもので、各種USB規格への対応状況を確認することができます。コネクタの形状や色だけでは判断できない場合や挙動がおかしいUSBケーブルがあった場合には、これを使って状態をチェックすることができます。

検証には、MacBook Proを使います。これには、普段から8 in 1のUSB-Cハブを挿して使っています。詳細は不明ではありますが、vigoole(←Amazonのストアサイト)と書かれていて(メーカー名?…ブランド名?…)、型番は「SC202」となっています。これを使ってMacBook ProのUSB-CポートをUSB 3.0ポート*2、USB 2.0ポート*1、4K HDMIポート*1、RJ45 Ethernet LANポート*1、100W PD充電ポート*1、SDカードリーダー/Micro SD/TFカードリーダー*各1に変換しています。今回は、このUSB-Cハブを使って動作するか確認するとともに、MacBook Proに直接つないで動作するかも確認したいと思います。

〈USB-Cハブ使用〉

  • USB-A(3.0)ポートからFAMIC on USB
    • USB-A(3.0)←→USB-Cケーブル…OK(前回の動作実験環境)
    • USB-A(2.0)←→USB-Cケーブル…OK
  • USB-A(2.0)ポートからFAMIC on USB
    • USB-A(3.0)←→USB-Cケーブル…OK
    • USB-A(2.0)←→USB-Cケーブル…OK

※このUSB-CハブのUSB-Cポートは、充電用なのでデータ通信等には使用できません

〈MacBook Pro直挿し〉

  • USB-Cポート
    • 両USB-C(SS USB10…3.1)ケーブル…OK
    • 両USB-C(2.0)ケーブル…OK

検証は、macOS版のGoogle chromeを使用して、「(FAMIC on USB)MML Playground」にアクセスしています。いずれの規格でも、使えることがわかりました。検証する中で、不具合があるUSBケーブルが数本見つかったので、いさぎよく処分しました。ケーブル類をためてしまいがちな生活をしているので、片付けられたのもよかったです。(^^;;;

〈参考〉
新たなるUSBケーブルチェッカーをレビューする

2022年11月13日日曜日

IchigoJamを楽器として使うことはできるのか

ScratchPicoBoardで楽器を作る活動(平成20年度21年度←PDFがダウンロードされます)からプログラミング(フィジカル・コンピューティング)の授業を本格的に始めた私としては、Scratchを活用して楽器を作って演奏したり、シーケンサーのように音楽を自動で奏でたりすることを学習活動に取り入れたいし、欲を言えばMIDIなどのインターフェイスを介して外部入出力にも対応させて、様々な楽器をコントロールするところまでやらせてみたいところです。(Extensionを作っている人はいるらしい)

しかし、多くの人が経験している(?)ように、Scratchで曲を演奏させるというのはそう単純なことではなく、遅延やズレなどがなくうまく演奏させるためにはかなり工夫しないといけません。小学校の学習活動として子どもたちに取り組ませるとなると、子どもたちにとってもハードルが高く、かなりの下準備が必要です。

そんな折、そう言えばと思い出したのがIchigoJamでした。その安さと電子工作好きが講じて、手元にはIchigoJam系のものが10個以上(そんなにあって何に使うの?というツッコミはなしで)があります。そこで、このIchigoJamを楽器として使うことはできないかやってみることにしました。(以前、ファームウェアのアップデートをしていたのは、こうした需要があったためでした)

今回使ったIchigoJamは、圧電スピーカーが組み込まれているIchigoJam SSkyBerryJam栃木県立栃木工業高等学校の生徒さんが作ったもの=自宅には赤との2種類ともあります)です。参考にしたのは、「IchigoJamで音を鳴らしてみよう」です。

言うまでもありませんが、BEEPやPLAYコマンドで音を鳴らす方法では、簡単に音が出ました。SNDとGNDに別の圧電スピーカーをつないでみると、基板に組み込まれている圧電スピーカーと同時に音が出ました。

〈音を出したコマンド例〉

  • BEEP 1 〜 255
    ※1〜255までのいずれかの数値を入力すると音が出る。1が一番高く、数値が大きくなるにつれて低い音になる。
  • PLAY “C” 〜 ”B”
    ※MML(Music Macro Language)によりプログラムできる。C(ド)〜B(シ)までの12音のいずれかを入力するとその音が出る。半音上は「+」、音符の長さは「数値」(2=二分音符、4=四分音符…)、「T数値」はテンポ、「O数値」は音域(オクターブ)の設定ができる。連続した音をプログラムすることができるので、楽曲の演奏も可能。

耳で確かめた感じだと、「BEEP 60,30」と「PLAY “C”」が同じ音かなというところ。単音なので、この程度ならScratchでやっても同じかなと思いました。曲の演奏にも挑戦してみましたが、IchigoJamの方がテンポやリズムに安定感があるように思いました。(音程は?)音を出す仕組みがScratchとは全く違うから、楽器のベースにするのはIchigoJamの方が向いているのかもしれません。(電子工作好きの個人的な感想かもしれませんが)

さて、圧電スピーカーから音が出るということは、何らかの電気が流れているということなので、その正体がわかれば楽器への応用が可能かどうかもわかりそうです。テスターとかオシロスコープとかで調べてみたいと思います。(テスターはすぐに使える状態だけど、組み立てキットで購入したオシロスコープが不調で調整が必要なため、すぐにはできませんorz)

DTMへの道として和音が鳴らせると良いなと思って調べてみると、PanCakeを使った「4和音ミニDTM」というやり方や「PWM機能による2和音」というやり方もあるようで、だんだん沼にハマっていく予感がしています。一方で、MIDIインターフェイスへの出力が可能という情報もあり、IchigoJamから他の楽器をコントロールすることもできそうです。

2023年1月3日火曜日

IchigoJamでPS/2キーボードを鍵盤のように使うプログラム

以前前回の続きです。この実験を続けているうちに、音を出すたびに「PLAY "C1"」コマンドを書いて実行するのが面倒に感じるようになりました。すぐに思いつくのは、IchigoJamにつないでいるPS/2キーボードを鍵盤のように使うことです。そこで、「IchigoJamチップチューン!? PLAY文とMMLで音楽演奏」を参考に、PS/2キーボードを鍵盤のように使って音を鳴らすプログラムを作ってみました。

110 K=INKEY()
119 IF K=ASC(”A”) PLAY “O2A-”
120 IF K=ASC(”Z”) PLAY “O2A”
121 IF K=ASC(”S”) PLAY “O2A+”
130 IF K=ASC(”X”) PLAY “O2B”
140 IF K=ASC(“C”) PLAY “O3C”
141 IF K=ASC(“F”) PLAY “O3C+”
150 IF K=ASC(“V”) PLAY “O3D”
151 IF K=ASC(“G”) PLAY “O3D+”
160 IF K=ASC(“B”) PLAY “O3E”
170 IF K=ASC(“N”) PLAY “O3F”
171 IF K=ASC(“J”) PLAY “O3F+”
180 IF K=ASC(“M”) PLAY “O3G”
181 IF K=ASC(“K”) PLAY “O3G+”
190 IF K=ASC(“,”) PLAY “O3A”
191 IF K=ASC(“L”) PLAY “O3A+”
200 IF K=ASC(“.”) PLAY “O3B”
210 IF K=ASC(“Q”) PLAY “O4C”
211 IF K=ASC(“2”) PLAY “O4C+”
220 IF K=ASC(“W”) PLAY “O4D”
221 IF K=ASC(“3”) PLAY “O4D+”
230 IF K=ASC(“E”) PLAY “O4E”
240 IF K=ASC(“R”) PLAY “O4F”
241 IF K=ASC(“5”) PLAY “O4F+”
250 IF K=ASC(“T”) PLAY “O4G”
251 IF K=ASC(“6”) PLAY “O4G+”
260 IF K=ASC(“Y”) PLAY “O4A”
261 IF K=ASC(“7”) PLAY “O4A+”
270 IF K=ASC(“U”) PLAY “O4B”
280 IF K=ASC(“I”) PLAY “O5C”
281 IF K=ASC(“9”) PLAY “O5C+”
290 IF K=ASC(“O”) PLAY “O5D”
291 IF K=ASC(“0”) PLAY “O5D+”
300 IF K=ASC(“P”) PLAY “O5E”
410 GOTO 110

「ASC」でキーボードからの入力を文字コードに変換し、「INKEY」に入れて「PLAY」で音を出すという仕組みです。ネットでいろいろ調べてみると「C」のキーを「C(ド)」に当てている例が多かったので、それに習ってプログラムしてみました。出来上がったプログラムを「SAVE0」で保存して、使うときに「LOAD0」で呼び出せるようにしました。
(「プログラムのほぞん」を参考にしました)

ところどころ不具合があって、何度かやり直しをしましたがようやくまともに動くプログラムになりました。音痴なところは「仕様」なのでとりあえず我慢することにします。