FMPv4フォーマット解析
コンパイラでも作ろうかと思ってましたが、そのまま放置してしまいまして。
折角なので公開しておきます。不明な部分も多々あり、ほとんどの部分が未検証なのですが、
何かの手助けになれば…って何のでしょうね?
今回の手法はFMCに適当なMMLを入力、得られたファイルをバイナリ解析しています。
OVI フォーマット解析
00 : IDの位置(W)
02 : トラックAの位置(W)
04 : トラックBの位置(W)
06 : トラックCの位置(W)
08 : トラックDの位置(W)
0A : トラックEの位置(W)
0C : トラックFの位置(W)
0E : トラックGの位置(W)
10 : トラックHの位置(W)
12 : トラックIの位置(W)
14 : トラックJの位置(W)
16 : トラックKの位置(W)
18 : 0xFF
2E : クロックカウント定義? ( DEF 0x80 )
2F : 0x02?
30 : トラックAの位置(W)
32 : 音色 ( 長さ : 0x19 ) * 音色数
4B : トラックAデータ
nn : トラックK
nn : 0x00000000 (L)
nn : 0x00000080 (L)
nn : 0x00000080 (L)
nn : DOS 形式日付 (W)
nn : DOS 形式時刻 (W)
0xBF4D 23:58:26
0x0028 00:01:16
nn : 0x00 (L)
nn : 0x00 (L)
nn : 0x00 (L)
nn : 0x00 (L)
nn : $ - 0x10へのポインタ?
nn : MAGIC ID
コマンド
93
????(TRK K用?)
COMMAND
71 nn
音色選択
COMMAND
74
トラック終了
COMMAND
72 nn
音長
COMMAND
69
音量
COMMAND
E1
休符
もっとも多い長さ指定に割り当てることでデータを圧縮できる
音長無し音階:
80-8B : o1 c-b
8C-97 : o2 c-b
音長付き音階:
00-0B nn : o1 c-b
0C-17 nn : o2 c-b
MAGIC ID
0 : "FMCI"+0x00
プリセット音色は音色データとして埋め込まれるんですね。
音長指定無しで圧縮が出来たりするのもなかなか面白いなと思います。
dinguxのためのbuildrootによるrootfs構築方法
buildrootにより環境を構築することで、以下が可能になります。
1.rootfsの構築
2.linux kernelのコンパイル
3.hwinitなどのバイナリの構築
1はこのプロセスで行われ、
2と3は追加作業が必要になります。
(ここでは書きません…)
■必要なファイル
buildroot-2009.05-dingux.patched.tar.bz2
http://buildroot-2009.05-dingux.patched.tar.bz2
linux-2.6.24.3-dingux.tar.bz2
■基本環境
ネット接続環境
ubuntu 11.10を利用
VirtualBoxなどのVM利用をおすすめ
環境用HDDは空き容量20GB程度
ディスクイメージからのインストール&アップデート
■手順
まずは各種ツールのインストールです。
sudo apt-get install g++などとして、以下のツールをインストールします。
g++
bison
flex
gettext
patch
libtinfo-dev(terminfo)
subversion
libncurses5-dev
makeinfo(必要なら?)
次に、buildroot本体をダウンロード、
tar xjvfで解凍します。
buildroot.configを.configに上書きコピーします。
make menuconfigとして、
ESCを二回押し、設定を保存して終了します。
/optディレクトリのアクセス権限を変更します。
sudo chmod a+rwx /opt
linux-2.6.24.3-dingux.tar.bz2をダウンロード、
buildrootのフォルダ直下にdlディレクトリを作成し、コピーします。
そしてmakeを行います。
binariesフォルダにrootfsの生成物が、
/opt以下にコンパイラやライブラリ等の出来上がります。
■このbuildrootで変更されたもの
linux kernel、uClibc用のunidef.cに対するパッチが取り込まれた。
libmikmod.mkのパッチの自動化。
Tremorをsvnからではなくサイトからのダウンロードに変更。(automakeに不具合があったため)
ダウンロードサイトをeasynewsから、sources.buildroot.netに変更。
■tips
これは自動化の作業の際のメモです。
linux kernelのソースコードは、
svn checkout http://dingoo-linux.googlecode.com/svn/trunk/ dingoo-linux-read-only
で入手。
ディレクトリのリネーム
mv linux-2.6.24.3 linux-2.6.24.3-dingux
unidefのパッチを当てます。
cd linux-2.6.24.3-dingux/extra/scripts
patch < unidef.patch
パッチはuClibc-0.9.30.1のextra/scriptsにも、同じものを利用します。
圧縮
tar cjvf linux-2.6.24.3-dingux.tar.bz2 linux-2.6.24.3-dingux
libmikmod.mk
最後の一行をpackageからpackage/multimediaに変更することで自動パッチが可能に。
libvorbis.mk
Tremor最新版ではautoconfに難があった。
■buildrootメモ
make distcleanだけではconfig部分のオブジェクトが削除されないので、
cd package/configで
make distcleanとすることで初期化が可能になります。
Raspberry Pi - $35(約3500円)で買えるHD動画対応クレカサイズコンピュータ日本語まとめ
Raspberry Piは情報を追いかけていると、諸外国では盛り上がっているものの、
日本語情報はまだ少ないのでここに翻訳を書いてみました。間違っていたら直します。
なお、3500円という価格は100円換算です。実際は諸々の手数料込みで3500円程度で
買えるといいなという感じで。
また、Model A($25)とModel B($35)があり、今回は初回出荷されるModel Bをメインに書きます。
■基本スペック ( Model B )
SoCとしてBroadcom BCM2835を搭載
コアはARM1176JZFS (ARMv6バイナリ互換。浮動小数点ユニット付き?)
700MHz駆動、Videocore 4 GPUを搭載。GPUはBlu-ray品質の動画、
H.264 40Mbpsなどを再生可能
OpenGL ES 2.0とOpenVGによる高速3D描画コアを搭載
初回生産はModel Bが1万枚 (お一人様限定1枚限り)
256MB RAM搭載
■入出力( Model B )
microUSB電源入力( 5V電源入力、Model Bで700mA程度必要 )
HDMI出力
RCAビデオ出力(コンポジットビデオ)
3.5mm オーディオ出力
SDカード(ストレージとして)
USB 2.0 x 2ポート
100Mbps Ethernet
GPIO入出力(要ハンダ付け)
■ブート方法
SDカードよりGPUバイナリを含めたファーストステージブートローダを起動。
( つまりは文鎮化(brick)はしない )
■利用可能予定ディストリビューション
Debian、Fedora、ArchLinux
(ARMv6サポートのものは動かせそう?)
■入手方法
http://www.raspberrypi.org/
より直接販売
■個人的Q&A ( モノローグ ? )
Q. 注目点は?
A.まずはGPU。GPUによる3Dアクセラレータがプログラミングに利用可能というボードが
安価で手に入るという点。他にはBagleBoardさんぐらい?
そしてGPIO。3.3V TTL入力なところが今時ではあるものの、
単純なスイッチの入出力がいまどきのコンピュータにも関わらずできるという点。
ここは工業高校の先生にオススメしたい。
マイコンよりも少し高度な事が楽にできるかもしれない。
Q. Android端末が安価で手に入るようだけど…?
A. プログラミング用途ではAndroid端末は不向き。
用途が違うので仕方がないにせよ、各機能の利用が制限される分、
Android端末は、少なくとも単体でのプログラミング不向き。
(携帯電話の自由度が効き過ぎるのもどうかとは思うけど…w)
Q. テレビに繋げてプログラミングなんて…。
A. MSXユーザーに謝った方がいいと思います。
…それは冗談としても、今時のテレビはHDMIで繋げば大きさ以外は
モニターとして普通に使えます。というか使っている人は多いはず。
滲まないしね。いい時代になったものです。
■動画
XMBCでHD動画を再生している様子
Raspberry Pi、Qt 5、QML、シェーダーでライブコーディング
Gertboard ( GPIO拡張ボード )によるLEDとモーターの駆動
■参考URL
http://www.raspberrypi.org/
http://elinux.org/Buying_RPi
HuSIC 0.30 alpha3
■変更点
ver 0.30alpha2 2011/12/16
XPCMをアセンブラで実装した。
Makefile、ソースコードを調整。
スクリプトの修正。
ver 0.30alpha3 2011/12/17
CD関連のバッチ、スクリプト関連の変更によりcueファイルを出力するようにした。
トラックがLコマンドのみの場合フリーズしてしまう問題を対策をした。
デバッグ用のウェイトを除去した。


