Content-type: text/html
uade123 is a command line player that can be used to play Amiga songs. It's options and behavior are documented here. There is also a plugin for the audacious and xmms (1).
Section FILE FORMAT DETECTION explains hardships of recognizing amiga formats and consequently problems it may cause for the user (and authors).
Section COMMAND LINE OPTIONS documents command line options for uade123.
Section ACTION KEYS documents action keys which are used to issue run-time commands to control playback. These commands include switching subsong, skipping to next song, skipping fast forward, pausing and altering post-processing effects.
Section CONFIGURATION FILES documents variables which can be changed in eagleplayer.conf, song.conf and uade.conf to alter default behavior of uade123 and other frontends. eagleplayer.conf is used for eagleplayer plugin specific configurations. song.conf is used for song specific configurations which can be used to change sound effects or avoid problems. uade.conf is the main configuration file that can be used to set defaults for variables. Command line options will always override uade.conf options.
-1, --one Play at most one subsong per file.
uade123 --set="gain=2" mod.foo.
Another example: Force mod.uptim8 to be played as a Startrekker 4 song:
uade123 --set="player=PTK-Prowiz epopt=type:flt4" mod.uptim8
playername prefixes=prefix1,prefix2,... [opt1 opt2 ...] [comment]
playername refers to an existing eagleplayer in players/ directory. prefixes is a list of file prefixes and postfixes that are associated with this eagleplayer. opt1, opt2 and so forth are options that can be given to the player.
Valid options for eagleplayer.conf are listed in the song.conf section.
Some example lines for eagleplayer.conf:
custom prefixes=cust
fred prefixes=fred broken_song_end
PTK-Prowiz prefixes=mod,pha,pp10 always_ends
EMSv6 prefixes=emsv6 speed_hack
foobar comment: this format is not detected by a filename
prefix but file content as it should be
The file shall have lines of following format:
md5=XXX option1 [option2 ...] [comment: YYY]
Valid options for eagleplayer.conf and song.conf:
a500 Use A500 filter emulation
a1200 Use A1200 filter emulation
always_ends A song will always end. This means that song end
detection code is perfect so timeouts in uade.conf
can be ignored. However, timeouts given from
command line will override this setting.
broken_song_end Song end reported by the eagleplayer is ignored
detect_format_by_content A song can only be detected by contents,
never by filename prefix or postfix
detect_format_by_name eagleplayer.conf only: the eagleplayer is
detected by name extension only. Furthermore,
any eagleplayer that recognizes the same file by
content is ignored. Do not use this option
without a good reason. Name extensions are
unreliable.
epopt=x Append option x for eagleplayer. Valid options
are listed in section "EAGLEPLAYER OPTIONS".
gain=x Set gain value to x
ignore_player_check Eagleplayer tries to play the song even if it is
not recognized as being in proper format. One
can use this option with bad eagleplayers in
eagleplayer.conf and bad rips in song.conf.
led_off Force LED off
led_on Force LED on
no_ep_end_detect Song end reported by the eagleplayer is ignored
no_filter No filtering (avoid this option, using a1200 is
better)
no_headphones, No headphone effect
no_panning No panning
no_postprocessing No postprocessing effects
ntsc Uses NTSC timing (can be buggy)
one_subsong Play only one subsong per file
pal Uses PAL timing
panning=x Set panning value to x
player=name Set eagleplayer, where name is the directory entry
in players/ dir. This option is not allowed in
eagleplayer.conf.
reject Reject a song (usable for blacklisting). This
option is not allowed in eagleplayer.conf.
resampler=x Set resampling method
silence_timeout=x Set silence timeout
speed_hack Enable speed hack
subsongs=x,y,... Set playable subsong (not implemented yet)
subsong_timeout=x Set subsong timeout
timeout=x Set timeout
vblank Play in vblank mode (works only for protracker variants)
comment is a tag after which everything is considered just a comment about the line.
Those options should be self-explanatory ;) A few example lines for song.conf:
md5=09ad7aed28ec0043e232060546259767 broken_subsongs comment cust.Bubble_Bobble reports wrong subsong numbers
md5=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx speed_hack comment this is the only song in format foo that needs speedhack
md5=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy led_off comment this song just sucks with filtering
md5=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz led_on comment turning LED ON makes this song sound c00l
md5=wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww no_panning subsongs=2,5 comment only subsongs 2 and 5 sound good
md5=c351076a79033336a0ea1747b6d78783 ntsc comment Play Platoon song in NTSC mode
The valid commands are:
action_keys x Set action keys "off" or "on".
buffer_time x Set audio buffer length to x milliseconds.
detect_format_by_content Only detect files by content. Do not
use file name based heuristics.
disable_timeout A song will never timeout.
enable_timeout A will timeout normally.
filter x Set filter emulation mode to be A500, A1200
or none.
force_led x Force LED "on" or "off"
force_led_off Same as "force_led off"
force_led_on Same as "force_led on"
frequency x Set output frequency to x Hz. The default is
44,1 kHz.
gain x Set gain value to x which is a non-negative
value. The default value is 1,0.
headphones Enable headphone effect.
headphones2 Enable headphone effect 2.
ignore_player_check Force eagleplayers to recognize any given
song.
no_ep_end_detect Disable eagleplayers ability to end song.
See --no-ep-end-detect.
no_filter Same as "filter none".
ntsc Set NTSC mode. (might not work properly)
one_subsong Play only one subsong per file.
pal Set PAL mode.
panning x Set panning value to x inside range [0, 2].
The default is 0.
random_play Set random play or shuffle mode. Used for
uade123 only.
recursive_mode Scan directories recursively. Used for uade123
only.
resampler x Set resampling method to x. It is either
default, sinc or none.
silence_timeout x Set silence timeout value to x seconds.
song_title x Set song title for GUI plugins according to
given specification x. See section SONG TITLE
SPECIFICATION.
speed_hack Enable speed hack mode.
subsong_timeout x Set subsong timeout value to x seconds. -1
implies no timeout.
timeout x Set timeout value to x seconds. -1 implies
no timeout.
verbose Enable verbose mode
%F - filename %T - songtitle
%P - player or formatname
%A - minimum subsong %B - current subsong
%C - maximum subsong %X - only display subsongs when more
than one
An example of alternative specification that displays the song name received from the eagleplayer (as opposed to file name):
song_title %T %X [%P]
Valid options for eagleplayers:
PTK-Prowiz epopt=vblank
epopt=type:<tracker>
<tracker> can be one of the following:
st20 (Soundtracker 2.0 - 2.3)
st24 (Soundtracker 2.4)
nt10 (Noisetracker 1.x)
nt20 (Noisetracker 2.x)
m&k. (Noisetracker M&K.)
flt4 (Startrekker 4ch)
pt10c (Protracker 1.0c)
pt11b (Protracker 1.1b - 2.1a)
pt23a (Protracker 2.3)
pt30b (Protracker 3.0b)
example: uade123 -x type:nt20 mod.foobar
Infogrames epopt=timer=x
This option is used to set playback speed.
Higher value means slower playback. This is the
CIA timer register value.
x is a hexadecimal value. The default is 1a00.
example: uade123 -x timer=24ff gobliins31.dum
UADE currently supports three resampling methods: none that directly discards 79 of the 80 samples; default that estimates the true output value by averaging the last 80 samples together (also known as boxcar filter). This is the recommended resampler; and sinc that trades cpu for best high-frequency component removal through low-pass filtering the audio with a sinc function.
The default resampler is a very good choice because it is pretty accurate and very fast, but loses some treble and causes some aliasing distortion. For high frequencies (above 44,1 kHz), sinc becomes an option and is probably the best choice.
These low-pass filters were most likely added in order to make Amiga's pulse-based audio sound softer, and to make lower sampling frequencies useful for audio playback: by removing some of the treble, the hard edges of a pulse waveform become rounder and the waveform undulates more smoothly, mimicking many instrument sounds more accurately at lower sampling rates. The downside of fixed filtering is that the smoothing occurs with all the higher sampling rates, too.
However, with the introduction of Amiga 1200 and its AGA graphics modes and spacious chip memory, it became possible to read more than 28876 samples per second from chip memory, and we guess that the fixed lowpass filter was removed entirely in favour for accurate treble response.
The filter emulation is based on hi-fi measurements made on two particular Amiga computers, Amiga 500 and Amiga 1200. The Amiga 500 output path was found to contain a 6 dB/oct lowpass RC filter circuit with cutoff at 5000 Hz. (Some early Amiga 500 revisions may have had 4500 Hz tuning for this filter.) The LED filter was found to be a 12 dB/oct Butterworth lowpass filter with cutoff value at approximately 3300 Hz. The details of the Amiga 1000 filter arrangements are not known, because nobody has been able to provide any samples.
Accurate digital simulation of analog filters is usually not possible without some upsampling. When "default" method is used, the samples are generated at the playback frequency, and the post-processing step that applies filtering is composed with a series of hand-fitted first-order IIR filters that together approximate the correct frequency response for the expected synthesis frequencies of 44,1 kHz or 48 kHz.
The sinc resampling method, in turn, emulates the filters directly at Paula's 3,5 MHz sampling frequency by folding the filters directly into the shape of the fundamental synthesis unit, the BLEP. In the sinc mode, the filters are realised by fitting the digital models for (slightly modified) butterworth and RC filters with the parameters mentioned above. Therefore sinc can be used on all frequencies above 44.1 kHz without quality loss (or increase, for that matter).
INCREASING AMIGA MEMORY FOR LARGE MODULE FILES
uaerc can be edited to increase Amiga memory. The variable named chipmem_size (4 by default) controls the memory allocation. The allocated memory size is determined by formula chipmem_size * 512 KiB, and thus, there is 2 MiB of memory available for modules by default. This variable can be set up to 16, which would mean 8 MiB of memory for modules.
#!/bin/sh
uade123 -c "$@" |aplay