2011年4月30日土曜日

推奨音源追加(E-muサウンドフォントまとめ)

以前、midif0nの推奨音源に関しては書きましたが、たまたまE-muのサイトでダウンロード可能なGM音源が見つかりましたので、これも推奨音源に追加しておきます。


まず追加するのは、EMUAPS.SF2、EMUAPS8.SF2の2ファイルです。まず最初にこれらのサウンドフォントファイルを追加して、推奨音源をまとめてみます。


ファイル名 ※1サイズCopyright規格

音色数ドラム
※2
SYNTHGMS.SF21.03MBE-mu Systems, Inc., 1993GM1281
GMGSMT2M.SF21.98MBE-mu Systems, Inc., 1994GM, GS?, MT31710
EMUAPS.SF22.06MBE-mu Systems, Inc., 1995-1998GM, GS?, MT316 ※310
EMUAPS8.SF27.25MB※4GM1288
8mb General MIDI.SF27.22MBDigital Sound Factory 2009GM1289


※1
リンクに関しては後述。
※2
ドラムセットの一覧は以下の通り。
ドラム
1
Standard
8
Standard, Room, Power, Electronic, TR 808, Jazz, Brush, Orchestra
9
Standard, Room, Power, Electronic, TR 808, Jazz, Brush, Orchestra, SFX
10
Standard, Room, Power, Electronic, TR 808, Jazz, Brush, Orchestra, SFX, CM64/32L

※3
GS, MTに関しては仕様に関してあまり詳しくない(というより公式な仕様書が見つからない)のですが、ファイル名(”GM”GSMT2M.SF2)から対応していると判断しています。RolandのSC-55がGS対応で、音色317とWikipediaに書かれているので、音色316のEMUAPS.SF2は1音(002:125のCar Stop?)抜け落ちている気がします。
※4
EMUAPS8.SF2はファイル内にCopyright情報が抜け落ちています。(C) Emu-Systems Inc.は間違いないはずです。


EMUAPS.SF2、EMUAPS8.SF2のリンクに関して


これは、Audio Production Studioという製品のソフトウェア扱いになっています。付属していたものなのかもしれません。E-muのソフトウェアやドライバには、Sound Blaster等の対応するハードウェアを取り付けていないとインストールすらできないもの(この代表的なものは、サウンドフォント編集ツール Vienna)も多いですが、幸いなことにこれは該当しません。


表は直リンクの場所になりますが、トップページから辿ると場所は以下の通りです。
http://www.emu.com/ へ。
support から software & manualを選択。
リストからLegacy Hardware → Digital Audio → Audio Production Studioを順番に選択。
コンボボックスからPCを選択。
以下のどちらかをダウンロードして、インストールしてみましょう。
8mb E-MU GM SoundFont Bank (Windows 2000)
8mb E-MU GM SoundFont Bank (Windows XP)

僕の環境では、以下の場所に2つのサウンドフォントファイルが展開されました。
C:/Windows/System32/EMUAPS.SF2
C:/Windows/System32/EMUAPS8.SF2

さてこれら2つのファイルは、ほぼ同容量のGMGSMT2M.SF2と8mb General MIDI.SF2と何が違うのか気になる人もいると思います。まず最初の表で見られるように音色数, ドラムセット数にわずかな違いがあります。8mb General MIDI.SF2は、EMUAPS8.SF2に比べてドラムセットのSFXが増えています(当然、SFX用に新規サンプルが多数追加されています。)。ところが、何故かファイル容量は減っています。これはどうなっているのでしょうか?


サンプル名とサイズのみ比較して調べてみました。
比較内容を一部、以下に載せておきます。
※ただし実際の波形データの確認はしていません。あくまでサンプル名とサイズだけです。
サンプル名、サイズだけでも93箇所違う。
オルガンはB3LoDistFastのサンプルがごっそり削られています。
Oboeはサンプル数やサイズが減っています。
Pianoはまったく同じだけど (Rの表記が気になる)。


比較結果から、スプリット数の違いを含むサンプルの追加/削除、同名サンプルのサイズの増加/削減があることが確認できます。もちろんこれに加えてプリセットのパラメーター構成も変化しています。その一方で共通のサンプルも多くみられます。

結論としては、同じ会社の同容量のファイルだけど、中身は似て非なるものと言って良いでしょう。2MBの方に関しては、同名サンプルは存在しません。もちろん、これは名前だけが変わった可能性もあります。ただ、SYNTHGMS.SF2とGMGSMT2M.SF2に関しても名称ルールが変わっていますが、明らかに同サイズのサンプルが多数存在しますが、この場合はそれほど顕著にわかりません。

