FAQ ver.1.27
岩井 隆 ( tiwai@suse.de)
原版: http://members.tripod.de/iwai/awedrv-faq.html
オリジナルサイト: http://members.tripod.de/iwai/awedrv-faq-ja.html
sf1to2.exe ってどこにあるんですか?
awedrv は CreativeLabs の AWE32 およびコンパチカード(SB32やAWE64シリーズ)の
ためのOSS/Free (かつての USS-Lite または VoxWare) の拡張ドライバです。
このドライバは、
FM-OPL3 ドライバや GUS ドライバと同様に、AWE32上の Emu8000 チップを
/dev/sequencer や /dev/sequencer2 デバイスを通して
制御する機能を提供します。
また、ver.0.3 から、GUS コンパチドライバとしても機能するようになりました。
(モジュールプレイヤーはこの機能を利用しています。)
以下のプログラムにより、MIDI や MODULE ファイルの演奏が可能になります。
現在のドライバは、Linux 2.1.x, 2.0.x カーネル上の OSS/Free の lowlevel ドライバ、 または Linux 1.2.x や FreeBSD 上の OSS/Free-3.0.x (元 VoxWare) への パッチとして提供されています。 どちらの環境でも良好に動いています。 ただし、PnP カードをお使いの方は注意が必要です。 PnP カードのインストールについては、 Q2.3、Q2.4 および Q2.8 を御覧下さい。
現在 AWE ドライバをサポートしているプログラムは:
musserver+awe0.4.diff)
以下の Web ページからダウンロードできます。
基本的には CreativeLabs の AWE32, SB32, AWE64, AWE64 Gold カードで動きます。 AWE64 (Gold) のソフトウェアシンセはサポートされていませんので、 最大32音(DRAM搭載時 30音)しか再生できません。
SB 64 PCI は対応して*いません*。 名前は似ていますが、Ensoniq の PCI とコンパチブルなカードです。 最近の Linux 2.2.x カーネルにはドライバが含まれています。
SB Live! にも対応して*いません*。 これは全く別のサウンドカードです。 SB Live! 用のドライバは、Creative Labs から入手できます。 http://www.opensource.creative.comを参照して下さい。
いくつかの AWE32 コンパチなサウンドカードでは動作可能です。 CT-1920 を使った "AWE32 upgrade board" は、awedrv で動くことが 確認されています。 その他の CT-1291 から 1294 を使ったアップグレード・ボードも動くと 思われます。
awedrv で MIDI を再生するには、サンプルファイルをドライバにロードするための awesfx ユーティリティ・パッケージと、 awedrv をサポートしたプレイヤープログラムが必要です。 そもそも、awedrv は起動時には何の音情報を内部に持っていません。 そこでユーザーは自分で SoundFont ファイルをロードしなければなりません。 この手続きは ROM サンプルでも必要です(Q3.4参照)。 sfxload ユーティリティ(awesfx パッケージに含まれる)は、上記のサイトからダウンロードできます(Q1.2)。
SoundFont ファイルをロードするには、
sfxload ユーティリティを使います。
例えば、GM SoundFont ファイル synthgm.sbk をロードするには、
以下のコマンドを実行します。
% sfxload synthgm注: 古い版 (v0.3.x以前) のドライバおよびユーティリティを用いている場合は、 オプション '
-i' が必要です。
このオプションは、このサンプルをロードする前にドライバ上の
全てのサンプルを消去することを意味します。
これで、MIDI ファイルを演奏する準備は整いました。 drvmidi (awemidi パッケージに含まれる) プログラムで演奏してみます。
% drvmidi sample.midMIDI ファイルに付属した特定の SBK または SF2 ファイルを使用する方法は Q3.4 を御覧下さい。
また、新しい版の drvmidi (v0.4.0) は、on demand なサンプルのロードが可能です。 この機能を使うと、大抵の MIDI ファイルで 512kB のメモリだけで 2MB の GM/GS サウンドフォントによる演奏が可能になります。
% drvmidi -L 2mbgmgs sample.midまた、8MB の DRAM で 12MB のフォントを用いての演奏も可能です。 awedrv ver.0.4.3 では、新しい機能によってロード時間が短縮されます。 詳しくは Q3.12, Q3.13 を御覧下さい。
これまでのところ、いくつかのモジュールプレイヤーが awedrv を サポートしています(Q1.1)参照)。 現在では xmp、gmod 両方とも AWE ドライバを正式にサポートしています。
awedrv-0.4.3は音量の計算方法が以前のバージョンと異なるため、 再生音が小さすぎたり大きすぎたりするかもしれません。 その場合は、awesfx-0.4.3 パッケージに含まれる aweset ユーティリティを用いて、 以前とのコンパチ・モードにしてから、xmp などで演奏して下さい。
% aweset newvolume off % xmp foo.mod
注: 上記の両プログラムを動かすには、サウンドドライバの構築時に SB16ドライバの MIDI 入力をオンにする必要があります。
詳しくは awedrv ソースパッケージの中の INSTALL.awe ファイルを
御覧下さい。
基本的に、root ユーザーになって awedrv ソースディレクトリ上で
install.sh スクリプトを実行するだけです。
% su # sh ./install.sh次に、カーネルを再構築します。 どのオプションを指定するかは Q2.2 を御覧下さい。
# cd /usr/src/linux # make xconfig または # make menuconfig次に、カーネルとモジュールを make してインストールします。
# make # make modules; make modules_install
基本的に awedrv に必要なオプションは "lowlevel sound driver support" と "AWE32 wave synth" だけです。 (もし OSS/Free-3.0.x (旧 VoxWare)をお使いの場合は、 後者だけが現れます。) AWE32ボードでは、全てのデータ転送は I/O ポートだけを介して行われます。 awedrv はこれらの I/O ポートを自動的に検出するので、 特に アドレスや IRQ を指定する必要はありません。
もちろん、デジタルサウンドの再生や録音、FM シンセ、ミキサーといった SoundBlaster の機能も必要でしょう。 awedrv 自体は Emu8000 チップ制御のためのドライバなので、上記の機能は 他の SB ドライバがサポートしています。 したがって、他の SB16 のオプションは全て Yes にしたほうが良いでしょう。
私の場合、.config ファイルのサウンド部分は以下のようになります:
# # Sound # CONFIG_SOUND=m # CONFIG_PAS is not set CONFIG_SB=y CONFIG_ADLIB=y # CONFIG_GUS is not set # CONFIG_MPU401 is not set # CONFIG_UART6850 is not set # CONFIG_PSS is not set # CONFIG_GUS16 is not set # CONFIG_GUSMAX is not set # CONFIG_MSS is not set # CONFIG_SSCAPE is not set # CONFIG_TRIX is not set # CONFIG_MAD16 is not set # CONFIG_CS4232 is not set # CONFIG_MAUI is not set CONFIG_AUDIO=y CONFIG_MIDI=y CONFIG_YM3812=y SBC_BASE=220 SBC_IRQ=7 SBC_DMA=1 SB_DMA2=7 SB_MPU_BASE=300 SB_MPU_IRQ=-1 DSP_BUFFSIZE=65536 CONFIG_LOWLEVEL_SOUND=y # CONFIG_ACI_MIXER is not set CONFIG_AWE32_SYNTH=y
なお、この設定値をそのままコピーしないで下さい。
SBカードの IRQ や DMA の値はそれぞれのマシンによって違います。
通常、MPU base アドレスは 0x330 になっているでしょう。
私は SCSI カードとの衝突を避けるためにこの値に設定しています。
(Q2.3 の isapnp.conf の設定は
Neal のマシンのものですから、0x330 になってます。)
これは PnP の初期化の問題です。 Linux カーネルは PnP の初期化をサポートしていないので、 サウンドドライバをロードする前に特殊な処理が必要になります。 これを解決するには幾つかの方法があります。
loadlin で Linux をブートする
最初の手法は最近の Linux-2.3.x カーネルのみ可能です。
これは awedrv-0.4.4 からサポートされています。
カーネル構築時に ISA PnP support を使用可能に設定して下さい。
ISA PnP を付けてコンパイルすると、awe_wave モジュールに
isapnp オプションが加わります。
通常は 1 に設定されていて、PnP の自動検出、初期化を行います。
もし 非 PnP カードを使っているのなら、この値を 0 に設定して下さい。
2番目の手法は、 Linux 上で Plug'n'Play driver を用いるものです。 これは、Tom Lees が開発したドライバで、 カーネル上で PnP デバイスの制御が可能です。 サウンドドライバ(SB16, MPU401, OPL3, AWE32) やその他の PnP ISA カードを 自動的に認識するためのパッチを含んでいます。 パッチを当てたカーネルの再構築が必要です。 最新の awedrv (v0.4.3) は既に PnP ドライバのインターフェイスが組み込んであるので、awedrv 自体にパッチを当てる必要はありません。 詳しくは、PnP driver project のホームページを御覧下さい。
3番目の手法については、 Neal Sanche (neal@nsdev.ocunix.on.ca) が ISAPnP ツールの使い方を まとめてくれました。
サウンドを機能させるのに必要なステップは以下の通りです。
rc.local や 最近の RedHat では
rc.modules など)のどこかで、
サウンドカードを初期化します。
ISAPnP は簡単に設定でき、信頼できます。
例えば、これは私の起動スクリプトの設定です。
#!/bin/sh # initialize PnP devices if [ -x /sbin/isapnp ]; then echo "Configuring PnP devices" /sbin/isapnp /etc/isapnp.conf fi echo "Loading sound module" /sbin/modprobe -a sound
ISAPnP は極めて簡単に設定できるプログラムです。
以下は私の isapnp.conf ファイルのコピーです。
各ポートと IRQ 設定については(SB マニュアルからの)デフォルト値を使っています。
2つの I/O ポート (0xA20 と 0xe20) を WaveTable に追加するのを忘れないように!
これらのポートは pnpdump では検出されませんが、初期化する必要があります。
(Q2.4参照)
(READPORT 0x0273) (ISOLATE) (IDENTIFY *) # Card 1: (serial identifier 6d 00 0e b0 52 44 00 8c 0e) # CTL0044 Serial No 962642 [checksum 6d] # Version 1.0, Vendor version 1.0 # ANSI string -->Creative SB32 PnP<-- # # Logical device id CTL0031 # # Edit the entries below to uncomment out the configuration required. # Note that only the first value of any range is given, this may be changed if required # Don't forget to uncomment the activate (ACT Y) when happy (CONFIGURE CTL0044/962642 (LD 0 # ANSI string -->Audio<-- (INT 0 (IRQ 5 (MODE +E))) (DMA 0 (CHANNEL 1)) (DMA 1 (CHANNEL 5)) (IO 0 (BASE 0x0220)) (IO 1 (BASE 0x0330)) (IO 2 (BASE 0x0388)) (ACT Y) )) # Logical device id CTL0021 # # Edit the entries below to uncomment out the configuration required. # Note that only the first value of any range is given, this may be changed if required # Don't forget to uncomment the activate (ACT Y) when happy (CONFIGURE CTL0044/962642 (LD 2 # ANSI string -->WaveTable<-- (IO 0 (BASE 0x0620)) (IO 1 (BASE 0x0a20)) (IO 2 (BASE 0x0e20)) (ACT Y) )) # Logical device id CTL7001 # # Edit the entries below to uncomment out the configuration required. # Note that only the first value of any range is given, this may be changed if required # Don't forget to uncomment the activate (ACT Y) when happy (CONFIGURE CTL0044/962642 (LD 3 # Compatible device id PNPb02f # ANSI string -->Game<-- # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0200 # Maximum IO base address 0x0200 # IO base alignment 1 bytes # Number of IO addresses required: 8 # (IO 0 (BASE 0x0200)) # (ACT Y) )) # Logical device id CTL0051 # # Edit the entries below to uncomment out the configuration required. # Note that only the first value of any range is given, this may be changed if required # Don't forget to uncomment the activate (ACT Y) when happy (CONFIGURE CTL0044/962642 (LD 4 # ANSI string -->StereoEnhance<-- # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0100 # Maximum IO base address 0x03f8 # IO base alignment 8 bytes # Number of IO addresses required: 1 (IO 0 (BASE 0x0108)) (ACT Y)))
これでおしまいです。将来的には、Linux カーネルで Plug and Play をサポートして、 isapnp ツールは必要なくなるでしょう。
/etc/isapnp.conf ファイルの WaveTable エントリーを
調べてみて下さい。
AWE32 は3つの I/O ポート (0x620, 0xa20, 0xe20) を用いますが、
pnpdump の出力では最初の1つのポートしか検出されません。
この場合は、残りの2つを自分で追加する必要があります。
例えば、このような具合です。
# Logical device id CTL0021 (CONFIGURE CTL0044/962642 (LD 2 # ANSI string -->WaveTable<-- (IO 0 (BASE 0x0620)) (IO 1 (BASE 0x0A20)) (IO 2 (BASE 0x0E20)) (ACT Y) ))
詳しくは、ISA PnP FAQ ページ ( http://www.roestock.demon.co.uk/isapnptools/isapnpfaq.html ) を御覧下さい。
はい。
モジュールをロードした後に実行されるコマンドを
/etc/conf.modules ファイルの post-install
コマンドでもって設定することができます。
例えば、
post-install sound /usr/local/bin/sfxload synthgm同様に、ミキサーの音量も自動的に設定できます。
post-install sound /usr/local/bin/setmix -f /etc/mixrc;\ /usr/local/bin/sfxload synthgm
Slackware 96 は、Linux-2.0.0 システムをインストールします。 AWE ドライバは、このバージョンのサウンドドライバではうまく コンパイルできません。 申し訳ありませんが、あたらしいカーネルバージョンにアップデートして下さい。 (なお、Linux-2.0.x カーネルは安定化バージョンなので、 なるべく最新の版にしたほうが良いでしょう。)
詳しくは awedrv ソースパッケージ内の INSTALL.frbsd ファイルを
参照して下さい。
また、SB32PnP や AWE64 などのPnP カードをインストールする場合は、
Q2.8 を参照して下さい。
/usr/src/sys/i386/isa/sound にコピーします。
awe_config.h を編集します。AWE_MAX_SAMPLES および
AWE_MAX_INFOS は変更する必要はありません。
device awe0 at isa? port 0x620
詳しくは、甲本氏 (takuya-k@is.aist-nara.ac.jp) による Howto を 参照して下さい。
FreeBSD-ISA_PnP_June8.tar.gz)
を入手します。
pnpinfo プログラムを実行します。
以下のような出力が得られるはずです。
Checking for Plug-n-Play devices... Trying Read_Port at 203 Trying Read_Port at 243 .. 略 .. Card assigned CSN #1 Board Vendor ID: CTL009d Board Serial Number: 10005fdc PnP Version: 1.0 Vendor Version: 32 Device Description: Creative SB AWE64 PnP Logical Device ID: CTL0042 (42008c0e) Device Description: Audio Start Dependent Function .. 略 ..出力中の、サウンドカードのシリアルナンバーを記憶しておきます。 この例では
10005fdc です。この値はカード毎に異なります。
kernel.patch.2.2-current)を
カーネルソースに当てます。
# cd /usr/src/sys # patch -p0 < kernel.patch.2.2-current
/usr/src/sys/i386/isa/pnp.c を編集します。#include "pnp.h"を
#include "i386/isa/pnp.h"に変更し、50 〜 103 行目を以下のものと差し替えます。
{
0x10005fdc, /* Serial Number */
2, /* Logical Device Number */
{
{ -1, -1 }, /* Primary IRQ Number, Type */
{ -1, -1 } /* Second IRQ Number, Type */
},
{ -1, -1 }, /* DRQ Number */
{
0x620, /* Ports 1 */
0xa20, /* Ports 2 */
0xe20, /* Ports 3 */
-1, /* Ports 4 */
-1, /* Ports 5 */
-1, /* Ports 6 */
-1, /* Ports 7 */
-1, /* Ports 8 */
},
{
{ -1, -1, -1 }, /* Memory desc0 - base, ctrl, range */
{ -1, -1, -1 }, /* Memory desc1 - base, ctrl, range */
{ -1, -1, -1 }, /* Memory desc2 - base, ctrl, range */
{ -1, -1, -1 } /* Memory desc3 - base, ctrl, range */
}
}
はじめのシリアルナンバーには、自分のカードの値を書いて下さい。
controller pnp0と
device awe0 at isa? port 0x620 conflictsを追加します。
AWE ドライバは起動時に何の音情報も持っていません。 したがって、まず、SoundFont ファイルをロードする必要があります。 ファイルのロード方法は Q1.4 を見て下さい。
Chris Wedgwood <chris@cyphercom.com> による答え:
はい。 カードに入っているデフォルトの ROM フォントを使えます。 ただし、あまり音は良くありませんが。
Chris Wedgwood <chris@cyphercom.com> による答え:
sfxload を使って ROM フォントをロードしなければなりません。
これには、Windows95 やおそらく Windows3.1 にインストールされた
'synthgm.sbk' (または synthgm.sf2)
というファイルが必要です。
Windows システムディレクトリには、このコピーが必ずあるようですし、
しばしば他のCreativeLabs のファイルの中にもあるようです。
普通は、Windows システムディレクトリは \WINDOWS\SYSTEM です。
Windows をインストールしていない「純正主義者」の人は --
普通の形状では CDROM に入っていない(少なくとも私のには)ので、
おそらくこのファイルを他の場所から手に入れる必要があります。
win95/sfbank/sfbank.lib ファイルにあるアーカイブにあるようですが、
私はこのフォーマットは良く分かりません。
ROM フォントをロードするには:
% sfxload synthgm.sbk注:
synthgm.sbk がカレントディレクトリおよび
サーチパス上にない場合は、パスも含む必要があります。
また、ドラム音が小さい場合は -A で調整できます
(Q3.11参照)。
ファイルサイズは約35kで、圧縮すると約14kになるので、 ftp や e-mail で持ってくるのは大した問題ではないでしょう -- ただし著作件問題が絡んでくるでしょうけど。 私は法律家ではないので、分かりませんが。
GM (または GS) サンプルの後に SBK ファイルをロードするだけです。
まず GM サンプルをロードしておきます。
(v0.3.x以前の版では -i が必要です。)
% sfxload synthgm次に、SBK サンプルをロードします。 すでに他のサンプルをロードしている場合は、 オプション
-x を付けたほうが良いでしょう。
(常に付けておいても問題ありません。)
% sfxload -x -b 1 foo.sbkなお、コマンドオプション "-b 1" を付けるのを忘れないように して下さい(Q3.7参照)。
これで、この MIDI ファイルを演奏できます。
% drvmidi foo.mid
多くのユーザー定義 SoundFont ファイルは、バンク #1 にロードするように
デザインされています。
こうしたサンプルは、
sfxload のオプション "-b 1" を使って下さい
(Q3.6参照)。
コーラス・リバーブモードを有効にするには、
それぞれ sfxload のオプション -c と -r に
ゼロ以外の値を設定します。
% sfxload -c 30 -r 20 synthgm
パン・ポジションが頻繁に変わるような場合であれば、
Emu8000 チップの制限のためです。
この場合は、drvmidi にオプション -P を付けて演奏して下さい。
リアルタイムのパン・ポジション変更を抑制します。
その他の場合は、バグかもしれません。
そうかもしれませんね。
サンプルの全ボリュームは、ロード時に -V オプションで
変更することができます。
% sfxload -V 40 synthgm値は%で、デフォルトは70%です。
もし Linux を使っているのであれば、ミキサーボリュームをサウンドモジュール のロード時に自動的に設定することができます (Q2.5参照)。
はい。
gusload ユーティリティで直接 GUS パッチファイルを読み込むことができます。
例えば、preset #127 に gunshot.pat をロードするには、
% gusload -p 127 gunshot.patを実行します。
いくつかの MIDI ファイルは、チャネル#16 をドラムチャネルとして使いますが、
drvmidi のデフォルトではチャネル#10 だけがドラムとして扱われます。
(GS ファイルの場合、system exclusive message により変化する場合があります。)
これを変更するには、'-D' オプションを追加します。
正の値はドラムチャネルを、負の値は通常のチャネルを意味します。
例えば、'-D 16' は、
チャネル#16 をドラムチャネルとして使用することを指定し、
'-D -10' オプションを使えば、
チャネル#10 を通常チャネルに使うこともできます。
他の可能性として、マルチパートのサポートによる問題かも知れません。
drvmidi は 16 以上のトラックをMIDIパートBとして扱います。
この機能は drvmidi の '-T -1' オプションで抑制できます。
これで全てのトラックが1つのMIDIパートとして扱われます。
v0.4.2 以前のバージョンを使っている場合は、sfxload の -A オプション
を試してみて下さい。
これは、各サンプルの音量を制御するパラメタで、正の実数値を取ります。
一般に、低い値程ドラム音量が大きくなるようです。
私個人の感じでは、値としては 2.0 程度が良いような気がしますが、
以前のバージョンと同じにするため、デフォルトでは 10.0 に設定してあります。
% sfxload -A 2 synthgm.sbk
v0.4.3 ドライバは、別の方法でパラメタを計算しています。 このため DOS/Windows に近い音になりますが、以前よりも少し鈍い感じになります。 ボリューム・モードは aweset プログラムで切替える事ができます。
% aweset newvolume offただし、drvmidi は内部でボリューム・モードなどを切替えるので、この設定は 無効になります。playmidi の音質は影響されます。 また、sfxload の
-C オプションで、以前の版との互換性を
保つことができます。
v0.4.0 から加わった機能で、個々の MIDI ファイルで用いられるサンプルを
あらかじめ調べておいて、必要なものだけをドライバにロードする機能です。
必要なサンプルだけを用いるので、少ない RAM 容量で大きな
サウンドフォント・ファイルを使った演奏が可能になります。
大抵の MIDI ファイルでは、512kB の DRAM で 2MB GM/GS サウンドフォント
(2mbgmgs.sf2) の利用が可能なようです。
もちろん、2MB の RAM で 8MB、または 8MB の RAM で 12MB の
GM/GS フォントを利用する手もあるでしょう。
(ただし、多少ロード時間がかかりますが。)
多くのサウンドフォント・ファイルが web サイト上で無料で配布されているので、
色々試してみて下さい。
AWE ドライバのページにそれらのサイトをリストアップしてみました:
ダイナミックロード機能を用いるには、以下のようにします。
% sfxload synthgm
-L (または --dynamic)
オプションで指定して、
drvmidi を起動する。
% drvmidi -L 2mbgmgs foo.mid
場合によっては、メモリが足りなくなる場合がありますが、この場合は
preload: couldn't load all fonts.といったメッセージが現れます。 この場合は、ロードできなかったサンプルの代わりに ROM フォントが用いられます。
dynamic loading のフォントは、デフォルト・オプション設定で指定できます。 (Q3.13 参照)
awedrv ver.0.4.3 では sample sharing 機能によって、
ロード時間がかなり短縮されています。
これは一種の chaching で、DRAM 上に既にサンプルがロードされているかどうかを
事前にチェックして、あった場合はそれを再利用します。
8MB の DRAM で 12MB のフォントを使う場合などは、かなり効果的です。
通常(デフォルト)の設定では、この機能が有効になっています。
この機能をオフにする場合は、drvmidi のオプション
--increment=off を設定して下さい。
sfxload と drvmidi のオプションは、リソースファイルにあらかじめ
設定しておくことが可能です。
sfxload のリソースファイルは
/etc/sfxloadrc と ~/.sfxloadrc で、
drvmidi のリソースファイルは、
/etc/drvmidirc と ~/.drvmidirc です。
sfxload の場合は、以下のフォーマットのファイルを作成します。
fontname options.. fontname options..第1項は、サウンドフォントの名前で、それ以降にはそのファイルで指定する コマンドラインのオプションをそのまま書いておきます。 フォント名 "
default" は、特定のフォントが指定されなかった
場合のオプションを指定します。
short または long どちらのオプションを指定しても構いません。
例えば、
default --sense=10 --atten=32 -V100 synthgm --sense=2 -V100といった具合です。
drvmidi のリソースファイルも同様の形式を採ります。
ただし、フォント名の部分は "default" だけが有効です。
また、drvmidi 自体は short, long どちらのオプションも受け付けますが、
ver.0.4.2 から採用されている option editor では
long オプションだけしか受け付けません。
例えば、
default --dynamic=2mbgmgsという設定をすると、オプション指定なしにダイナミック・ロード機能を 用いることができます。
ver.0.4.2 の drvmidi では、マルチ・パートや SYSEX、TVF コントロールなどの
SC88 のエミュレーションが可能です。
デフォルトでは、マルチパートおよび MASTER VOLUME CONTROL の SYSEX
メッセージを受け付けます。
また、sysex に関わらず、オプション --multipart=on を追加することで強制的に
マルチパート・モードにすることができます。
TVF や EG などのエフェクトコントロールは、デフォルトの状態では
エミュレーションを行いません。オプション --usefx=on を追加して下さい。
この機能はまだ実験段階なので、かなり不正確です。
また、soundfont ファイルによって音がかなり異なるので、お使いの soundfont
に合わせてパラメタを調整する必要があるでしょう。
なお、上記のオプションおよびパラメタなどは、tkmidi の オプションエディタで 編集可能です。
ver.0.4.2 の drvmidi は XG の バンク・コントロールを受け付けます。
ただし、XG のドラムや SFX プリセットは GS と一部異なるため、そのまま
通常の GS soundfont を使ったのでは正しく再生できません。
そこで、drvmidi では、
通常使われないドラムセットナンバーとバンクナンバーに割り振ることに
よって、両者の衝突を避けます。
これを可能にするには、オプション --xgmap=on を追加して下さい。
また、この新しく割り振ったバンクには GS からの音をコピーする必要があります。 これは、awedrv の preset mapping機能を使うことで解決できます。 例えば、synthgs.sbk の後に xgsfx.bnk と xgdrum.bnk をロードします。 (これらのファイルは awesfx / sfxload パッケージに含まれています。)
% sfxload synthgs % sfxload -b0 xgsfx.bnk % sfxload -b0 xgdrum.bnk上記の手順は、virtual bank ファイルを作ると簡単になります。 例えば、以下の内容の bank ファイル (xgdefault.bnk) を作成すれば、
default synthgs.sbk include xgsfx.bnk include xgdrum.bnkこのファイルをロードするだけで済みます。
% sfxload xgdefault.bnkまた、ダイナミック・ロードを行う場合にも同様の bank ファイルを作る必要があります。
default 2mbgmgs.sf2 include xgsfx.bnk include xgdrum.bnkこのファイルを、drvmidi の
--dynmaic オプションで指定すれば、
GS・XG どちらの場合でも適切なファイルを自動的にロードしてくれます。
はい。最新版 0.4.3 は以前とは別のパラメタ計算を行っています。 Q3.11 を参照して下さい。
virtual bank ファイルは、複数の soundfont ファイルによるプリセット、バンク、 キーノートのリストを記述するためのファイルです。 virtual bank ファイルを使うと、soundfont ファイル自体を編集することなく、 一つの soundfont ファイルからある部分の音だけを抜き取って、 他の soundfont ファイルの別の部分と一緒に使うことができます。 すなわち、フォントの一部分を入れ換えることが可能になります。 ドラムセットの1キーノートの入れ換えも可能です。
virtual bank ファイルのフォーマットは以下の通りです:
source:destination:file instr-namesource と destination には、入れ換えを行う楽器を指定します。 楽器の指定は以下の通りです:
preset/bank/keynotepreset には、MIDI プログラム・ナンバー (0 から 127 まで)、bank には MIDI バンク・ナンバー (0 から 128 まで) を指定します。 bank #128 はドラムセットとして扱われます。 keynote には MIDI キーノート (0 から 127 まで) を指定します。 keynote が指定されなかった場合は、その楽器の全てのキーが入れ換えられます。 bank が指定されなかった場合、preset に対応する全ての楽器がが入れ換えられます。 preset にアスタリスク(*)または -1 が指定された場合は、 対応するバンクが入れ換えられます。
virtual bank は、source 項目で指定された楽器を、destination 項目で指定された楽器と入れ換えます。 file 項目には、ロードする soundfont ファイル名を指定します。 一つの virtual bank ファイル内で同一の soundfont ファイルを複数回定義する場合、 file 項目には同一の名前で指定しなければなりません。 soundfont ファイルは sfxload のサーチ・パスに従って探索されます。
instr-name 項目は楽器名を指定するための予備の項目です。 sfxload の現在の版では、この項目は無視されます。
virtual bank ファイルは以下のフォーマットにも対応しています:
source:destination instr-name上記の場合とは異なり、このフォーマットには file 項目がありません。 これは preset mapping (linking) を指定するフォーマットです。 preset mapping はファイル操作におけるシンボリック・リンクに相当する機能です。 source の楽器は destination の楽器として参照されます。
他に2つの特別なコマンドがあります。
include filenamedefault filename
AWE32カードに十分なDRAMが載っていない場合に起こることがあります。 カードのメモリーをアップグレードして下さい。
また、古いドライバはサンプルループの計算にバグがあります。 最新のドライバ(v0.3.3e 以降)を使って下さい。
コントロールウインドウを用いたプラグインは、 (file://directory/ のような)ディレクトリのページを表示すると bus エラーを起こします。これを避けるには、 Netscape を起動する前にプラグインファイルを preload する必要があります。 netscape を以下のようなスクリプトで置き換えると便利でしょう。
#!/bin/sh LD_PRELOAD=$HOME/.netscape/plugins/npmidi.so; export LD_PRELOAD exec /usr/local/bin/netscapeなお、このバグは、ウインドウなしのプラグインでは現れません。
また、以下に示すような MIME タイプをすでに追加している場合は、 これらの設定ファイルを自分で書き換える必要があるでしょう。 (Netscape は単に追加するだけなので。)
~/.mime.types ファイルに以下の行を追加して、
MIDI ファイルの MIME タイプを追加して下さい。
audio/x-midi exts=mid,midi次に、
~/.mailcap ファイルに以下の行を追加して
アプリケーションを指定下さい。
audio/x-midi; drvmidi %sもちろん、この代わりに他の MIDI プレイヤーを指定することもできます。
awedrv の制御については、 the AWEDRV programming notes を御覧下さい。
ver.0.2 から、awedrv は GUS コンパチのパッチや制御を受け付けるようになりました。 これを使えば、gmod などの GUS ドライバを使うモジュールプレイヤーを わずかに変更するだけで使えるようになります。
例えば、awedrv 用に gmod を使うには、
Sequencer.c の62行あたりの部分を変更して、
カードの検出をサブタイプ 0x20 を受け付けるように変更します。
if (info.synth_type == SYNTH_TYPE_SAMPLE
&& (info.synth_subtype == SAMPLE_TYPE_GUS||info.synth_subtype==0x20))
gus_dev = i;
(0x20 は
awe_voice.h で定義されている
SAMPLE_TYPE_AWE32 の値です。)