朝7時半起床…部屋の片付けと風呂に入って登校。
1、2限目のデータベースは演習を提出しておわり。
3限目は代筆に失敗し、欠席となる。。。
学校に行ってもあまりに暇で困る(;_;
部屋に帰って、社長から頼まれていた新しい企画の仕様案をWordで書き上げる。
UNIプレーヤー…作ってみるか!
朝7時半起床…部屋の片付けと風呂に入って登校。 1、2限目のデータベースは演習を提出しておわり。 3限目は代筆に失敗し、欠席となる。。。 学校に行ってもあまりに暇で困る(;_; 部屋に帰って、社長から頼まれていた新しい企 … “ラーメンに指” の続きを読む
朝7時半起床…部屋の片付けと風呂に入って登校。
1、2限目のデータベースは演習を提出しておわり。
3限目は代筆に失敗し、欠席となる。。。
学校に行ってもあまりに暇で困る(;_;
部屋に帰って、社長から頼まれていた新しい企画の仕様案をWordで書き上げる。
UNIプレーヤー…作ってみるか!
さあ、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は新鮮でっせー