品質を追求するのであれば、8MBのものを選択すべきだと思いますが、どちらが優れているのかは断定できません。8mb General MIDIの方は音質が劣化しないように注意していると思いますが、容量削減が気になる方はよく比較してみた方が良いかもしれません。

さて1, 2, 8MBとくれば、4MBのファイルがありそうなもの(2^n)ですが、情報としては確かに存在します。ただ上記のような方法で入手できるかは不明です。昔のSound Blaster等を購入している人は入手しているのではないでしょうか?


最後に、僕自身、同容量のファイルを初めて見たとき、中身がだいたい同じだと想定していました。しかし結果は大きく違い、E-muが長い間これらのファイルを調整していることに感心しました。これらのファイルの評価をしばしば見かけますが、多くの場合、高評価を得ています。これには納得させられます。


余談
プリセット選択画面の再度の変更を考えています。GMは良いのですが、GSになるとプリセットの並びやデザイン面で不満が出てきました。MTは仕方なしと考えていますが。ちなみにMTは上記2ファイルでバンク127に設定されています。

2011年4月28日木曜日

MIDIインプリメンテーションチャート修正

midif0n バージョン1.4でMIDIインプリメンテーションチャートに変更がありましたので、以下に載せておきます。尚、外部ハードウェアには対応していません。



編集 再生 表示

Note Number 0-127 0-127 0-127

Velocity Note On o o o

Velocity Note Off x x x

Polyphonic Key Pressure x x x

Pitch Bend /o o o (pitch)

Control Change








0, 32
1 o o (pitch) Bank Select
1, 33
/o o o Modulation
7, 39
1/o o o (amp) Volume
10, 42
1/o o o (amp) Pan-pot
11, 43
/o o o (amp) Expression
64
/o o o (pedal) Hold
66
x x o (pedal) Soft
67
x x o (pedal) Sostenuto
100, 101
/1 o x RPN
120
x o x All Sound Off
121
x o x Reset All
123
x o x Controller All Note Off
Program Change 1 o o

Exclusive Master Volume /o o o (amp)


