December 2009 Archives

2009年の総括

| No Comments | No TrackBacks

今年はいろいろ実り多い1年になった。といっても今年の前半にやったのがほとんどだけど。このlog自体今日でようやく1年だ。今年は初心に返って、知識のないところから物事を始めたり、昔のままで凍っていた知識を復活させたり焼き直したりしたいと思って始めたものだけど、記録し続けていてよかった。ひとりごとでも何かアウトプットがあると動機を補強することができる。

そんなわけで、振り返りエントリを書いてみることにした。

  • portmidiいじりとportmidi-sharpプロジェクト。クロスプラットフォームでC#から操作可能なMIDIアプリケーションを書けるようにしたいと思ってportmidiを発掘したのも、そこから共有ライブラリを作ってC#バインディングを書けるようにしたのも今年になってから。サンプルとして作ったmmkは、いまMIDIをいじるときに活用しているし、PortMidiPlayerはmldspでも活用している。
  • tsukimiのコードがほぼ構想のレベルでしか存在していなかったのが、実際にサンプルコードをコンバートしてアプリケーションとして実行できるところまでもっていくことができた。これはmldspの実装において大いに役に立ってくれた。
  • ビジュアルMIDIプレイヤーとしてのmldsp。当初こういうものを作る予定はなかったのだけど、振り返ってみると今年一番のキャッチーな作品になってしまった。見ていて楽しいプレイヤーがあるのと無いのとでは、テキストオンリーでの打ち込みでやる気が大きく変わってくる。
  • そしてついに構想だけ年単位で存在していたMMLコンパイラを、開発し始めて実用的なレベルにまでもっていくに至った。構文はずっと練り続けていたものだけど、実装が始まるところころと変わり、ある程度の柔軟性が確保できた今でも不満は少なくない。だけどコレがあれば少なくともゼロではない。仮にこのままDAWに宗旨替えするようになったとしても、MMLで出来なかったからと諦めたり、あるいは共用して活用することもできる。

他にもsnippetのレベルではOSCを実装してみたり、gainer+C#のおもちゃを作ってみたり、途中でやめた物でも、iXMFの実装(これは仕様自体がぶれると聞いてやめたのだった)とか、PubSubHubBubの実装(これはWCFを使ってやろうとしたのが間違いで、低レベルで実装するのでは面白くないのでやめたのだった)とか、いろいろあった。地味にlingrのC#ライブラリとradarも作った。

来年も同じような開発を続けるかどうかは分からないけど、Webやコミュニケーションエンジンで興味を引かれた分野でコードを書くことはありそうな気がする(OSCなんかをいじっていたのはその発露)。

来年もまた楽しい1年になるといいなと思っているし、その可能性は高いと思っている。"Happy hacking"という言葉を違和感なく発せる1年にしたい。

tsukimi 0.2 & mldsp 0.22

| No Comments | No TrackBacks

もう一昨日の話だけど、クリスマスハックということで何かやろうと思って、結局moonlightで動かなかったtsukimi(そして結果的にmldsp)を何とか動かそうと、原因を探ることにした。ビルドもツールもトリッキーでいろいろハマったのだけど(自分のツールなのに...)、どうやらXAMLのクラス名の解決の部分に問題がありそうだということが分かって、とりあえずコードを動かせるようにすることが先決ということで、原因の追究は放棄して、Applicationのクラスの名前空間を変えることで、無事ふたたび動くようになった。

そんなわけで、機能的な追加は無いのだけど、せっかくなのでバージョンアップしてtarballを作ってリリースすることにした。英語ブログにスクリーンショットとgithubのリンクを載せたら、一部の人々には気に入られたようで、まあクリスマスハックとしてはうまいこといったのではないかと思っている。

しばらく前にActionScript3のパーサを作っていたこともあって、tsukimiのパーサにも少し手を入れて、もう一歩まともなコード分析が出来るようにしたいし、開発環境(?)の作成とかkey/mouse対応や3D対応なんかも追加したいと思っているのだけど、web方面にも少し手を出したいし、AS3のパーサも放置しているし、作りたい電子工作ネタもあるので、ちょっと考えないといけない。本当なら冬休みの間に一つくらい片付けるつもりだったのだけど、無駄な仕事を抱えてしまったのが良くなかった。これはちょっと反省している。来月は趣味の時間をもっと確保しようと思っている。

