MIDIファイル解析の良いサンプルを見つけた

MAESTRONは、MIDIファイルをRASPI側に置き、演奏データの形にしてPICに渡そうと考えています。PICは表現に関する情報(クレッシェンドとかレガートとか)に基づいて受け取った演奏データを加工(強弱、長さ、演奏タイミングetc.)して、MIDI音源に出力します。


先ずはMIDIファイルを読み取って演奏データを抽出するプログラムが必要なのですが、良いサンプルを見つけました。これ(↓)です。

Simple Analysis

JAVAで書かれているので、RASPIへの移植も簡単にできそうです。

先人達の仕事に感謝!

 

 

NoClassDefFoundErrorって何だ?

Raspiにリモート・デスクトップ接続したPC上で、PICのプログラムはC、RaspiのプログラムはJAVAを使って開発しています。現在開発中のSing-A-Ringもこんな感じです。一番上がRaspiのデスクトップで、後ろにNetBeansとMPLAB-Xのウィンドウが隠れています。

f:id:RASPI-PIC-CLUB:20170517163514j:plain


JAVA Swingで書いたGUIアプリは、リモート・デスクトップ接続したPCの画面にも表示されるので重宝しています。ただし、JAVAが得意な訳では無いので、Google先生のお世話になることもしばしばです。

 

今回は、新しくHex関数を使ったところで”NoClassDefFoundError”が起きました。早速、ググってこちら(↓)の説明を見つけました。

java.lang.NoClassDefFoundError

<以下引用>

 NoClassDefFoundErrorは、通常のメソッド呼出し、あるいはnew式を使った新しいインスタンスの生成で Java VMまたはクラスローダがクラス定義をロードしようとしたとき、クラス定義が見つからない場合に  スローされるものです。
 現在実行中のクラスをコンパイルする時点では存在していましたが、その後見つからなくなっている場合などがあります。

 

ふむ!

 

どうやら、コンパイル環境にあった”org.apache.commons.codec”が実行環境には見つからなかったようです。Raspi上の実行環境(/opt/samba/bcmlib_for_java/example)を覗いてみると・・・

 

ビンゴ~、org.apache.commons.codecが有りません。(<==喜んでいる場合ではない)

 

あれこれ不具合に遭遇しても解決策がすぐに見つかるのは、ネット上に多くの情報が蓄積されているJAVAならではなのかもしれません。

 

表面実装部品を使った分圧回路

2.54mmピッチのコネクタのピン間に2012がぴったり収まるって、知ってましたか?こんな感じ(↓)です。

 

f:id:RASPI-PIC-CLUB:20170514170452j:plain

ユニバーサル基板に2.54mmピッチのコネクタを差して、表面実装部品(2012サイズの抵抗)を2個並べてみました。説明用なのではんだ付けしていません。

 

Sing-A-RingとMaestronの接続基板の下で、同じことをやっています。

f:id:RASPI-PIC-CLUB:20170514170410j:plain

基板を組み立ててから、超音波センサーの出力(5V信号)をPIC32(3.3V動作)に入力するには分圧回路が必要だということに気付き、慌ててコネクタの下に先の分圧回路を組み込んだのです。

知っていて損の無い技だと思います。


注意すべきことが一つあって、はんだ付けしたコネクに後から表面実装部品を取り付けようとしても、上の写真のように奇麗には並びません。今回は、部品を後付けすることになったので仕上がりは酷いものです。orz

 

新たに開発環境を構築中

新しいPCが届いたので、Raspicの開発環境を構築することにしました。Netbeans、JDK8、MPLAB-X、xc8,16,32etc.をダウンロードしてインストールするだけなので作業は簡単です。

 

ただし、今回はWindow版とLinux版の開発環境を併せて構築する(どちらでもできるようにする)計画です。しかもLinux版は仮想環境なので上手くできるのかちょっと心配でした。が、特に問題もなく構築作業は完了しました。

使ったのはこれ(↓)です。

VMware Player 12

そこにubuntuこれ(↓)をインストールしました。

http://cdimage.ubuntulinux.jp/releases/16.04/ubuntu-ja-16.04-desktop-amd64.iso

 