Note Off Velocity, Polyphonic Key Pressureの情報は読み込み時に破棄されます。
1: トラックにつき、1イベントに固定(編集時)
/*: プロフェッショナルモード使用時

バージョン1.3まで、破棄する情報は漠然とAfter Touchと書いてありましたが、Polyphonic Key Pressure, Note Off Velocityに変更しました。Channel After Touchは再生、編集に影響するものではありませんが、保持します。Polyphonic Key Pressure/Note Off Velocityを破棄する理由は、プログラムの内部データ構造の簡潔化/軽量化によるものです。様々なキーボードでも割と省かれる項目ですが。

今後、GM System Onに対応するつもりです。
先頭に戻すと完全に初期化されないケースを解決したいので。

2011年4月27日水曜日

Viena 0.822 & ベータ版について

サウンドフォント編集ツール Viena をバージョン0.822にアップしてみました。前の記事で、Initial Attenutationが効かないと書きましたが、ちゃんと効くようになっています(もしかしたら、前回の時点でも効いていたかもしれません。何故なら今回Applyボタンの存在に初めて気がついたので。これは前から存在していたのでしょうか?)。

今回、気になったのは、Chorus Send(%), Reverb Send(%)の設定方法です。セルに直接入力するしか方法がないと思うのですが、0を入力すると100%、1000を入力すると0%になるのが直感的ではありません。表示式は以下のようになっていると推測しています(内部データは未確認)。
   (1000 - input value) / 10

この挙動はサウンドフォントの仕様書を読んでいると思い当たる点はあるのですが。何にせよVienaはベータバージョンなので、仕方がないですね。
※ちなみにmidif0nはこの2つのパラメーターはサポートしていません。

ベータバージョンと言えば、今のApp Storeでベータバージョンは禁止されています。

2. Functionality
2.9 Apps that are "beta", "demo", "trial", or "test" versions will be rejected 
App Store Review Guidelines for iOS appsより

midif0nも当初バージョン0.7ぐらいから始めるつもりでしたが、断念しました。ベータと明示することで、完成度がユーザーに伝わりやすくなるメリットはあると思うのですが。

もう一つ、Vienaについて気になる点を挙げると、midif0nの推奨音源としているE-muのGMGSMT2M.SF2が読み込めない点。

ところで最近MTの音色配列について知り、軽くショックを受けています。これには時代を感じます。

2011年4月22日金曜日

Musikmesse 2011 雑感

今更ですが、NAMMの記事に続いて、4/6-ドイツのフランクフルトにて行われたMusikmesse 2011の雑感を書いておきます。

YAMAHA i-MX1 ※2011/7/2 リンク追加
まず一番最初に開発に関わってきそうなものを紹介します。公式サイトのリリース情報はまだないようですが(MusicProductionGuide_2011_Messe_EN.pdfで検索すれば、カタログが見つかります。)、CoreMIDI対応のiPad/iPhone/iPod Touch用のMIDIインターフェースです。Line6のMIDI MobilizerはまだCoreMIDIに対応していないはずなので、開発者としてはこちらの方が扱いやすそうです。僕個人としては、iPhone/iPod TouchとUSB-MIDIで直結できるのが理想的です(電源の問題はありそうですが)。MIDI端子ありの良い小型キーボードがあれば、MIDIケーブル直結でも別に良いのですが...。
価格も期待しています。

HAMMOND SUZUKI SK1, SK2
それぞれClaviaのNord Electro, Nord Cシリーズを思わせる軽量コンパクトなオルガン。物理ドローバーあり、ハモンドブランドということで競争力も十分あると思います。エクストラボイスがより豊富になったり、パイプオルガンのシミュレートも可能になっていてかなり好印象です。価格は、SK1(170,000円), SK2(240,000円)ぐらいなので、SK1は高めに感じます。製品の素材だけ見れば、SK1はXK-1より安く済むはずなんですけどね。

Roland JUPITER-80
SuperNATURAL音源(VA, PCM+モデリング), オルガン音源と多数の音源方式を載せるのは、KORGのKRONOSと同じですが、ライブパフォーマンス向けの製品です。さりげなくこの前発表された"MIDI Visual Control"に対応しています(仕様上V-LINKとどう違うのかまだ把握していませんが)。個人的には、Rolandの製品は割と多く使っていたこともあり、KRONOSの方が魅力的に映りますが、消費電力が60Wと高いのが残念なところです。JUPITER-80が25Wですので、この点は多めに感じます。す。ちなみにOASYSは130Wでした。さながらデスクトップ(OASYS)とラップトップ(KRONOS)という感じですね。

KORG WAVEDRUM mini
ドラムセットは敷居が高いけど、パーカッションには興味あります。価格発表待ち。

midif0n バージョン1.4 スクリーンショット集

以下、midif0n バージョン1.4のスクリーンショット集です。追加された機能は少ないので、チュートリアル形式で紹介してみます。

オプション画面の一番下に
プロ(フェッショナル)モードのスイッチ。
オンにすると、隠れているオプションが表示され、
プロフェッショナルモードに入ります。
編集ボタンを押し、左上のgraphを押すと、
2ページめに行きます。
ドラッグでHz単位でチューニングしたり、
bendボタンを押した後、グラフボタンを押す事で
イベントグラフの編集が可能になります。
オプション設定により、cent単位のチューニングも可。
※centは半音(semitone)の1/100になります。

既存のMIDIファイルで複数の同じRPNイベントがある場合、その編集はできませんので注意して下さい。また白枠の項目(テンポ、マスターボリューム)以外は、トラック(チャンネル)ごとに適用されます。

2011年4月21日木曜日

midif0nでいろいろな楽器を鳴らすための方法(プリセット変更方法)

レビューも新たに一件頂きましたが(前回レビューしてくれた方はわざわざ取り下げてくれたみたいです)、直に返信できないのが残念です。この点は、App Storeのレビューシステムの欠点としてよく指摘されています。せっかくなので、ここに思う事を書いておきます。

オプション、機能の複雑化について
オプションや機能はバージョンが上がるにつれて、かなり複雑になってきていると自覚しています。シンプルなMIDIシーケンサーと書いてありますが、だんだんその言葉に偽りありと感じています。ですから次のバージョンあたりで、小節編集やコードの編集は画面を分けて極力同じボタンの位置に複数の機能を割り当てるのはやめるつもりです。オプション画面に関しては日本語の説明を入れることを検討してみます(そもそも英語も中途半端だと思うし)。

休符について
REST(休符)ボタンはありますが、データ的には休符の概念はありません。また視覚上、休符は単純に空白になります。バージョン1.4からファンクションメニューが固定化されましたので、ボタン自体は見つけやすくなったと思います。

楽器変更について
まずアプリをインストールした時点ではサイン波しか鳴りません。ピアノやトランペットを鳴らしたい場合、サウンドフォントファイル(拡張子.sf2)を準備する必要があります。
以下、その手順を付属のHELPから抜き出しておきます。

=================================================================
チュートリアル
◯サウンドフォントの設定
ここでは本家のサウンドフォントファイル(Copyright © 1994-1995, E-mu Systems Inc./Creative Technology, Ltd.) を用いた例を紹介します。
※サイズが小さく、レイヤーが少ないので、複雑な曲を再生するのにお勧めです。

Mac/PC側の操作説明
1. 下記リンクをクリックすると、Creative の開発者向けページが表示されます。

2. 表の一番上の enablerをダウンロードします。
3. enabler.zip を解凍します。
解凍先のディレクトリのサブディレクトリDATAの中にsoundfontが含まれています。
この中のGM対応ファイルは、以下の2ファイルです。
SYMTHGMS.SF2 1.1MB (enabler/DATA/SYMTHGMS.SF2)
GMGSMT2M.SF2 2.1MB (enabler/DATA/GMGSMT2M.SF2)

4. ファイルをiPhoneの中に移動するために、iTunesを起動します。
5. iTunesのファイル同期機能を用いて、midif0nに解凍したファイルを送ります。

iPhone/iPod touch側の操作説明
1. midif0nを起動します。
2. サイドメニューのシステムボタン→SF2読み込み(sf2)ボタンを押して下さい。
リストに上記ファイルが表示されているはずです。
3. 読み込みたいファイルを選択します。
4. 右上の×ボタンを押して、リストを閉じます。
これで、サウンドフォントがメモリに読み込まれます。
=================================================================

この後、実際に楽器の音を変更するのは、編集ボタン→プリセット変更ボタン(preset)を押し、表示されるプリセットリストから選択するのが一番簡単です。他には再生中にミキサーボタン→(何もボタンを押さずに)トラック表示をドラッグ等の方法があります。

ところで、推奨音源としてE-mu関連のサウンドフォントを3つ挙げていますが、他にもE-muの良さそうなサウンドフォントが見つかったため今後取り上げたいと思います。


midif0n バージョン1.4 Ready for Sale

4/20付けでmidif0n バージョン1.4になりました。変更点は前回のエントリを参照して下さい。

2011年4月19日火曜日

midif0n バージョン1.4 審査待ち

近日中と言っていましたが、バグ修正のために遅くなってしまいました。
midif0n 1.4をアップしました。以下、変更点、修正点になります。
  • プロフェッショナルモードの追加(実装済みのMIDI CC等編集可能に)
  • ファンクションメニュー切り替えを画面ごとに固定化
  • プリセット(音色)選択画面を修正
  • 再生中にドラッグでオクターブ移動可能に
  • 音源のLFOの周波数のディフォルト値を修正
  • ピッチの計算精度を修正
  • 保存時に連続した同じ値のMIDIイベントを書き出さないように改善(現状、読み込み時は未対応)
  • 表示バグ修正

まずはプロフェッショナルモードですが、このモードではイベントグラフにより、いくつかのCC, ピッチベンド、テンポ、マスターボリュームを編集できるようにしました。編集できるパラメータは、すでにmidif0nに実装済み(再生時に対応している)のパラメータのほとんどになります。プロフェッショナルモードの位置付けですが、実装コンセプトに従い、ノート、ベロシティ以外はこちらのモードで編集することになります。ピッチベンドは、キーボードやギターのインターフェース等にはまだ適用していませんが、これから実装する予定です。実のところ、インターフェースをどうするかまだ迷っています。

プリセット画面のデザインは劣化しているような気もしますが、GM音色をより選びやすいようにしました。基本的に"機能>デザイン"で。

音源に関してはLFOのディフォルト値を修正したのですが、実はこれはサウンドフォントの仕様書通りではありません。これは厄介な問題を含んでいるため、機会を改めて説明したいと思います。この件に関しては、僕は単純に仕様書の間違いと捉えておらず、むしろ完全な仕様書として必要な情報が欠落しているものと推測しています。何にせよ、この修正により、周波数変化が緩やかで変化が大きいプリセットは印象が大きく変わるかもしれません。
※例えば、推奨音源の一つであるDigital Sound Factoryの8mb General MIDI.sf2の090 Poly Synth, 095 Sweep Padのようなプリセットで変化が顕著になります。

ピッチの計算誤差はテーブル化した時に大きくなっていたので、これを修正しました。場所によっては数十セントの誤差があったので、耳が良い人は気付いていたと思います。

MIDIイベントの連続した同じ値のデータに関してですが、これは再生上まったく不必要なものです。当初はイベントグラフ描画時に省くつもりでしたが、結局保存時に落ち着きました。これはProgram Change等にも当てはまります。個人的に読み込み時の対応の必要性も感じています。何故なら既存のMIDIファイルによっては、同じ値のVolumeは言うに及ばず、場合によっては同じ値のProgram ChangeやPitch Bend Sensibilityが含まれていることさえあります。これらの値は、midif0nにおいて1イベントしか編集できないケースに該当するため、編集可能なデータをみすみすロックすることになります。しかし読み込み時のチェックを厳重にしすぎると、読み込みが低速になる可能性もありますので、バランスを考慮しながら最適化するつもりです。

バージョン1.5では、トラック全体の見通しをよくし、小節単位の編集を強化する予定です。

2011年4月10日日曜日

midif0n バージョン1.3のファイルに関して

midif0nバージョン1.4を近日中にアップします。
ところで、midif0nバージョン1.3の説明が不足しているため、ここではファイル関係について取り上げます。

まず出力をSMF フォーマット0に変更した理由です。(XFファイルに変更)
僕がSMFフォーマットに関して、最も疑問に思い、最も欠けていると感じる部分は、メタイベントとしてコード情報が存在しないことです。もちろん単にコードを置くだけであれば、テキストデータやノート情報として代用することも可能です。しかし、プログラマーが操作できるデータとしてのコード情報はSMFに存在しません。疑問に思うのは、電子楽譜フォーマットとも言えるSMFに、何故、基礎データであるコードが入っていないのかという点です(まあ、この理由については関係者以外知る由もないのですが)。兎に角、コード情報が欲しかったので、バージョン1.3においてYAMAHAのXFフォーマットを採用しました。これは仕様書にSMF フォーマット0互換と明記されています。それがSMF0になった理由です。ところで、XFが何故SMF0に規定されているのでしょうか?僕が仕様書をチェックした限りでは、理由はメロディのチャンネル指定を行っていることぐらいしか思い当たりません。SMF1でメロディトラック指定をする場合、データとして持ちにくいという事情があるのかもしれませんし、あるいは単純に両方サポートするのが面倒だったのかもしれません。個人的には、互換性は重視して欲しいところですが。


何にせよフォーマットがどうであれ、midif0nは16トラック固定で扱っていることから、失われるデータはありません。ですから規定通りにSMF0にすることにしました。またXFフォーマットは、日本語のカラオケ用の歌詞情報を含まなければ、RIFFのチャンクも増えないことは確認しました。つまり、この時点ではSMFフォーマット0と何ら変わりがない訳です(コード情報はシーケンサ固有のメタイベント(Sequencer Specific)として扱われる)。基本的にXFよりSMFの方が通りがよいはずなので、記載はSMFをメインにすることにしました。



フレーズファイルについて
フレーズファイル(拡張子.midp)の実体は、SMF0です。
拡張子を変更すれば、多くのMIDIシーケンサーで内容を確認することが可能です。ここでSMF0にしたのは、高速化が主な理由です。拡張子を変更した理由は、検索用タグ等のデータを入れる可能性がある点も考慮しています(現状では入っていません)。フレーズファイルは、すべてのMIDIイベントが保存される訳ではありません。プログラムチェンジやRPNなどは保存しませんが、これに関しては今後正式にまとめるつもりです。


組み込みのフレーズファイルについて
組み込んであるいくつかのファイルは、プリセットフレーズというよりは、サンプル、検証用のものと考えて下さい。ですので今後、積極的に増やすつもりはありません。これらのファイルが邪魔な場合は、オプション機能で組み込みファイルのコピーを防止してから、削除して下さい。


組み込みの壁紙ファイルについて
UI変更により、バージョン1.2までに組み込んであった壁紙ファイルも変更しています。ピアノロール用の壁紙は、ファイル名に2が付くものと、付かないものとで、まったく同じ画像を用意しているのに気付いた方もいると思います。midif0nは組み込みファイルを一度ユーザーのDocumentsフォルダにコピーしますが、この時上書きはしません。つまりバージョンアップに伴い新しい画像に変更しても、ユーザーが気付かない可能性があります。この点を考慮し、壁紙変更をユーザーに確実に知らせるために、必ずコピーされるファイル名に2がついたものを用意しました。よって、バージョン1.4では、これらの重複ファイルの削除を行う予定です。


ところで、XFフォーマットに関して調べている間に、XFをサポートしているWindows向けのフリーのMIDIシーケンサーCY10があることを知りました。CY10はキーボード操作が中心のみならず、視覚障害者用の音声ガイド機能もあるため、完全に視覚に頼らないで操作できる点が興味深いところです。midif0nは視覚に頼らないと操作は不可能ですから、真逆なソフトウェアと言えるかもしれません。そして音を扱う以上、視覚に頼らないというのは、理に適った考え方であり、これには考えさせられるものがあります。