珈琲break

ソースコードの1行でコーヒーを飲みながら一休み

FMPv4フォーマット解析

少し前に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構築方法

dingux : how to build your own rootfs with buidroot.

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

nezplay on SDL version 1.0 binary and source

OS X Lionのターミナルと
Win32のコマンドプロンプトで動くNEZplugです。

代表的なところで
NSF
HES
などを聞くことができます。

nezplay binary
nezplay source

HuSIC 0.30 alpha3

http://www.mediafire.com/?efh67lo3llzkoei

■変更点
ver 0.30alpha2 2011/12/16
XPCMをアセンブラで実装した。
Makefile、ソースコードを調整。
スクリプトの修正。

ver 0.30alpha3 2011/12/17
CD関連のバッチ、スクリプト関連の変更によりcueファイルを出力するようにした。
トラックがLコマンドのみの場合フリーズしてしまう問題を対策をした。
デバッグ用のウェイトを除去した。

 | ホーム |  »

FC2Ad

FC2ブログ

プロフィール

Author:BouKiCHi
Country : Japan,Asia
Mail : alf_bincyou @ hotmail.com

Web : http://clogging.web.fc2.com/

Twitter :
http://twitter.com/bkc_alf




無料レンタル

最近の記事

最近のコメント

最近のトラックバック

月別アーカイブ

カテゴリー

FC2カウンター

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

RSSフィード

リンク

このブログをリンクに追加する

Powered By FC2ブログ

Powered By FC2ブログ
ブログやるならFC2ブログ