OSC 1.0を実装

| No Comments | No TrackBacks

最近仕事で無駄なタスクを作ってしまったせいで休みのはずが全然休みになっていないのだけど、昨日ようやく現実逃避して趣味のコードを書いてやろうと思って、いろいろ眺めた挙げ句、なぜかOSC 1.0の実装を書きはじめてしまった。OSCなら簡単に実装できるんじゃん?と思っていたのだけど、日本語訳を並行して作ったりとかしていたらコードの方はUDPに繋ぐ前のレベルで終わってしまった(翻訳も半分くらい)。コンパイルが通るというだけで、まだ一度も動かしていない。まあUdpClientを開いてSocketに繋ぐだけなので、さらに何か書く必要もない気もする。

コードを書いたはいいが、そもそも、OSC receiverになる楽器を持っていなかったりして、試すならローカルで別のアプリケーションを開いて通信するくらいしかできない。これじゃあんまし面白くない。

OSCのC#実装はじつのところ余所でも(ライブラリの一部として)書いている人がいるのだけど、OSCの勉強も兼ねて書く分には車輪の再発明からもほど遠いだろう。

後はこれにうまく合わせられるようなbinding elementやらUriTemplateやらIOperationInvokerやらを書きたいところなのだけど、まあそれは気が向いたらというところだろうか。

16 bit music joy

| No Comments | No TrackBacks

昔OPNA音源をいじって遊んでいた時期が何年かあって、その頃はパソコン通信やらコミケやらで楽曲を入手しては楽しんでいた。もう思い出でしかなかったことだったのだけど、今年はそんなことをやっていた人たちが数年ぶりにコミケに出展するというので、昔とった杵柄ということで参加することにした。古い形式の楽曲データを、古い文法のMMLで作成して、限られたリソース(チャネル数とか)で再生するという遊びだ。

最近だと8ビットといってファミコンなどの音源を模して音楽を作ったりアレンジしたりする人がそれなりにいて、商売にまでしてしまっていたりもするのだけど、自分になじみがあって入り込めるのは、むしろ16ビットでFM/SSG/ADPCMといった複数の音源が1つのボードに載ったこのDTM環境だ。昔と違って今は実機が手元にないので、FM音源エミュレータを組み込んだWindows用音源ドライバなどを使ってデータを作成することになる。PC98時代に作られたMMLコンパイラはPC98環境に依存していたりするので、その辺が削られたコンパイラを使ったりする。

FM音源ドライバも後期になると、SSGチャネルをPCMに割り当ててPCM音色を同時に4音とか8音とか鳴らせてしまうようなものが出現した(当時のマシンの処理速度を考えれば、今のソフトウェアMIDIシンセサイザみたいなことは夢のまた夢だった)。その頃にはもちろんUMBもXMSも使われていたから、実質的には16ビットというより24ビットだったのだけど、スーパーファミコンもPCM8音だったし、まあその辺が16ビット環境の限界だったんだろう。

そんなわけでひさしぶりにこの方面で手を動かしてみたのだけど、やはりモダンな環境に慣らされていると感じる。和音は全部分解して入力しなければならないし、同じトラックでタイムラインを巻き戻して加工することもできないし、同じ出力チャネルを複数のトラックから制御することもできない...といった辺りでつまづく。論理トラックの概念が出てきたのは、おそらくFM3チャネルをスロットごとに発音できるようにした辺りからだろう。

本当は作曲などもしたかったのだけど、残念なことに昔自分で作って貯め込むようになった音色データが消えてしまっていて、必要なものは音作りになれていなかった頃の少ない手持ちを改造するか、ゼロから作り直すしかないということで、やる気がなくなってしまった。以前にそれなりに音色を作り込んでいたので、今さらそれより安易な音を作って公開する気にはなれないというプライド的なものだろうか。

ともあれ、この辺をいじっているうちに、11月は終わってしまった。12月にはもうこの方面で〆切に追われて何かやる必要は無い。

About this Archive

This page is an archive of entries from December 2009 listed from newest to oldest.

November 2009 is the previous archive.

January 2010 is the next archive.

Find recent content on the main index or look in the archives to find all content.

Categories

Pages

OpenID accepted here Learn more about OpenID
Powered by Movable Type 4.23-en