LoginSignup
3
4

More than 5 years have passed since last update.

Cross Platform MIDI Tools Advent Calendar #1: クロスプラットフォームMIDIプレイヤーを作る

Last updated at Posted at 2013-12-01

もう4年ほど前になるが、かつて、X68000時代に存在していた美しい音楽プレイヤーを再現するという目的で、MLDSPというプロジェクトを作った。MLDSPは、つい最近まで存在していたMicrosoft Silverlightという技術を、MonoチームがLinuxで実現するために作った、MoonlightというGUI基盤の上に作られていた。Silverlightはブラウザプラグインとしてのみ存在したが、Moonlightはデスクトップ上でも実行できるGUIを構築できるよう、Moonlight Desktop (Gtk.Moonlight)というGUIフレームワークも開発していたのである。
その後、Moonlightがdisconになり、MLDSPはその巻き添えを食らう形で動かせなくなった。その後、筆者の興味がこの方面に戻ってくるまで、この音楽プレイヤーのプロジェクトは死んだままだった。それが2013年になって、Web MIDIやYamaha eVY1といったかたちで、MIDI音源が再び遊ばれるようになったので、それならMLDSPを別の実装のかたちで復活させよう、と思ったのだった。

今日は書き始めなので、簡単にこのプロジェクトの経緯についてだけまとめる。今後何日間かは、当日書いたコードや、それぞれの日の進捗について書くのではなく、これまで調べたことなどを中心に書くと思う。

今日はとりあえずスクリーンショットを載せておこう。実のところ、既にSMFファイルを選択して演奏させながらキーボードで演奏状態をリアルタイムに楽しむことはできる。今後は、このAdvent Calendarを書きながら、このプレイヤーや周辺ツールを改善していくことになると思う(筆者のやる気次第で)。

Initial screenshot

基本的な目標として、筆者は日常的にUbuntu Linuxを使っていて、この環境で使えるMIDIツールがほしいので、今回書くコードは全て最低でも筆者の環境で動作することを目的としている。開発言語・環境は今のところC#とMonoとなっている(C#でなくても良いのだが、とりあえずは使用したい自作のMIDIライブラリがC#なので、今はC#を使っている)。また、筆者の手元には、主に使う予定のMIDI音源として、20世紀に発売されたRoland SC-8820とYamaha eVY1というUSB MIDI楽器がある(他にもあるが割愛)。さらに、ソフトウェアMIDI音源としてtimidityとfluidsynthを使うこともあるし、今後はfluidsynthを中心に使うことも考えている。

これらの一部でも動作対象外とする環境は、筆者が支持し使用するところではない。たとえばWeb MIDI APIは、その実装においてLinuxが対象外であったり、ソフトウェア音源を積極的に排除するものだから、まともな仕様になってまともな実装が実現するまでは、支持しないので使わない。

また、当座はデスクトップ環境を中心に構築していくつもりでいる。モバイル環境はオーサリング環境としては未整備な部分が多すぎて、作業環境とするには厳しいので、今は対象としない(おもちゃとしてはアリだけど)。実のところAndroidの習作としてMLDSPのようなものを作ったこともあるが、手持ちの端末のない頃に作ったもので、全く利用していない。その辺りは作るとしても今ではない。

初日にあまりいろいろ書くと今後全くもたなくなるので、今日はここまでとしたい。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4