概述
這篇文章講述了如何在Linux下錄制音樂。在2001年1月為反對開銷較大的WAV格式被采用,較小的mp3格式可以被直接錄制成了爭論的主題。24小時以CD音質錄音在使用了這個格式後成為了現實。
介紹
通常情況下,wave聲音實時地轉換成mp3聲音是不可能的。這個過程其中之一必須遵循:
·首先,以一個聲音記錄程序記錄wave聲音。
·使用一個mp3編碼器(比例,"Lame")將wave文件轉換成mp3文件。
記錄一個Wave文件將會很快地消耗磁盤空間(CD音質的環繞立體聲10分鐘要100MB)。這樣就約束了以這種格式記錄聲音的存儲能力。一個mp3編碼器能夠以普通mp3質量(128kbps,stereo)將Wave文件從100M轉換成10M。
這個性能使24小時不間斷地以數字記錄音樂成為可能!24小時就是60*24=1440分鐘,只要使用1,4GB的磁盤空間!!
我已經使用它來錄制了"eighties top 300"。這個記錄過程只有一次中斷,mp3記錄程序在24小時之後自動地停止沒有任何聲明....,但記錄效果卻非常好!我將告訴你我使用什麼軟件並且解釋如果來制作實時的mp3。
以下討論的是,兩個可以用來制作實時的,stereo並且有CD質量的mp3的方法。
·使用軟件"http://www.linuxfocus.org/English/March2001/article178.sHtml#mpegrec"(需要mp3解碼器"lame").
·使用一個記錄程序,比如sox,用它的管道輸出到某個mp3解碼器(soxlame)。
"Mpegrec"與"soxlame"效果一樣,不同的是設置已經做好了。用戶不需要作其它的任何事情。只要裝入“Lame”!我建議你使用"mpegrec"。無論如何,需要緊記,這個程序在24小時後會停止!此外,另一個討厭的毛病就是在記錄時間上:
用戶設置的記錄時間並不被正常使用。大多數情況下,要短得多!
怎樣使用mpegrec
使用"mpegrec"非常容易,輸入“mpegrec -b 128 -o ./test.mp3"就可以了。
說明一下不同的選譯:
-使用128Kbmps作為mp3的位速率。在mpegrec中的普通值是192,這是個奇怪的(並且太高)的值。幾乎所有的mp3文件都有128kbps的位速率。
-輸出文件的名字。在這個例子中,./test.mp3。如果輸入文件沒有指定,所有的輸出被送到標准輸出(stdout)。
這樣,如何程序運行在終端下。所有的mp3代碼將以屏幕顯示的方式輸出而不是存在文件中.....
注意:
請注意你的mixer-setting被正確地設置。如果沒有,將什麼也錄不成!正確的記錄源應用被選擇,並且適當調整音量。
如何使用soxlame
在終端屏幕下輸入:
sox -t ossdsp -w -s -r 44100 -c 2 /dev/dsp -t raw - lame -x -m s - ./test.mp3
sox 記錄程序:使用聲卡的"line-in"端記錄聲音。
-t ossdsp 聲音的輸入源從OSS驅動程序來。這個驅動程序被包括在內核之中,當普通聲卡被支持時就有了。
-w 16位字長的音樂采樣率(如果用不明白這點,不要緊)
-s “采樣數據”是“有符號線性的”(如果你不明白這點,不要緊)
-r 44100 采樣率是44100Hz(CD音質)。
-c 2 從雙聲道記錄(stereo)。
/dev/dsp 這是聲音采樣的設備:這是一個Linux設備,用來描述記錄數據。所有的設備,端口,磁盤等等,在/dev/目錄下被訪問。
wave流在/dev/dsp下被linux訪問。實際上,這就等效於使用命令:cat /dev/dsp >test.wav(只有在mixer設置好了以後才會正常工作)。
-t raw 輸出是 aw數據(無變化的,直接從soundcard輸出)。
-t 使用普通輸出,以-"標出。
lame 編碼器:向錄音管道送出到mp3的轉換。
-x “輸入強制字節轉換”。我不知道這個功能的精確選項,但不用它,則過程不能執行。
-m s 編碼為一個mp3文件。一般地,‘lame將它編碼成joint-stereo:只有在兩個聲道有不同時才被編碼。結果,會得到一個高的壓縮結果,但是mp3質量比較差。
- 輸入為"stdin。
./test.mp3 最後的mp3文件的名字。
Mixer
正確地設置mixer-setting是非常重要的。mixer決定了錄音源。作為我們的目標,一個外部源與通過line-in接口與計算機聲卡連接。則錄音源應該是line-in。
除了正確地設置錄音源外,還必須使microfone off:你不想在錄音的同時有雜音。
注意:如果line-in沒有被作為錄音源,則不會有聲音在line-in被獲得(甚至你可以聽見音樂)!!!不要忘記將line-on設成unmute。
獲得好的錄音效果
有可能你通常在xwindows下工作,並且mpegrec將在Xwindows下執行。但這並不是一個好的主意,理由是:
·X windows需要大量的系統資源。當然對於記錄和編碼音樂也是這樣的。在Xwindows中,這樣可能會對錄制的聲音有所干擾。
·如果你使用實時記錄聲音,最好不要在計算機上運行其它任務。如果這樣,你最好不要用XWindows.
以上的注解表明了錄音效果可以在沒有圖形環境存在的情況下達到最佳。這就意味著需要在Bash-Shell(文本模式的shell)。理由是:
·你需要在Bash shell中使用聲音支持。在Xwindows被裝入時會對聲音支持作初始化。
·你需要一個在Bash shell下可使用的mixer
這兩個問題能夠很快被解決。第一個問題:
modprobe -k sb
這個命令裝入模塊“sb”。這是對於我的聲卡來講的(soundblaster awe 64)。如果你不知道需要裝入什麼模塊,請看一看/etc/conf.modules(suSE)或/etc/modules.conf(根據你的系統)。
對於我,這個聲卡部分是:
alias char-major-14 sb
pre-install sb /sbin/modprobe "-k" "adlib_card"
pre-install sb /sbin/modprobe "-k" "awe_wave"
options sb io=0x220 irq=5 dma=1 dma16=5 # mpu_io=0x330
options adlib_card io=0x388 # FM synthesizer
post-install sb /usr/bin/sfxload "/win98/Program
Files/Creative/ctsnd/sfbank/synthgs.sbk"
你的聲卡通常被定義成"alias char-major-14"(如果OSS驅動程序被使用時)這一行與用sb是相近的。所以我知道命令“modprobe -k sb初始化了聲卡。
第二個問題就是選擇聲卡的line-in在你的文本模式下的bashshell下。我使用aumix程序。如果在bash下aumix被執行了,則mixer以交互模式被運行。你使用箭頭來選擇不同的錄音源。<>鍵用來設置均衡。使用+和-來調整當前選擇的聲音源的音量。m是靜音或不靜音。
如果當前聲音源被選作為錄音源,一個紅色的"R"會被顯示在音量的左邊。如果聲音源只是用來作回放,則會顯示一個"P"。按下s保存當前的
設置在~/.aumixrc.這些設置在下一次啟動這個程序:aumix -l時被啟動。
為了自動操作以下過程,我寫了一個小腳本:./mrec test.mp3:
#!/bin/sh
if [ -z "$1" ]; then
echo "Usage: mrec mp3-output-file"
exit 0
fi
modprobe -k sb
aumix -l
mpegrec -b 128 -o "$1"
聲音被初始化,line-in被選擇作為錄音源,並且mpegrec立即開始錄音。
安裝mpegrec
我把mpegrec軟件的使用方法放在http://www.linuxfocus.org/common/src/article178/的文章中。關於mpegrec更多的信息可以在
http://www.netwaysglobal.com/mpegrec/找到。在這裡可以找到源程序和被編譯成win32的執行文件。
而lame文件和安裝指南可以在http://www.linuxfocus.org/English/March2001/article178.shtml#lame找到。
在Linux下安裝
·將文件復制到,比如/usr/local目錄下
·解壓文件:
gunzip mpegrec-1.0.src.tar.gz
tar -xvf mpegrec-1.0.src.tar
·輸入 cd mpegrec-1.0
·輸入make。編譯程序。
·輸入make install。這個程序就可以使用了。
安裝lame
lame 的安裝信息可以在http://www.mp3dev.org/mp3/找到。
安裝步驟
·復制tar.gz文件到/usr/local/目錄
·解壓文件:
gunzip lame3.70.tar.gz
tar -xvf lame3.70.tar
·輸入cd lame-3.70
·根據需要編輯Makefile。以下幾行可能需要修改:
# remove these lines if you dont have GTK, or dont want the GTK frame analyzer
GTK = -DHAVEGTK `gtk-config --cflags`
GTKLIBS = `gtk-config --libs`
# Comment out next 2 lines if you want to remove VBR histogram capability
BRHIST_SW99vCH = -DBRHIST
LIBTERMCAP = -lncurses
有“#”的行可能需要一個。你不需要這些額外的選項。
·輸入make來編譯‘lame.很有可能建立一個從/bin-Directory到/usr/local/lame-3.70/lame的字符連接,使得可以在任何地方執行lame。Lame 已經准備好了。
安裝sox
sox是一個用來記錄,轉換,或編輯聲音的程序。比如,可以為聲音文件加上回音效果。
sox可以作的轉換有:轉換wave文件到.au文件(SUN公司的音頻格式)等。可以在http://www.linuxfocus.org/common/src/article178/和http://home.sprynet.com/~cbagwell/sox.html找到有關於sox更多的信息。
安裝
·復制文件到/usr/local目錄
·解壓:
gunzip sox-12.17.tar.gz
tar -xvf sox-12.17.tar
·輸入cd sox-12.17
·輸入./configure.建立幾樣設置和建立Makefile。這個Makefile是專用於你的系統的。
·輸入make編譯sox
·輸入 make install安裝sox。
安裝sox
sox是一個用來記錄,轉換,或編輯聲音的程序。比如,可以為聲音文件加上回音效果。
sox可以作的轉換有:轉換wave文件到.au文件(SUN公司的音頻格式)等。可以在http://www.linuxfocus.org/common/src/article178/和http://home.sprynet.com/~cbagwell/sox.html找到有關於sox更多的信息。
安裝
·復制文件到/usr/local目錄
·解壓:
gunzip sox-12.17.tar.gz
tar -xvf sox-12.17.tar
·輸入cd sox-12.17
·輸入./configure.建立幾樣設置和建立Makefile。這個Makefile是專用於你的系統的。
·輸入make編譯sox
·輸入 make install安裝sox。