Most megtanulhatod, miként konvertálgass mindenféle hang/zenei állományokat ilyen meg olyan fájlformátumba PARANCSSORBÓL. Hidd el nekem, istenbizony az a legegyszerűbb. A közölt szkripteket én írtam, bár van aminek ősét úgy vadásztam eredetileg én is az Internet setét bugyraiból, aztán módosítottam. Nekem mindegyik működik, rendszeresen használom őket. Ha nálad nem működnek, akkor "A hiba az Ön készülékében van".
A következő konverziókra találsz e cikkben szkripteket/megoldásokat:
mp3-wav ogg-wav wma-mp3 wav-ogg mp3-ogg ogg-mp3 wav-mp3 wav-midi midi-wav
sid-wav raw-ogg
MP3-WAV konverzió
Mindenekelőtt megtanulunk a fontosabb fájljtípusainkból wav-ot készíteni. Kezdjük az mp3-mal! Ezt a következő paranccsal érhetjük el:
vz@Csiszilla ~]lame --decode n.mp3 n.wav
ID3v2 found. Be aware that the ID3 tag is currently lost when transcoding.
input: n.mp3 (44.1 kHz, 2 channels, MPEG-1 Layer III)
output: n.wav (16 bit, Microsoft WAVE)
skipping initial 1105 samples (encoder+decoder delay)
Frame# 7162/7163 128 kbps
Látható: a parancs után meg kell adni az átkódolandó mp3 file nevét, majd azt is, mi legyen az eredményként kapott wav file neve.
OGG-WAV konverzió
Ogg Vorbis fájlból wav gyártásához a Vorbis-Tools nevű progira van szükségünk. Függősége a Libao program. Tehát ha nem volna meg a rendszeredben, akkor telepítsd ezeket a progikat.
Ezután így használhatjuk:
vz@Csiszilla ~]oggdec v.ogg -o v.wav
OggDec 1.0.1
Decoding "v.ogg" to "v.wav"
[ 99.5%]
vz@Csiszilla ~]
Azt hiszem ez is teljesen világos.
WMA-MP3 konverzió
A wma számok átkonvertálása:
Ez a kis szkript a könyvtárban levő összes wma kiterjesztésű fájlt átkonvertálja mp3 formátumúba. Itt már meg sem tartjuk a közben keletkező wav állományt. Ezt a szkriptet nevezzük el mondjuk úgy, hogy „wmamp3”, mentsük el, adjunk rá futási jogot a
chmod 755 wmamp3
paranccsal, ezután használhatjuk. Szóval a szkript tartalma:
#!/bin/bash
current_directory=$( pwd )
#Szóközök aláhúzássá konvertálása
for i in *.wma; do mv "$i" `echo $i | tr ' ' '_'`; done
#Nagybetűk kisbetűsítése
for i in *.[Ww][Mm][Aa]; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done
#Az Mplayerrel wav-ba alakítjuk / majd bekódoljuk mp3-má a LAME-vel (Az alább következő 2 sort egy sorba kell írni a for-tól a done-ig!)
for i in *.wma ; do mplayer -vo null -vc dummy -af resample=44100 -ao pcm -waveheader $i && lame -m s audiodump.wav -o $i; done
#A filenév konvertálása
for i in *.wma; do mv "$i" "`basename "$i" .wma`.mp3"; done
rm audiodump.wav
Megjegyzendő, arra nem adok módszert, hogyan lehet wma-ba kódolni. A wma a Microsoft cég saját zenei formátuma, és ilyesmit „igaz Kocka” nem használ. Ha wma-hoz jut, azt átkódolja, és törli utána a wma-t!
WAV-OGG konverzió
Egyetlen wav szám ogg-ba konvertálása:
vz@Csiszilla ~]oggenc v.wav
Opening with wav module: WAV file reader
Encoding "v.wav" to
"v.ogg"
at quality 3,00
[ 99,8%] [ 0m00s remaining] |
Done encoding file "v.ogg"
File length: 3m 23,0s
Elapsed time: 0m 21,1s
Rate: 9,6527
Average bitrate: 99,9 kb/s
Igazán egyszerű: az oggenc után meg kell adni a wav file nevét, s erre ő készít egy ugyanolyan nevű állományt, csak a kiterjesztése lesz ogg !
Ha a könyvtárban levő összes wav file-ból óhajtanánk ogg-ot készíteni:
#!/bin/bash
current_directory=$( pwd )
#Bekódoljuk ogg-gá az oggenc-vel
for i in *.wav ; do oggenc $i; done
A fenti szkriptet mentsük el mondjuk mindenwavogg néven a szkriptjeink közé, és... de a többit már úgyis tudod, kedves Olvasó! A használata egyszerűen:
mindenwavogg
MP3-OGG konverzió
Ezután könnyű olyan szkriptet írnunk, ami rögtön ogg-ba kódol mp3 számot.
Ez a kis szkript a paraméterként megadott nevű mp3 állományt átkonvertálja ogg formátumúvá. Mentsük el mondjuk mp3ogg néven, adjunk rá futtathatósági jogot, tegyük be ugyanoda, ahová a wmamp3 szkriptet is tettük, s ezután a használata mondjuk az xxx.mp3 nevű file-ra: mp3ogg xxx
A szkript:
#! /bin/bash
lame --decode $1.mp3 $1.wav
oggenc $1.wav
rm $1.wav
ls
A végén mint látható, még előzékenyen ki is listázza nekünk az aktuális könyvtárat. Ha ezt nem akarjuk, a végéről hagyjuk le az „ls” parancsot. E szkriptnél a paraméternél elég megadni az mp3 file nevét a kiterjesztés nélkül, azaz ne úgy hívjuk, hogy mp3ogg ezaneve.mp3
hanem így: mp3ogg ezaneve
A szkript először készít egy ideiglenes wav állományt, azt ogg-ba kódolja, majd törli az ideiglenes állományt.
Egy példa a futására, az input file neve v.ogg:
vz@Csiszilla ~]mp3ogg v
input: v.mp3 (44.1 kHz, 2 channels, MPEG-1 Layer III)
output: v.wav (16 bit, Microsoft WAVE)
skipping initial 1105 samples (encoder+decoder delay)
Frame# 7810/7810 128 kbps MS
Opening with wav module: WAV file reader
Encoding "v.wav" to
"v.ogg"
at quality 3,00
[ 99,6%] [ 0m00s remaining] -
Done encoding file "v.ogg"
File length: 3m 23,0s
Elapsed time: 0m 21,2s
Rate: 9,5997
Average bitrate: 104,4 kb/s
Desktop n.mp3 n.wav v.mp3 v.ogg zardbe.odt
vz@Csiszilla ~]
Ennek a fordítottja, az ogg-mp3 konverzió:
OGG-MP3 konverzió
Ez a szkript a megadott ogg formátumú állományt átkonvertálja mp3 formátumúvá. A szkript:
#! /bin/bash
oggdec $1 -o tmp_wav
lame -h tmp_wav $1.mp3
rm -f tmp_wav
Ezt is nevezzük el, mondjuk oggmp3 néven, s integráljuk a rendszerünkbe a korábbi példákhoz hasonlatosan. Megjegyzés: itt a teljes nevet kell megadni input paraméterként, tehát így hívd:
oggmp3 ezaneve.ogg
és NE így:
oggmp3 ezaneve
Ha ez túl kényelmetlen, akkor ezt a szkriptet használd helyette, itt már nem kell megadnod a kiterjesztést is:
#! /bin/bash
oggdec $1.ogg -o tmp_wav
lame -h tmp_wav $1.mp3
rm -f tmp_wav
Én is ezt az utóbbi változatot használom. Egy példa a futására (az állomány neve v.ogg):
vz@Csiszilla ~]oggmp3 v
OggDec 1.0.1
Decoding "v.ogg" to "tmp_wav"
[ 99.5%]
LAME 3.97 32bits (http://www.mp3dev.org/)
Using polyphase lowpass filter, transition band: 16538 Hz - 17071 Hz
Encoding tmp_wav to v.mp3
Encoding as 44.1 kHz 128 kbps j-stereo MPEG-1 Layer III (11x) qval=2
Frame | CPU time/estim | REAL time/estim | play/CPU | ETA
7810/7810 (100%)| 0:34/ 0:34| 0:35/ 0:35| 5.9515x| 0:00
----------------------------------------------------------------------------
kbps LR MS % long switch short %
128.0 27.8 72.2 99.5 0.3 0.2
Writing LAME Tag...done
ReplayGain: -4.3dB
vz@Csiszilla ~]
WAV-MP3 konverzió
Ez a szkript a megadott wav file-ból gyárt MP3-at. Mentsük el a szkriptjeink közé wavmp3 néven. Használata mondjuk a v.wav file esetén:
wavmp3 v
Látható, a kiterjesztést nem kell megadni neki, tudja, hogy az .wav, s ebből gyárt egy ugyanolyan nevűt .mp3 kiterjesztéssel. A szkript tartalma:
#! /bin/bash
lame -h $1.wav $1.mp3
Ha a könyvtárban levő összes wav file-ból óhajtanánk mp3-at készíteni:
#!/bin/bash
current_directory=$( pwd )
#Bekódoljuk mp3-má a LAME-vel
for i in *.wav ; do lame -m s "$i" "`basename "$i" .wav`.mp3"; done
A fenti szkriptet mentsük el mondjuk mindenwavmp3 néven a szkriptjeink közé, és... de a többit már úgyis tudod, kedves Olvasó! A használata egyszerűen:
mindenwavmp3
WAV-MIDI konverzió
Igen, ilyet is lehet csinálni! Ehhez a „waon” nevű progira van szükségünk. A projekt honlapja: http://waon.sourceforge.net/
E sorok írásakor az aktuális verzió a 0.9 számú.
A telepítése forrásból történik: a letöltött forrást kicsomagoljuk valami nekünk tetsző könyvtárba, abba belépünk, majd kiadjuk e parancsot:
make
Ezután a progink már használható. Használata egyszerű, és parancssoros:
waon -i inputfile.wav -o outputfile.mid
vagyis megadjuk paraméterként a bemeneti wav fájlt, s hogy milyen néven hozza létre a midi fájlt.
Csodát persze ne várjunk tőle. Az eredmény minősége nagyban függ attól, hány hangszer szól és milyen tisztán az input fájlban...
MIDI-WAV konverzió
Ez sokkal egyszerűbb, mint az előző, WAV-MIDI konverzió esete. Ehhez csak a Timidity++ progira van szükségünk, ami különben is lejátssza nekünk a midi számokat. Mi sem egyszerűbb annál, hogy így indítsuk, mint az az alábbi példán látszik:
vz@Csiszilla ~/waon]timidity -Ow ali.mid
Playing ali.mid
MIDI file: ali.mid
Format: 1 Tracks: 12 Divisions: 240
Track name: BrassSection Arranged by...
Track name: SynthVoice ... Gene Cowan
Track name: Violin
Track name: Grand Piano
Track name: Pizz Strings
Track name: Fantasia
Track name: Sitar
Track name: StrEnsemble2
Track name: StrEnsemble2
Track name: Drums
Track name: Acoustic Bass
Output ali.wav
Playing time: ~199 seconds
Notes cut: 0
Notes lost totally: 0
vz@Csiszilla ~/waon]moc
Running the server...
Trying JACK...
JACK tmpdir identified as [/tmp]
Trying ALSA...
És kész is az egész, a lényeg a -Ow kapcsoló, s erre az ali.mid számból készített nekem egy ali.wav nevű fájlt! Jó tudni azonban, a konvertálás „valós idejű”, azaz kb ugyanannyi ideig tart, mint ameddig a tényleges zeneszám lejátszása tartana...
SID-WAV konverzió
A SID a régi C-64 (Commodore-64) számítógépek zenei formátuma. Sok szép zene született akkoriban erre a számítógépre. Ezek most SID formátumban elérhetőek, s e könyv egy másik fejezetében adok is módszert rá, miként lehet ezeket meghallgatni a Moc zenelejátszó programmal. Igen ám, de a SID formátumot nem játssza le például az MP3 lejátszónk! Át kéne konvertálni! Célszerűen wav formátumba, abból aztán könnyen gyárthatunk mp3-at vagy ogg-ot vagy amit akarunk.
A megoldást ehhez nekünk a SID2WAV nevű program hozza el, amit a
http://www.jahtari.org/magazine/sid/downloads.htm
oldalról tölthetünk le. Ez egy zip file, amiben kicsomagolás után egy sid2wav.exe file-ot találunk. Hát ez egy windowsos program, nem linuxos... De sebaj! Természetesen nem fogunk a kedvéért egy Windowst felrakni, ellenben telepíthetjük a wine nevű windows-emulátort.
Ezután a sid2wav programba már könnyű életet lehelni a
wine sid2wav.exe
paranccsal, amire rövid tájékoztatást ír ki a program használatáról angol nyelven, az alább látható módon:
vz@Csiszilla ~/Wine]wine sid2wav.exe
SID2WAV Synthetic Waveform Generator Portable Version 1.8/1.36.21
Copyright (c) 1994-97 All rights reserved.
Authors: Michael Schwendt
Adam Lorentzon
syntax: sid2wav [-] |- [outputfile]
commands: -h display this screen
-f set frequency in Hz (default: 44100)
-16 16-bit (default: 8-bit)
-s stereo (default: mono)
-ss enable stereo surround
-u au output (8000Hz mono 8-bit u-law)
-o set song number (default: preset)
-a improve PlaySID compatibility (not recommended)
-a2 transparent ROM memory mode (overrides -a)
-nf no SID filter emulation
-n enable NTSC-clock speed for VBI tunes (not recommended)
-m mute voices out of 1,2,3,4 (default: none)
example: -m13 (voices 1 and 3 off)
-t set seconds to play (default: 60)
-b skip first seconds into the song (default: 0)
-fin fade-in time in seconds (default: 0)
-fout fade-out time in seconds (default: 2)
Ezt tanulmányozhatjuk, különböző paramétereit megtudandó... Egy rövid példafuttatás, amikor is a BLACK_WINDOW.SID állományt konvertálom át wav-ba:
vz@Csiszilla ~/Wine]wine sid2wav.exe BLACK_WINDOW.SID
SID2WAV Synthetic Waveform Generator Portable Version 1.8/1.36.21
Copyright (c) 1994-97 All rights reserved.
Authors: Michael Schwendt
Adam Lorentzon
File format : PlaySID one-file format (PSID)
Condition : No errors
Name : Dariusz Maslowski (Signor)
Author : Black Window
Copyright : 1996 Fraction
Load address : $1000
Init address : $1000
Play address : $1003
SID Filter : Yes
Memory mode : Bank Switching
Frequency : 44100 Hz
Bits/sample : 8
Channels : Mono
Setting song : 1 out of 1 (default = 1)
Song speed : 50 Hz VBI (PAL)
File length : 60 seconds
Output file : BLACK_WINDOW.wav
Generating sample data...don't interrupt !
Length of output file (bytes) : 2646044
Please do not forget to give the credits whenever using a waveform created
by this application !
Alapértelmezett beállításként 60 másodpercet játszik le az adott állományból, ezen lehet változtatni a -t kapcsolóval. Vagyis ha azt akarjuk hogy 3 percet játsszon le (ami 180 másodperc) akkor így hívjuk:
wine sid2wav.exe -t180 BLACK_WINDOW.SID
Megjegyzendő, hogy a wav állománynév így ugyanaz lesz mint az input file neve, csak a kiterjesztés lesz wav. Akkor van csak baj, ha azon a(z output) néven már szerepel egy állomány a könyvtárban, ekkor nem törli le, s nem hajlandó elkészíteni az (új) állományt, hanem hibaüzenettel kilép. A megoldás: indítás előtt töröljük le a régi wav file-ot.
RAW-OGG konverzió
Mindenekelőtt: hogyan jutunk RAW számokhoz? Legegyszerűbben úgy, hogy a CDW programmal beolvastatunk egy audiolemezt. A CDW progi egy „konzolos” CD/DVD író szoftver, de képes arra, hogy az audiolemezt beolvassa, sávonként külön állományba, RAW formátumban. („2 channels, 44100 samples per second, 16 bit signed PCM, little endian (intel).”) A beolvasást a „Read disc” menüpont végzi, a részletekért olvassuk el a CDW man-oldalát.
Ezzel csak az a baj, hogy szeretett Moc programunk nem játssza le. Át kell konvertálni.
Egy szám átkonvertálása:
oggenc -r -o track_01.ogg track_01.raw
A könyvtárban levő összes RAW szám átkonvertálása:
#!/bin/bash
current_directory=$( pwd )
#Bekódoljuk ogg-gá az oggenc-vel
for i in *.raw ; do oggenc -r $i; done
A szkriptet nevezzük el mondjuk „mindenrawogg”-nak, és használjuk megelégedésünkre!