DTM 関連ソフトウエアのソースコードを読みたくて・・・
サウンドフォント・プレイヤーがどうやって wav データを再生しているのかを知りたくて、シンセサイザーの TiMidity++ とサウンドフォント・エディタ Polyphone Soundfont Editor のソースコードをダウンロードした。
ソースコードダウンロードサイト:
Polypone:Polyphone(GitHub)
SourceForge:TiMidity++
Polyphone インストーラダウンロードサイト:
POLYPHONE:現在のバージョン
2018/03/08 訂正:
Polyphone のダウンロード先リンクを訂正した。
以前 SourceForge にあったドキュメントが GitHub に移動している例を見つけたので、もしや・・・と思ってチェックしてみたら心配していたとおりだった。
2月21日の段階でチェックしなかったのは私の手抜かりだった。申し訳ない。
GitHub にあるソース例はほとんどがブラウザ上で読めるようになっている。
上のリンク先では、リスト上の trunk フォルダのサブフォルダ内に cpp ファイル(のリンク)が多数存在している。クリックすれば、とりあえず読むことができる。
2018/02/21 訂正:
TiMidity++ のソースコードダウンロード先リンクを訂正した。
現在はこのリンクで読みたいファイルを直接参照することができる。ダウンロードしたければ、Download Snapshot をクリックすれば良い。
CodeProject と SourceForge の二つの有名サイトを検索して、まず Polyphone を SourceForge で見つけた。
まさか、サウンドフォント・エディタを作成するプロジェクト――開発者のグループがあるとは思わなかった。これはビックリの感動ものだ。
その後 timidity(以後「TiMidity++」)の実行ファイルも SourceForge から入手できることが分かったので、もしやソースコードも・・・と期待して探してみたら、これも見つけることができた。でもかなり古いものらしい。
Polyphone は実行ファイルもダウンロードできるので試してみたが、使い勝手や性能は Viena よりかなり劣っていると思う。
でも Viena と同様に、Domino などの MIDI シーケンサから MIDI データを流し込むことができるので、これはまぎれもなく(シングルポート/シングルチャンネル)サウンドフォント・プレイヤーでもあるのだ。なのでこのソースコードは私の目的にはピッタリだ。
まず秀丸エディターで Polyphone のソースコードを読んでみたが、サッパリらちが明かないので、Qt Creator という統合開発環境(IDE)で実行ファイルをビルドしてみることにした。
もしうまくビルドできれば、デバッグモードで実行ステップを確認できるので、得られるものが――おおげさでなく――飛躍的に増大する。
本当のところ、ここまで書き進めた段階でのビルドはすべて失敗していたが、今(2015/04/17 13:11 頃)ちょっと前にやっとうまく行った。
どうやら Windows ではプロジェクトのファイルグループを [ドキュメント] に置く必要があるみたいだ。
最初プロジェクトを任意のディレクトリに置いてうまく行かず、色々なサイトを頼りにプロジェクトファイルをちょこちょこ手直ししてもやっぱりうまく行かない。ld.exe というリンカが、リンクするファイルを見つけられない、と文句を言ってくるのだ。
それならばということで、プロジェクトを IDE インストールディレクトリ支配下の C:\Qt\Qt5.3.0\Examples に置いてみたが、これもまた失敗・・・という情けない状況だった。
それで Qt Creator が参照する環境変数を新たに設定するか、リンクするファイルの名前をフルパスで指定しなきゃ駄目か・・・などと考えていたら、Qt Creator の「プロジェクトを開く」のデフォルトディレクトリが [ドキュメント] だったことを思い出した。
じゃ、そこにプロジェクトを配置すれば何か変わるかな?・・・ということでやってみたら「はい、正解です」ときたもんだ。
訂正:(2015/04/22)
上の内容には勘違いがあったので訂正する。
ビルドが失敗したのは [プロジェクト] の [ビルドと実行タブ] ⇒ [ビルド設定] の概要がデフォルトの「シャドウビルド」になっていたためだ。
このオプションを外してビルドすると、プロジェクトを任意のディレクトリに置いてもビルドできることを確認した。
※プロジェクト開く時に指定するファイルは、拡張子「pro」のプロジェクトファイル。
※Qt Creator を使ってみたい人は、ここを訪問してからダウンロードすれば間違いないだろう。私も初めて見たが、完成度の高さに驚いた。しかも日本語対応だ。
Polyphone の中心開発者 Davy Triponney さんはフランス語圏の人らしく、コメントやメニュー項目名がフランス語で書かれている。
コメントはかなり重要な情報源なので、読めないのはちょっと残念だ。
TiMidity++ も Qt Creator で何とかなる可能性があるらしいが、当分は Polyphone を勉強することになると思うので、今はソースコードを眺めるだけにしておく。
こちらは C++ じゃなく C で書かれている。
C だとクラスの階層などを気にしなくても良いので、秀丸でもある程度の所までは読めるんじゃないかと思っている。もちろんかなり時間はかかるだろうけど。