渡辺一寛です。 At Sat, 03 Nov 2007 22:56:19 +0900, Dobashi.M wrote: > At Fri, 02 Nov 2007 23:02:38 +0900, > S.Kimura (LEE) wrote: > > オーディオ・アンプの出力をサウンドカードの入力(line in)に > > 接続して、カセット・テープなどのアナログ音源をデジタル・フ > > ァイルとして録音したいのですが > > 6.2-RELEASE-p6で、xwaveを使用しています。 > > 入力の切替(レヴェルの調整)には xmixを使用していますが、mixerコマンドも > 使えます。 > % mixer > ... > Recording source: line > > xwaveは、赤丸の録音ボタンで設定画面になりますので、サンプリング周波数 > などを確認して、OKボタンで録音が開始されますので、停止後にファイル > (.wavなど)へ保存する事になります。(時々フリーズします;) > (mp3へは bladeencなどで変換する事になります)
他にコマンドラインで動作する録音ソフトウェアとして、 wavplay (ports/audio/wavplay) の wavrec コマンド、 SoX (ports/audio/sox) の rec コマンドなどがあります。 例えば CD ドライブのアナログ出力から録音する場合、次のようにします。 % mixer =rec cd # 録音ソースは CD % mixer cd 50 # 録音レベルを調節 (注) % wavrec -S -s 44100 -b 16 -t 300 test.wav # CD クオリティで 5 分間録音 ただし録音レベルの調整に使用するミキサデバイスはサウンドカードによって 異なり、対象デバイス (例: line, cd) をじかに調節するしかないものや、そ れ専用のミキサデバイス (igain, rec) があるもの、あるいはそのどちらも使 用できるものなどがあります。 > audacityはインストールして、時々遊んでいます。使い方によっては、同じか > それ以上の利用が出来るかと思います。 私も Audacity (ports/audio/audacity) をちょっと使ってみました。デフォ ルトの録音フォーマットが 1 チャネル (モノラル) になっているので、そこ を真っ先に変更する必要がありましたが、録音/編集ソフトウェアとしてなか なかよいですね。 ただ、手元の PC は SiS 7012 (snd_ich) + YAMAHA YMF753 が載っているので すが、"Input Volume" スライダを動かしても録音レベルが変化しません。 これは Audacity が録音レベルの設定にミキサの "igain" を操作しているた めです。 FreeBSD の場合、AC97 コーデックに対する "igain" は別の目的に 使用されているため (マイク入力の +20dB ブースト)、これを操作しても録音 レベルは変化しません。 かわりにミキサの "rec" を操作すればよいのですが、この部分はソースで決 め打ちされているので、変更するにはソースを書き換える必要があります。 # まぁ他のミキサソフトウェアで操作してもいいんですが。 書き換えといっても 2 箇所なので大したことありませんが、いちおうパッチ を付けておきます。以下の内容のファイルを、既存の ports/audio/audacity/files/patch-portmixer-px_unix_oss.c と差し替えればよいです。 --- ./lib-src/portmixer/px_unix_oss/px_unix_oss.c.orig Sun Nov 27 11:33:39 2005 +++ ./lib-src/portmixer/px_unix_oss/px_unix_oss.c Sat Nov 3 21:59:57 2007 @@ -37,6 +37,8 @@ #ifdef __linux__ #include <linux/soundcard.h> +#elif defined(__FreeBSD__) +#include <sys/soundcard.h> #else #include <machine/soundcard.h> /* JH20010905 */ #endif @@ -327,7 +329,7 @@ if (i < 0) return 0.0; - return GetVolume(info->fd, SOUND_MIXER_IGAIN); + return GetVolume(info->fd, SOUND_MIXER_RECLEV); } void Px_SetInputVolume( PxMixer *mixer, PxVolume volume ) @@ -342,7 +344,7 @@ vol = (int)((volume * 100.0) + 0.5); vol = (vol | (vol<<8)); - ioctl(info->fd, MIXER_WRITE(SOUND_MIXER_IGAIN), &vol); + ioctl(info->fd, MIXER_WRITE(SOUND_MIXER_RECLEV), &vol); } /* --- Watanabe Kazuhiro ([メールアドレス保護])