-- LameXtra v1.1 (c) 2014 Valentin Schmidt -- contact: fluxus@freenet.de LameXtra is a scripting xtra for director (win) that can be used to convert WAV files to MP3 files. It's based on the free MP3 Encoder LAME v3.97 (see http://www.mp3dev.org/). In addition, it has some utility functions to export sound members as WAV files, delete files and display an open file or save file dialog. To export an internal sound member as mp3 file, you can: 1. export it as temporary wav, using mp3_mem2wav(). 2. convert the wav to mp3, using mp3_lame(). 3. delete the temporary wav, using mp3_file_delete(). *************************************************************** INTERFACE *************************************************************** -- Main function * mp3_lame * -- Utilities * mp3_mem2wav any soundMem, any castLib, string output * mp3_display_open * -- string title, string filterMask, string defaultFileName * mp3_display_save * -- string title, string filterMask, string defaultFileName * mp3_file_delete string filename --------------------------------------------------------------- mp3_lame(string param1, string param2, ...) --------------------------------------------------------------- Description: ============ Uses exactly the same interface as lame.exe, with each parameter passed as separate string. For details on possible parameters type put mp3_lame("--help") or put mp3_lame("--help") into the message window. Example usage: ============== put mp3_lame("-V2", the moviepath&"input.wav", the moviepath&"output.mp3") put mp3_lame("-b128", "c:\test.wav", "c:\test.mp3") --------------------------------------------------------------- mp3_mem2wav(soundMemberNameOrNumber, castLibNameOrNumber, outputFile) --------------------------------------------------------------- IMPORTANT NOTICE: ================= The mp3_mem2wav function also requires the two xtras 'Mix Services.x32' and 'Sound Import Export.x32'! Description: ============ Exports the sound member 'soundMemberNameOrNumber' of castLib 'castLibNameOrNumber' to WAV file 'outputFile'. Returns error code or 0 for no error. Example usage: ============== err = mp3.mem2wav("mySound", 1, the moviepath&"test.wav") *************************************************************** LAME HELP: *************************************************************** --------------------------------------------------------------- put mp3_lame("--help") --------------------------------------------------------------- -- "LAME 32bits version 3.97 (http://www.mp3dev.org/) usage: lame [options] [outfile] and/or can be "-", which means stdin/stdout. RECOMMENDED: lame -V2 input.wav output.mp3 OPTIONS: -b bitrate set the bitrate, default 128 kbps -h higher quality, but a little slower. Recommended. -f fast mode (lower quality) -V n quality setting for VBR. default n=4 0=high quality,bigger files. 9=smaller files --preset type type must be "medium", "standard", "extreme", "insane", or a value for an average desired bitrate and depending on the value specified, appropriate quality settings will be used. "--preset help" gives more info on these --priority type sets the process priority 0,1 = Low priority 2 = normal priority 3,4 = High priority --longhelp full list of options --------------------------------------------------------------- put mp3_lame("--longhelp") --------------------------------------------------------------- -- "LAME 32bits version 3.97 (http://www.mp3dev.org/) usage: lame [options] [outfile] and/or can be "-", which means stdin/stdout. RECOMMENDED: lame -V2 input.wav output.mp3 OPTIONS: Input options: -r input is raw pcm -x force byte-swapping of input -s sfreq sampling frequency of input file (kHz) - default 44.1 kHz --bitwidth w input bit width is w (default 16) --scale scale input (multiply PCM data) by --scale-l scale channel 0 (left) input (multiply PCM data) by --scale-r scale channel 1 (right) input (multiply PCM data) by --mp1input input file is a MPEG Layer I file --mp2input input file is a MPEG Layer II file --mp3input input file is a MPEG Layer III file --nogap <...> gapless encoding for a set of contiguous files --nogapout output dir for gapless encoding (must precede --nogap) --nogaptags allow the use of VBR tags in gapless encoding Operational options: -a downmix from stereo to mono file for mono encoding -m (j)oint, (s)imple, (f)orce, (d)dual-mono, (m)ono default is (j) or (s) depending on bitrate joint = joins the best possible of MS and LR stereo simple = force LR stereo on all frames force = force MS stereo on all frames. --preset type type must be "medium", "standard", "extreme", "insane", or a value for an average desired bitrate and depending on the value specified, appropriate quality settings will be used. "--preset help" gives more info on these --comp choose bitrate to achive a compression ratio of --replaygain-fast compute RG fast but slightly inaccurately (default) --replaygain-accurate compute RG more accurately and find the peak sample --noreplaygain disable ReplayGain analysis --clipdetect enable --replaygain-accurate and print a message whether clipping occurs and how far the waveform is from full scale --freeformat produce a free format bitstream --decode input=mp3 file, output=wav -t disable writing wav header when using --decode Verbosity: --disptime print progress report every arg seconds -S don't print progress report, VBR histograms --nohist disable VBR histogram display --silent don't print anything on screen --quiet don't print anything on screen --brief print more useful information --verbose print a lot of useful information Noise shaping & psycho acoustic algorithms: -q = 0...9. Default -q 5 -q 0: Highest quality, very slow -q 9: Poor quality, but fast -h Same as -q 2. Recommended. -f Same as -q 7. Fast, ok quality CBR (constant bitrate, the default) options: -b set the bitrate in kbps, default 128 kbps --cbr enforce use of constant bitrate ABR options: --abr specify average bitrate desired (instead of quality) VBR options: -v use variable bitrate (VBR) (--vbr-old) --vbr-old use old variable bitrate (VBR) routine --vbr-new use new variable bitrate (VBR) routine -V n quality setting for VBR. default n=4 0=high quality,bigger files. 9=smaller files -b specify minimum allowed bitrate, default 32 kbps -B specify maximum allowed bitrate, default 320 kbps -F strictly enforce the -b option, for use with players that do not support low bitrate mp3 -t disable writing LAME Tag -T enable and force writing LAME Tag PSY related: --short use short blocks when appropriate --noshort do not use short blocks --allshort use only short blocks --notemp disable temporal masking effect --nssafejoint M/S switching criterion --nsmsfix M/S switching tuning [effective 0-3.5] --interch x adjust inter-channel masking ratio --ns-bass x adjust masking for sfbs 0 - 6 (long) 0 - 5 (short) --ns-alto x adjust masking for sfbs 7 - 13 (long) 6 - 10 (short) --ns-treble x adjust masking for sfbs 14 - 21 (long) 11 - 12 (short) --ns-sfb21 x change ns-treble by x dB for sfb21 experimental switches: -X n[,m] selects between different noise measurements n for long block, m for short. if m is omitted, m = n -Y lets LAME ignore noise in sfb21, like in CBR -Z [n] currently no effects MP3 header/stream options: -e de-emphasis n/5/c (obsolete) -c mark as copyright -o mark as non-original -p error protection. adds 16 bit checksum to every frame (the checksum is computed correctly) --nores disable the bit reservoir --strictly-enforce-ISO comply as much as possible to ISO MPEG spec Filter options: -k keep ALL frequencies (disables all filters), Can cause ringing and twinkling --lowpass frequency(kHz), lowpass filter cutoff above freq --lowpass-width frequency(kHz) - default 15% of lowpass freq --highpass frequency(kHz), highpass filter cutoff below freq --highpass-width frequency(kHz) - default 15% of highpass freq --resample sampling frequency of output file(kHz)- default=automatic ID3 tag options: --tt audio/song title (max 30 chars for version 1 tag) --ta <artist> audio/song artist (max 30 chars for version 1 tag) --tl <album> audio/song album (max 30 chars for version 1 tag) --ty <year> audio/song year of issue (1 to 9999) --tc <comment> user-defined text (max 30 chars for v1 tag, 28 for v1.1) --tn <track> audio/song track number (1 to 255, creates v1.1 tag) --tg <genre> audio/song genre (name or number in list) --add-id3v2 force addition of version 2 tag --id3v1-only add only a version 1 tag --id3v2-only add only a version 2 tag --space-id3v1 pad version 1 tag with spaces instead of nulls --pad-id3v2 pad version 2 tag with extra 128 bytes --genre-list print alphabetically sorted ID3 genre list and exit --ignore-tag-errors ignore errors in values passed for tags Note: A version 2 tag will NOT be added unless one of the input fields won't fit in a version 1 tag (e.g. the title string is longer than 30 characters), or the '--add-id3v2' or '--id3v2-only' options are used, or output is redirected to stdout. MS-Windows-specific options: --priority <type> sets the process priority: 0,1 = Low priority (IDLE_PRIORITY_CLASS) 2 = normal priority (NORMAL_PRIORITY_CLASS, default) 3,4 = High priority (HIGH_PRIORITY_CLASS)) Note: Calling '--priority' without a parameter will select priority 0. MPEG-1 layer III sample frequencies (kHz): 32 48 44.1 bitrates (kbps): 32 40 48 56 64 80 96 112 128 160 192 224 256 320 MPEG-2 layer III sample frequencies (kHz): 16 24 22.05 bitrates (kbps): 8 16 24 32 40 48 56 64 80 96 112 128 144 160 MPEG-2.5 layer III sample frequencies (kHz): 8 12 11.025 bitrates (kbps): 8 16 24 32 40 48 56 64 80 96 112 128 144 160