「FluidSynth 色々」カテゴリーアーカイブ

FluidSynth の使い方とプログラミングに関する投稿です。

NFluidsynth と MIDI シーケンサー Domino の連携 ― コード実装編

NFluidsynth ― C# のプロジェクトで LibFluidSynth の機能を利用する。

PC  :dynabook T552/58GKD
OS  :Windows 10(ver 1803)
IDE:Visual Studio 2017 Community

 

2. NFluidsynth と LibFluidSynth のソースコードを編集する

この章では、少しソースコードを編集する。
対象は NFluidsynth の二つのラッパークラスと FluidSynth ソリューションの中の libfluidsynth-OBJ プロジェクトの、いくつかのソースファイルだ。

実行プログラムは、NFluidsynth.Sample プロジェクトの  Sample.cs の中の Main 関数だ。これはラッパークラスのインスタンスを作成して、それを利用するプログラムだ。
Main 関数に実装されているのは、MIDI ファイル再生機能と単音の MIDI イベント発生・再生機能の二つだけなので、これを拡張して MIDI シーケンサー Domino と連携させようというのが、この章の主題になっている。

技術的に高度なことはやっていないので、C と C# の基本的な知識のある人ならば簡単に理解できるだろう。
それと、主要なコードウィンドウが 5 枚もあるのでスクロールが大変だが、サブメニューを使ってうまく読み進めて頂きたい。…このページを読む

NFluidsynth と MIDI シーケンサー Domino の連携 ― NFluidsynth ビルド編

NFluidsynth ― C# のプロジェクトで LibFluidSynth API 関数を利用する。

PC  :dynabook T552/58GKD
OS  :Windows 10(ver 1803)
IDE:Visual Studio 2017 Community

はじめに:

前回は、サウンドフォント・シンセサイザー FluidSynth の設定方法について説明した。
今回は、FluidSynth の基盤である libfluidsynth.dll を、Visual Studio の C# プロジェクトで利用する方法について考えてみた。

幸いなことに、その目的で作成されたコードパッケージ NFluidsynth を GitHub からダウンロードすることができる。libfluidsynth.dll の API 関数のほとんどがクラスのコンストラクタ、プロパティ、クラスメソッドとしてラッピングされているので、利用者がやるべきことは、あまり残っていない、
せいぜいが自分の目的に合わせてデフォルトのコードを修正することくらいだ。もしそれで不足ならば新しいコードを追加すれば良い。

さて、この記事では NFluidsynth のビルドについてだけ説明する。
ビルドそのものが意外に手ごわいので、記事 1 本分のスペースが必要だったのだ。コードの修正と追加については次回の記事で説明する。…このページを読む

Domino と FluidSynth の連携 ― オープンソースのサウンドフォント・シンセサイザー

苦労してもビルドする価値があるオープンソースのサウンドフォント・シンセサイザー

PC  :dynabook T552/58GKD
OS  :Windows 10(ver 1803)
IDE:Visual Studio 2017 Community

はじめに:

GitHub から、FluidSynth というサウンドフォント・シンセサイザーのコードパッケージをダウンロードしてみた。これは SF2 形式のサウンドフォントをサンプル音源として使用する、オープンソースのシンセサイザーだ。実行ファイルをビルドするのにかなり高度な開発ツールを使うが、プログラミングの知識は必要ないので、根気さえ続けば誰でもビルドすることができる。

最新版の v 2.0.1 (2018/10/31 現在)は、全部で 16 個のプロジェクトで構成されている。
その中で特に重要なのは libfluidsynth プロジェクトと libfluidsynth-OBJ プロジェクト、それに fluidsynth プロジェクトだ。前 2 者は libfluidsynth.dll (以下 LibFluidSynth)をビルドし、後者はその DLL を用いて MIDI 再生コンソールアプリケーションの fluidsynth.exe(以下 FluidSynth)をビルドする。

私は今 FluidSynth と LibFluidSynth の両方で色々なテストをしているが、この記事では Domino とFluidSynth の連携について少し説明するつもりでいる。それほど多くの実例は挙げられないが、MIDI チャンネルごとに違うサウンドフォントを割り当てる方法は、多分良い使用例になっていると思う。

ビルドの説明を後回しにしたのは、まず各位に FluidSynth の特徴を知って頂いた方が良いだろうと考えたからだ。
最初に言ったように、FluidSynth のビルドには根気が必要だ。それに開発環境として使う Microsoft Visual Studio はかなりのディスクスペースを占有する。これらは決して小さくないリスクだ。なのでこれをビルドする / しないの判断は、メリットとリスクを秤(はかり)にかけた後で下しても遅くはない。…このページを読む