手順に関してはこちらの方(↓)が詳しく記されているのでご参照ください。

Windows 10 でVMware Workstation Player With Ubuntu

やってみる前は、仮想環境にあるubuntuのネット接続がどうなるのか気になりましたが杞憂でした。設定を弄ることもなく(NAT接続設定のまま)するするとubuntuのインストールが進み、updateも時間こそ掛りましたが何事もなく完了しました。


仮想環境のubuntuと外部との間でイーサネット接続できたので、最近覚えた技(cifsマウント)を使い、ホストPCとubuntu間でファイルの受け渡しが出来るようにしました。これで、開発作業のバックアップ体制もバッチリです。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
(2017.05.14)
ホストPC上のフォルダであれば、cifsマウントしなくてもファイル共有できることを後で知りました。:-p

WindowsPCが壊れた

Sing-A-Ringを開発している最中に突然画面が消えて、WindowsPCがRestartし始めました。さらに、再起動の途中で再びRestartする始末!HDDにダメージが及ぶ前に慌ててパワーダウンしました。

このPCには前科があって、初めの頃は時々フリーズしてResetすると回復するという症状でした。電源を交換すると出なくなったので、電源装置の初期不良だったのだろうと考えました。ところが暫くするとまた同じ症状が出てきて、そのうちフリーズではなく、突然Restartする先の症状が現れるようになりました。

電源装置やマザーボードをクリーニングしたり、再度電源を替えてみたり・・・

有効と思われる対策をあれこれ施して、ダマシダマシ( 対策を施すと暫くは使えるようになる)使って来たのですが、いよいよ限界(対策しても改善せず)です。HDDが読めなくなる前に別のPCと交換することにしました。

で、先ずはこれ(↓)を手に入れました。

www.amazon.co.jp

壊れたPCのHDDを取り出してこれに差し、無事Raspiから読み出せることを確認し(raspiのUSBポートに差すだけで/media/pi以下にマウントされ)ました。他のPCからアクセスできるよう、SAMBAに登録してHatenaのパスワード(<==忘れてログインできなかった)etc.を読み出し、ようやくブログの更新ができるようになりました。
とりあえず、このブログはRaspiで書いてます。

早く代わりのPCが届かないかなぁ~

 

 

 

Maestronを組み上げた姿を写真に収めた

Maker Faireの応募には3点の写真を添付します。Sing-A-RingとMaestronの写真は既に用意したので、展示状況を説明する資料として、Maestronを組み上げた様子を撮ることにしました。

こんな感じです。

f:id:RASPI-PIC-CLUB:20170429164317j:plain

端に少しだけ写っているPCはSing-A-Ringと共用で、セットアップ時に用います。他にアンプも必要なのですが、小さな(スピーカの後ろに隠れるくらいの)パワーアンプを用意する予定です。

Maker Faire Tokyo 2017の出展応募作品を製作中

去年はPICクラブの仲間達が(目出度く!)出展する運びとなり、有明にある東京ビッグサイトに8月6、7日の二日間通って、展示のお手伝いをしてきました。

(自分も応募して落選したのは内緒です)

今年もめげずに(懲りずに?)応募の準備を進めてきました。と言うか去年のMaker Faire 以来、ず~と構想を練っていたんです。

で、超音波センサーを使ったRaspic Theremin、Sing-A-Ring、Maestronで応募することにしたのですが、応募期限までにTheremin用の自作音源が出来そうもなかったので、あきらめてRaspic Sing-A-RingとMaestron(こちらは既存のMIDI音源を使います)で応募することにしました。

<Raspic Sing-A-Ring>

f:id:RASPI-PIC-CLUB:20170427154327p:plain

 

<Raspic Maestron モーツァルト側>

f:id:RASPI-PIC-CLUB:20170427154350p:plain
<同じく ベートーヴェン側>

f:id:RASPI-PIC-CLUB:20170427155204p:plain

超音波センサーの下にこんな(↓)インターフェース基板が入っています。

          f:id:RASPI-PIC-CLUB:20170427155930p:plain