実験プログラマー

さあ、2学期の実験がついに終わりました!!! やった! あとは任意課題なんでゆっくりとやっていきます!!! 課題3-2はSMF->UNIの変換プログラムだったけど、恐らく3-1よりは簡単、、、いや、3-1でだいぶ慣れたか … “実験プログラマー” の続きを読む

さあ、2学期の実験がついに終わりました!!! やった!
あとは任意課題なんでゆっくりとやっていきます!!!

課題3-2はSMF->UNIの変換プログラムだったけど、恐らく3-1よりは簡単、、、いや、3-1でだいぶ慣れたからかな? そこまで複雑なアルゴリズムでもないし。
テストとして、ショパンのエチュード・ハ短調10-12番、いわゆる「革命」の冒頭部分を切り出して、これをsmf2uni.exeにぶち込んでみる。 するとかなり巨大なuniファイルが出来あがった… これをUNIPLAYERという配布された教材のプレーヤにぶっこんでみると、、すごい勢いで革命の冒頭!!! うおーーー…こ、こりゃすげぇ
UNIPLAYERもなかなかやるなぁ。。。

ショパンのエチュードが再生できるんだからたぶん正確なんでしょうね!(おい)

課題3-1と課題3-2あわせてどのくらいの行数になったんかなーと計ってみると、約1000行。 なんだか辛さの割にはずいぶんと小ぢんまりとしたプログラムになったっぽい。 いや、これを本来ならCで書けというのだろうから、1.4〜1.5倍ぐらいになるはず、、、嫌だ書きたくない(T_T) プログラムは完!

全にオブジェクト指向!! だってmain関数は20行ちょっとだもん!!!!!!!

int main(int argc,char *argv[])
{
CUniData unidata;
CSmfData smfdata;
CConverter converter;
int ret_code;

// ファイルからSMFデータのロード
ret_code = smfdata.LoadFromFile(argv[1]);
if(ret_code == -1) return 0;

// 変換
ret_code = converter.Smf2Uni(smfdata,unidata);

// UNIデータとしてファイルへ保存
ret_code = unidata.SaveToFile(argv[2]);
if(ret_code == -1) return 0;

return 1;
}

いけいけC++!! 万歳!

うぐっ

めまいが…こんなにプログラムで苦しんだのは久しぶりだ。。。 音楽情報実験の課題2が昨日終わって、余裕ぶっこいて課題3に挑戦。 まずUNIデータを保持するクラスは昨日こしらえたので、SMFフォーマットを書き出すところから始 … “うぐっ” の続きを読む

めまいが…こんなにプログラムで苦しんだのは久しぶりだ。。。

音楽情報実験の課題2が昨日終わって、余裕ぶっこいて課題3に挑戦。
まずUNIデータを保持するクラスは昨日こしらえたので、SMFフォーマットを書き出すところから始めた。。。
んが、これが上手くいかない。 何故かと言えば「可変長数値」という特殊なビット演算を使う数値の表現方法がある上、SMFのMIDIメッセージやらは全て「逆バイト順」で書きこまなくてはならない。 これは気付かずにハマってしまうと最悪な事態だ。

そしてなんとかSMFをいじくるクラスができたところで、次に肝心のUNI->SMFの変換クラスをこしらえることになる。 とりあえずSMFの知識はルーズソックエミュレータを作ったときに独学していたので、ここまでは4時間で完成。

そしてここからが地獄!!!
口では説明できないようなプログラムになること間違い無し!!! 「デルタタイム」と「インターバル」がぐちゃぐちゃに入り乱れ飛び交うことになる。。。 大きなヒントになるけど、UNIフォーマットにはノートオフがないので、UNIイベントのlengthパラメータとinterva!

lパラメータを比較しながら、ノートオフの相対的なデルタタイムを全て計算していくことになる。 それを効率良くやるためにノートオフの待ち行列を新たに作成してて、そこから先入れ後出しのアルゴリズムで吐き出してあげるわけだが、これにさらにメモリの管理が必要になるわ、tempoパラメータがあるわ、果てにはSMFの分解能とUNIの分解能の比率を計算してあげたりで、久しぶりに相手に恐怖を感じました。

とりあえず8時間後、、、WinAmpでキレイなサンプルが流れるようになりました。。。感動もクソもない。。。涙

この課題、MIDIで音が鳴る仕組みを理解してCのビット演算の知識がついてないと、相当苦しいです。 しかもこの次に課題3-2があるので、もうヒトヤマ!!!

うおおおお

水曜日。。。 朝7時半起床。 掃除をして登校。 1、2限目は「情報通信概論」とやらを履修してみることにした。 朝からクーラーの効いてる教室なので過ごしやすい… でも内容はつまんない… 3、4限目はついに来た! 「音楽情報 … “うおおおお” の続きを読む

水曜日。。。
朝7時半起床。
掃除をして登校。

1、2限目は「情報通信概論」とやらを履修してみることにした。 朝からクーラーの効いてる教室なので過ごしやすい… でも内容はつまんない…

3、4限目はついに来た! 「音楽情報実験」だー
気合を入れてヘッドフォン持参で行ったものの、今日の課題1はかえるのうただった。 うーーん、こんなんでいいのかな? と思いきや、課題2が熱い!!!

帰宅後、とりあえず作曲の続きをしてから昼寝。。。
夜7時起床。

実験の課題2をちょっとやってみるかーと思い、資料を読んでみる。
激しいWIN32プログラミングを期待していたのだが…
なんてことない、汚ねぇコンソールアプリじゃないか!
VisualC++を使う意味は限りなくゼロに近い!
つーか、C++じゃなくてCだし。 かなり落胆。

とにもかくにも、貧弱な(失礼)フォーマットの音楽データに対するフィルタを作成することらしい。 要はただの文字列処理…。 BAYFMを聞きながら、タバコ5本で完成!

始まりました

学校初日… しかし起きれず。 なんとか遅刻せずに13:45体育へ。 その後、情報特別演習の打ち合わせへIPLABへ。 帰宅! いろんな作曲者のインストゥルメンタルにハマッてます! 特に、浜崎あゆみに曲を提供してる人達のブ … “始まりました” の続きを読む

学校初日…
しかし起きれず。
なんとか遅刻せずに13:45体育へ。

その後、情報特別演習の打ち合わせへIPLABへ。

帰宅!

いろんな作曲者のインストゥルメンタルにハマッてます!
特に、浜崎あゆみに曲を提供してる人達のブ厚いオケ、宇多田ヒカルとかCHEMISTRYの楽曲とかが自分の好みなので、よーーーーーーく聞きこんでます(^o^) あゆの声もいいんだけど、純粋に曲だけ聞いてみるとそれだけでもカッコイイ! 人間の声が入ってると、ついつい脳で言語処理してしまって歌詞を無意識に聞いちゃうから、instrumentalは新鮮でっせー

学校はじまります

やっと夏休みが終わった。 これ以上休むとマジ、腐ってしまう。 ゆうべは地元岩井の広大な畑に囲まれてバーベキューをしてきました。 朝方まで飲んでいたので大変疲れました。 おかげで起きたのは午後5時。 部屋の片付けと風呂など … “学校はじまります” の続きを読む

やっと夏休みが終わった。 これ以上休むとマジ、腐ってしまう。

ゆうべは地元岩井の広大な畑に囲まれてバーベキューをしてきました。
朝方まで飲んでいたので大変疲れました。
おかげで起きたのは午後5時。

部屋の片付けと風呂などを処理して、夕飯を吉村屋ラーメンへ。
ラーメンたべながらいつもの如く新聞を読んでいると、面白い記事があった。 国民生活調査で、「悩みや不安は特にない」は3人に1人。 概算で1億2000万人中の4000万人。 これは考察し甲斐がありそうだ。
んなこんなでネギラーメンを食べ終わる。

部屋に帰り、作曲をするためのネタ参考として、色々な曲のinstrumentalバージョンをガンガン収集。 
そこであゆ最新曲のindependentってのを聞いたけど、これいいねーーーーーこれいいよーーーー好きだなーぁこういうの。 なんか、単純な2つのコードの連続がコレだもんね、汚いギターを丸め込んでこれだもんね! 俺好みの曲だ! カッチョイイ!!!! ちなみに今、instrumental版聞いてます。 ソニーのヘッドフォンちょっと重い。。。でも音はすごい迫力…