What is baudline?
Mystery Signal
command line options
Running "baudline -help" prints out this list of command line options.

usage:   baudline [-options ...] optional_file.wav

-help                Print this message and exit.
-version             Print version of baudline and exit.
-display hostname:0  Remote X server to contact and display on.
-geometry #x#+#+#    Size and Position of main spectro window.
-bg color            Background color.
-fg color            Foreground color.
-iconic              Start with the spectro window iconified.
-root                Spectrogram only display in root window.
-realtime            Activate real-time kernel scheduling.
-threads number      Number of DSP engine processing threads.
-pipeline number     Size of the DSP work queue pipeline.

-modifier key        key = {ctrl alt meta}, default = alt
-spacebar mode       Toggle mode = {off stop recordpause recordplay playpause}
-palette filename    Load custom color palette (format RGB text file).
-utc time            Set UTC time in YYYY:MM:DD-HH:MM:SS.uuuuuu format.
-noise dB            Enable noise impairment to output paths {0 ... -132}

-reset               Reset to the default configuration settings.
-session name        Use session 'name' for configuration settings.
-csession name       Like -session but add unique color icons.
-tsession name       Like -csession but add (name) to window titles.

-pause               Start baudline in pause mode.
-play                Start baudline in play mode if file is loaded.
-record              Start baudline in record mode.

-operation           Set mapping {none invert absolute delta xor ...}
-transform           Set mapping {fourier autocorrelation bitraster ...}
-space               Set mapping {magnitude phase linear logarithmic ...}
-quadrature          Enable complex I/Q display analysis.
-flipcomplex         Swap I and Q channels when doing -quadrature.
-monet               Enable surround extraction display analysis.

-psd                 Replace axis dB with PSD units volts^2/Hz.
-reversetimeaxis     Reverse time axis direction for recording.

-memory number       Megabytes of memory to use for buffers.
-fftsize number      Transform size {128 256 512 1024 2048 4096 ...}
-overlap number      Sliding overlap percentage {1 ... 100}
-slidesize number    Sliding overlap number of samples.
-samplerate number   Set sample rate.
-decimateby number   Set value to decimate by.
-decimategain dB     Set decimation filter gain.
-calibratesr ppm     Calibrate sample rate with this PPM correction.
-basefrequency Hz    Set baseband DC center frequency.

-mixer  number       Manual mapping of mixer to audio device
-mixer1 number       where -mixer# represents /dev/mixer# and
-mixer2 number       number represents /dev/audio#
-mixer3 number       
-mixer4 number       

-devaudio  channel   Set and enable an input card # from the
-devaudio1 channel   specified channel type.
-devaudio2 channel   
-devaudio3 channel   
-devaudio4 channel   values = {off mic line CD digital2 line3 ...}

-devtone             Enable Tone Generator as an input device.
-fullduplex          Map all audio devices to be full duplex.

-stdin               Enable standard input as the only input.
-channels number     Number of channels for stdin, default = 1
-format type         Sample format {alaw ulaw s8 u8 le16 be16 le32f be32f}
-scaleby float       Scale by factor for floating point formats.
-stdout              Enable standard output.

-infrags number      Input buffering, # of fragments 0=maximize
-outfrags number     Output delay, # of fragments 0=maximize
-fragsize number     Fragment size in bits.
-brokentrigger       Audio driver trigger is broken, do prime.

-overlays number     Number of colors per position (RGB default = 3)
-verticalsync number Set the vertical sync refresh rate in Hz.
-jumpstep number     Set the FPS jump step parameter.
-xslip number        Set the throttling xslip parameter.
-overclock           Experimental, overclock the fragment rate.
-backingstore        Enable winwin copy speed optimization.

-nobackingstore      Disable backing store optimization.
-nodoublebuffer      Disable video display double buffering.
-nodither            Disable dither for quantization conversions.

-sysinfo             Probe and print system hardware resources.
-debug               Print startup and general debug messages.
-debugfragments      Print out a stream of fragment data.
-debugcadence        Print out a stream of cadence slice data.
-debugjitter         Print out a stream of jitter timing data.
-debugrate           Print out a stream of sample rate tracking data.
-debugmeasure        Print out a stream of measurement data.
-debugtimer ms       Milliseconds between debug rate and measure lines.

-average             Popup average window.
-histogram           Popup histogram window.
-playdeck            Popup play deck window.
-scrollcontrol       Popup scroll control window.
-stats               Popup stats window.
-tonegenerator       Popup tone generator window.
-waveform            Popup waveform window.
-peakhold            Enables spectrum smoothing with decay hold.

Baudline can be run remotely and use X11 to display its window contents over a network connection.  The -display command line option sets the remote X server to contact and display on.  The parameters are "-display hostname:0" where hostname is the name of the machine to display and :0 is the display number.  This is equivalent to setting the $DISPLAY environment variable with the following command:

setenv DISPLAY hostname:0

Many .login scripts set this environment variable when you rlogin in.  Note that the -display command line option overrides the $DISPLAY environment variable.  Also the hostname of your remote machine might need to be added to the X server access list on the display machine.  This can be accomplished with the command "xhost +" which grants access to everyone or "xhost +remotename" where remotename is the name of the remote machine that baudline is running locally on.

Baudline's display can be tunneled over a secure connection with "ssh -C -X host" where the -C option requests data compression which is useful for slow links.  Also of interest is streaming the raw samples over a network channel, for details see the -stdin and -stdout command line options.

Activate real-time kernel scheduling for baudline by using the SCHED_RR (round robin) option.  Potential performance improvements include: smoother frame rates, fewer xruns, and more deterministic operation.  Combining the -realtime command line option with a real-time (RT) kernel has the potential to improve performance even more. 

Necessary permissions are required to be able to change the scheduling policy.  This can be accomplished by running as root or by installing a scheduling kernel patch that is designed for JACK RT operation.

For more information on real-time kernel scheduling and SCHED_RR see:
  • man sched_setscheduler

Set the number of DSP engine processing threads.  Baudline automatically selects the optimal value.  This command line option is useful for testing and benchmarking the performance of different thread configurations.

Mono-core systems default to a special 0 thread mode which is more efficient than the 1 thread configuration.  Multi-core systems default to having the same number of threads as there are cores.  A maximum of up to 32 cores are supported.

Set the pipeline size of the DSP work queue.  Baudline automatically selects the optimal value which is equal to twice the number of threads.  Different values can be manually set for benchmark testing and performance tuning purposes.  The -threads value must be greater than 0 for this option to be effective.  The maximum pipeline value is 64.

Set the command key shortcut modifier (example: Alt+O for the open file dialog).  On Linux, FreeBSD, and Solaris the default setting is the Alt key.  On Mac OS X the default setting is Meta which is the Apple Command key.  The possible settings are:
  • ctrl
  • alt
  • meta

Use the "space bar" to perform special stop or cyclic run mode changing actions.  The possible toggle mode settings are:
  • off
  • stop
  • recordpause
  • recordplay
  • playpause
For example with the command "baudline -spacebar playpause", pressing the space bar will toggle baudline between the Play and the Pause modes which would be useful for repeating listening tests.  With the "stop" option a space bar press will switch baudline into the Pause mode.  The default value is "off" which means all space bar presses are ignored.

Set the baudline UTC time in YYYY:MM:DD-HH:MM:SS.uuuuuu format where YYYY is years, MM is months, DD is days, HH is hours, MM is minutes, SS is seconds, and .uuuuuu is microseconds.  This command sets the time reference of the first sample (0 ms) when a file is loaded or a record is started.  This command line option is designed to be used in conjunction with the UTC time measurement window.

Normally a script would set the -utc option.  Either a stable time reference like the GPS clock would be used for live recording, or a historic time stamp would be used if the signal source is a database archive system.

Note that leap seconds are currently ignored.  The last leap second was introduced at midnight December 31 2005. 

The command "-utc 0" is a special shortcut option for setting a zero reference time baseline for either recording or file loading.  It is equivalent to typing "-utc 0000:01:01-00:00:00.000000" manually.

Baudline is a fully session-aware application that can save and restore its system state.  This means baudline can start up in exactly the same state it was in when it was last closed.  Details such as which windows were open, window geometry, window positions, scroll bar values, zoom levels, devices enabled, sample rates, and many other miscellaneous parameter settings are all remembered.  There are four types of session methods that are important to understand. 

baudline (no session options)
Starting up baudline without any session options will cause the run commands (rc) in the ~/.baudline/baudline_rc file to be loaded and processed.  If the _rc file doesn't exist, baudline will use its default configuration, and the _rc file will be created when the program is closed.  Any configuration details that are changed while running baudline will be saved on program exit.  Note that any command line options will override the same command option in the _rc file.  It is not recommended to edit the baudline_rc file, however, since it is a text file, the advanced user may wish to look it.

baudline -session name
Named sessions can create custom configurations for specific tasks such as Netscape or Konqueror file loading, long term low frequency bass environmental analysis, scientific experiments, and test bench setups.  Instead of loading and processing the baudline_rc file, the file ~/.baudline/session/name is loaded and processed.  The file "name" can be any legal UNIX filename.  If there isn't a file in the ~/.baudline/session/ directory called "name", the baudline_rc file will be loaded, and if that doesn't exist baudline will fallback to using the default configuration settings. All configuration details, including any parameters changed while running, will be saved in the session file on program exit.  Note that any command line options will override the matching option in the session file.

baudline -csession name
baudline -tsession name
Are subsets of the -session command line option whose purpose is to make it easier to distinguish between multiple running baudline sessions.  Use only one of the { -session, -csession, -tsession } options at a time.  The -session option uses the standard baudline purple and green icon scheme.  The -csession option is like -session but it adds unique color icons to every window.  The binary color combinations are a function of the first letter of the session name.  The -tsession option is like -csession with its unique color icons but it also adds the session (name) to all window titles. 

baudline -reset
This command line option resets baudline to its default configuration settings.  No baudline_rc or session file is loaded.  Returning to a baseline setup is a useful thing to do for a number of reasons.  If baudline is behaving oddly and you suspect it might be due to your accidental setting of some obscure parameter, do a -reset and baudline will start up with a clean slate.  If you like starting up baudline with several command line options, from a script or another program for example, doing a -reset will anchor all of your options to a baseline state so that repeatability and a certain level of control can be achieved.  Note that when running baudline with both the -reset and -session options, the -reset option overrides the -session option at startup by using the default configuration settings, and then at program exit any changes are saved to the named session file. 

X Session Management Protocol (XSMP)
Session managers such as Gnome's sawfish and KDE2's kwin are XSMP enabled which means when you log back in all your windows are exactly in the same state they were when you logged out.  Note that any loaded file is also remembered unlike the above session methods.

Set the preferred channel mapping operation.  The default operation is none.  Possible -operation options are:
  • none
  • invert
  • absolute
  • reciprocal
  • sqrt
  • square
  • cube
  • quad
  • logarithm
  • clip
  • delta
  • absdelta
  • -hz
  • hilbert
  • bits
  • reverse
  • endian
  • addition
  • subtraction
  • multiplication
  • division
  • modulus
  • xor
  • magnitude
  • phase
Note that quotation marks around the "-hz" option might be required depending on your shell (sh, csh, tcsh, bash, ...).

Set the preferred channel mapping transform.  The default transform is Fourier.  Possible -transform options are:
  • off
  • fourier
  • blipfourier
  • complexfourier
  • fourierratio
  • transferfunction
  • impulseresponse
  • autocorrelation
  • crosscorrelation
  • bitraster
  • sampleraster
  • histogram

Set the preferred channel mapping space.  The default space is magnitude.  Possible -space options are:
  • magnitude
  • magnitude'
  • magnitude''
  • magnitude'''
  • phase
  • phasedelay
  • groupdelay
  • real
  • imaginary
  • linear
  • logarithmic
  • agclinear
  • agclog
Note that quotation marks around the "magnitude'" derivative options might be required depending on your shell (sh, csh, tcsh, bash, ...).

The quadrature command line option instructs baudline to treat every pair (multiple of 2) channels as a complex signal.  The left and right channels of a stereo signal would be treated as the in-phase (I) and quadrature (Q) components of a single complex signal instead of the default case of two real signals.  Note that with the -quadrature option and an 8 channel file or 8 audio card inputs the tasking will be to treat them as 4 complex signals.  Four complex inputs?  Most users won't even have one complex input, but it's good to know that if you did, then baudline would be flexible enough to handle it.

The -quadrature command is just a convenience feature.  Baudline can be manually tasked by the input channel mapping window to perform complex Fourier transforms on any set of signals, live or pre-recorded.  The OFF transform allows the y Channel to be displayed in the Waveform and Histogram windows and it also allows both channels of a complex I/Q signal to be automatically saved.  Look at the picture below to see what exactly baudline is setting. 

The -flipcomplex command line option complements the -quadrature command by flipping the in-phase (I) and quadrature (Q) components.  With this option the left channel of a stereo signal is mapped to the quadrature component and the right channel is mapped to the in-phase component.  This is a useful thing to do if for some reason your I/Q lines are swapped.  Funnily enough, this happens about 50% of the time!  Note that the -quadrature option needs to be used in conjunction with the -flipcomplex option for the operation to work correctly.  Look at the picture below to see how baudline tasks the channel mapping when the -flipcomplex option is on.

One might ask, what difference does it make which channel is the in-phase (I) and which is the quadrature (Q) component?  Intuition says it shouldn't make a bit of difference, but it does.  The Hilbert viewpoint is that the quadrature part of a complex signal is just the in-phase part phase shifted by 90°.  So, swapping the I and Q axes, making it Q/I, retards the phase shift instead of advancing it. Another way of correcting the problem is to perform a polarity inversion on the in-phase channel.  This is equivalent to doing a 180° phase shift (-90 + 180 = +90).  The picture below with the -x operation is functionally similar to swapping the I and Q parts with the -flipcomplex option.

Down Mixer
The input device's down mixer normally does a real-to-real baseband (0 Hz) down conversion.  The -quadrature option changes this behavior.  It forces the down mixer's output to be a quadrature (I/Q) signal.  This can mean two different things.

With a real (mono) input, a complex (I/Q) signal is created and mixed down to baseband and the output is a quadrature signal.  Real in, quadrature out.  This mode of operation can be used to create a quadrature signal from a real signal.  See the diagram on the right for a graphical illustration. 

To enable quadrature output with this mode the input device's decimation ratio must be 2 or greater, otherwise the down mixer is bypassed and a real signal is output.  Note that because of quadrature sampling this extra level of decimation does not cause any loss of signal.  When used with the tone generator's loopback feature, baseband centered complex test signals can be created.

The other thing the -quadrature option can signify is with a quadrature input, the signal pair is mixed down to baseband and the output is a quadrature signal.  Quadrature in, quadrature out.  See the diagram on the right for a graphical illustration.

In summary.  Three distinct down mixer modes of operation are possible.  The -quadrature option adds the last two input/output modes:
  • real-to-real
  • real-to-quadrature
  • quadrature-to-quadrature

The Monet command line option is a convenience function that automatically tasks the channel mapping window to display a stereo signal in a new and enlightening way.  The left and right channels are mapped as usual, but what is new, is an inter-channel difference signal which performs a pseudo surround channel extraction.  Subtracting the right channel from the left channel (x - y) has the effect of  reducing mono signals and boosting surround signals that are matrix encoded 180° out of phase.  When fed a stereo signal with strong surround elements the result is a blend of red, green, and blue overlays that look like an impressionist painting, in our minds anyway, hence the name Monet.

This picture shows how the -monet option tasks the channel mapping settings.

Power Spectral Density (PSD) is a method of scaling the spectra amplitude axis such that it becomes a continuous function of frequency.  Terms are density per unit frequency (1 Hz) which is volts^2/Hz.

The psd command line option transforms the dB axis into the PSD axis and the dBm axis into the amplitude axis.  The intended purpose of this transformation is to replace the relative 0 dB calibrated scale to an absolute scale that more accurately represents the raw data.  This option is also known as the "strain axis" feature.

The label for the strain axis will be "PSD".  The values of the PSD axis will have the units of volts^2/Hz as defined by the formula:

PSD = log10((r*r+i*i) / (N*sample_frequency))

Where "r" and "i" are the raw FFT data.  Note that prior to windowing and the FFT the 16 bit samples will have the effect of being multiplied by the 1./scaleby correction factor in order to restore the original samples values.

This operation can be thought of as mapping the existing dB axis to the PSD axis.  Both axis are in log space and the shape of their curves are identical.  The only difference is in the actual numeric values.  Instead of the 0 dB to -136 dB range of the current dB axis, the PSD axis will be a function of the -scaleby option and the range will vary accordingly.  The plotted spectrum and spectrogram displays will look identical with or without the -psd option, only the ruler and measurement values will be different.

The dBm axis of the Waveform and Histogram window will be changed to map to the Amplitude axis.  The ruler scale will be linear and the title will be "amp".  This axis will in effect be multiplied by "1./scaleby" which will undo the initial quantization.  The on-screen-display will display the full value that the mouse is pointing to.  The ruler is space limited and it will display major ticks with the exponential power of 10 notation (1e7, -3e5, +5e4, ...).  A unique "z" notation will be used with negative exponents, for example -3e-5 will be displayed on the ruler as -3z5.

Reverse the time axis of the spectrogram and waveform windows.  The standard baudline mode of operation is for the time (0 ms) to be on the bottom when in record mode and at the top when a file is loaded.  This -reversetimeaxis option flips the record case so that time (0 ms) is now at the top.  This means that the time axis will now scroll while recording. 

Manually calibrate the sample rate value with this PPM (parts per million) correction factor.  This command line option is used by the sample rate estimation and calibration feature.  Usage is "-calibratesr ppm".

    ppm = (true_rate / requested_rate - 1.) * 1000000.
If you have an extremely accurate function generator (with a cesium or rubidium clock) then baudline's highly accurate Hz measurement windows can be used to create a calibration factor.  Simply substitute the input and measured Hz with the true and requested rates in the above PPM formula.

An insightful observation is how this value compares with the NTP drift adjustment value.  Both values are in PPM.  The NTP value is drift error of the main system clock.  The baudline value is the error of the ADC/DAC clock.  Compare:
  • cat /etc/ntp/drift
  • cat /var/lib/ntp/drift
  • cat ~/.baudline/baudline_rc | grep calibratesr
  • cat ~/.baudline/session/name | grep calibratesr

Baudline has automatic /dev/mixer# to /dev/audio# mapping logic.  The simple case of a single solitary sound card presents no challenge, but things start to get tricky when two or more sound cards are present.  Sometimes this logic isn't smart enough to correctly figure out the physical mapping.  When this happens the -mixer command line option can be used to override the automatic mapping.

The format is "-mixer# number" where both "#" and "number" are values from 0 ... 4 which represent /dev/mixer# and /dev/audio#.  For example the command "-mixer1 2" says map /dev/mixer1 to /dev/audio2.  For trouble shooting is it a good idea to check the -sysinfo output and the layout in the input devices window.

We would like to hear from you if you happen to have a computer setup that causes baudline's automatic mixer mapping to fail, meaning that it can't figure out the correct map.  Please send a short email describing the audio cards in your setup, the correct map, and the text output from "baudline -sysinfo" to us at the email address in the Contact link.

This command lets you set the input device from the command line.  This can be a useful thing to do if you run baudline from scripts and require some sort of external configurability.  It is preferable to use the -session option and set the device and channel input from baudline's input devices window, but if you need to you can do this from the command line.

The format is "-devaudio# channel" where # is a number from 0 ... 4 and channel is a string from the following list { off, microphone or mic, line, CD, digital1, digital2, digital3, line1, line2, line3, phone_in, video, radio, and synthesizer }.  The channel "off" disables the input device.  Only a small subset of this is supported by each actual audio card.  

From the stdin man page: "every Unix program has three streams opened for it when it starts up, one for input, one for output, and one for printing diagnostic or error messages."  Standard input is a Unix mechanism that allows any program output to be piped in as an input data stream.  Typically, it is used with programs like "grep" and "sort" but it can be used with any program that writes output to stdout.  The stdin, stdout, and pipe are very powerful concepts. 

Standard input can be selected as the only input stream by using the command line option "baudline -stdin."  Unfortunately, both standard input, and audio card input or tone generator input, cannot be active at the same time.  There are three command line options that are -stdin specific.

-channels #
The channels option allows you to select the number of input channels from 1 to 9.  The default value is 1 channel (mono).  Multiple channels have interleaved data samples.

-format type
This option lets you choose the sample format.  The default value is le16 (16 bit little endian).  The following table lists the possible PCM formats:

command  description  
alaw A-Law companding
ulaw u-Law companding
s8 linear 8 bit signed
u8 linear 8 bit unsigned
le16 linear 16 bit signed little endian (default) 
be16 linear 16 bit signed big endian
le32f 32 bit float little endian
be32f 32 bit float big endian

-scaleby #
When one of the floating point -format modes (le32f, be32f) are selected, the stdin floating point samples will be multiplied by the -scaleby option and then quantized to fit into a 16 bit signed integer.  The purpose of the scaleby option is to choose which bits should be kept and which should be discarded.  This could lead to oversaturation for high energy samples, such samples will be clamped to either +32768 or -32767.  Note that the -scaleby option will operate as a 1./scaleby correction on files loaded from the standard Open File and the Raw Parameters windows thus overriding the "auto measure" option.  The scaleby option accepts a floating point value and the default value is 1. (unity).  If the floating point samples are in the domain {-1., +1.} then the proper scaling command would be "-scaleby 32767."

Here are some interesting examples of how to use the standard input option in baudline :
  • cat /dev/mem | baudline -stdin -overlap 100 -record
  • rsh remote_machine 'cat /dev/audio' | baudline -stdin -format ulaw -record
  • sun_echo m320 | baudline -stdin -format alaw -samplerate 8000 -record
  • mpg123 -s | baudline -stdin -channels 2 -samplerate 16000 -overlap 15 -record
[Update December 2004]
The command "cat /dev/mem" is broken in the Linux 2.6 kernel.  Use "cat /proc/kcore" instead.  Unfortunately kcore also includes the swap space so dumping it will cause heavy disk usage.

This command line option enables standard output which is a Unix mechanism for piping program output to the inputs of other programs.  See -stdin for more information.  Baudline's -stdin and -stdout options can be used together to create some very interesting and useful data flow streams.

The data format is 16 bit linear samples that are interleaved in the case of multiple channels.  The stdout pipe will block when full so any prolonged blockage on the sink side may result in dropped audio input or output data depending on the stdout mode of operation.

modes of operation
  • Record mode.  All recorded channels (including -stdin and the tone loopback if enabled) will be streamed to stdout.  The output stream samples will be interleaved if more than one channel is active. 
  • Play mode.  Audio will be output to the /dev/audio devices and will also be streamed to stdout in stereo (2 channel interleaved).  Note that the stdout data is post Play Deck meaning that all speed, scale, shift, filtering, phono scratching, and panning will be performed on the samples prior to streaming to stdout. 
  • Record or Play mode.  Manually select stdout in the Tone Generator or the Play Deck.  Sample data will only be sent to the stdout pipe and not the audio device.  The stream will be stereo (2 channel) and it will be free-running (not clocked) which means it will send data to stdout as fast as the sink can consume it.  Note that this mode overrides all other stdout modes.
  • Pause mode.  Alt+| paste a selected section of sample data to stdout.  This stdout paste command pops up the progress bar window which displays the current status of the operation. 
Here are some interesting examples of how to use the standard output option in baudline:
  • baudline -stdout > file.raw
  • baudline -stdout | gzip > file.raw.gz
  • baudline -stdout | oggenc -Q -r - > file.ogg
  • baudline -session a -stdout | baudline -session b -stdin
  • baudline -session a -stdout | baudline -session b -stdin -stdout | baudline -session c -stdin
  • ...

  • mkfifo fifo
  • tail -c 4096 prime_file.wav | cat - fifo | baudline -session infinite_loop -stdin -stdout >! fifo

Use the jack command line option for a quick setup of the JACK Audio Connection Kit as baudline's default audio device.  This is equivalent to manually enabling JACK in the Input and Output Device windows.  The JACK settings are stored in the session variables so the -jack option only needs to be used once.  Note that the sample rate is determined by the JACK server.

-channels #
The channels option allows you to select the number of input and output channels from 1 to 9.  This is equivalent to manually setting the number of channels in the Input and Output device windows.

-jackd name
Specify the JACK Audio Connection Kit server name that baudline should connect to when more than one instance of jackd is running.  Multiple jackd's are useful when multiple sound cards are used.  Most users will not need to use this command line option.

-inconnect name Connect the JACK input to this output client.  This is equivalent to manually selecting the JACK client name from the option menu in the Input Devices window.  The default action is to connect to the alsa_pcm client.  Here is an example of how to use it:

-outconnect name
Like the -inconnect option but connect the JACK output to this input client.

Baudline's client connection and patch channel controls are useful for most general purpose setups.  For more sophisticated and flexible control a program such as qjackctl should be used.  Baudline's JACK connection controls can work in harmony with qjackctl but it might be more convenient to set the baudline connections to OFF and do all patching externally. 

Here are some examples on how to use the JACK command line options:
  • baudline_jack -jack
  • baudline_jack -jack -channels 2 -inconnect xmms
  • baudline_jack -jack -channels 1 -outconnect baudline
  • baudline_jack -jack -channels 4 -inconnect ardour -outconnect jamin
  • baudline_jack -jack -channels 9 -inconnect OFF -outconnect OFF

The brokentrigger command line option is a flag which informs baudline that the audio driver trigger start mechanism (SNDCTL_DSP_SETTRIGGER) is broken and a data priming is required.  The purpose of this command is to reduce the stalling when a record operation begins.  Read this SB Live! and this via_82cxxx FAQ entry to learn more about the -brokentrigger option.

The overlays command line option lets you change the number of colors per position that are automatically tasked in the input channel mapping window.  Valid values are {1, 2, 3}.  For 16 and 24 bit graphics the default value is 3 which corresponds to a RGB overlay plane.  For 8 bit graphics the default value is 1.  Using "-overlays 1" with 16 bit graphics will automatically task just one green pane per position which is the same behavior that that 8 bit has.  Note that using the -overlays option will affect both the maximum number of channels that baudline can display and load from a file. 

By default XFree 4.x.x has backing store turned off.  For maximum baudline performance the backing store feature should be enabled.  For information on how to enable it see this FAQ entry.

Backing store is a feature in the X Server that maintains window contents when a window is obscured.  When the window, or section of it, is uncovered the X server automatically and quickly repaints it.  With today's modern machines this feature is not that expensive in terms of memory usage and it is only engaged by applications that specifically ask for it, and only a few do.  Turning on backing store will have minimal effect on memory usage, so there really is no reason to keep it turned off.

When your X Server has backing store enabled baudline will automatically detect it and use it. Nothing more is required for maximum performance.

When your X11 Server has backing store disabled baudline will revert to using slower pixwin copies for the main scrolling spectrogram window.  Doing so will result in about a 3X performance hit to the scrolling frame rate that will dramatically reduce smoothness.  The benefit of doing this is 100% video integrity and no more popup ghosting.  It is a quality vs. speed tradeoff. 

Note that because of this new behavior the old "-nobackingstore" option is now no longer useful for general use.  For the special case of using the -root wallpaper option when your window manager happens to have a toolbar that obstructs the root display, like KDE1's kwm, the -nobackingstore might be useful in producing correct wallpaper scrolling.

For those who wish to retain the old artifact prone but faster and smoother scrolling baudline behavior the "-backingstore" command line option was created.  Using the option will force baudline to perform the faster winwin copies.  Most people will not want to use this command.

Disable the video display double buffering feature.  This option will increase display flicker but it will also reduce video bandwidth consumption which can increase the frame rate (FPS) on older computers.

The baudline default is for double buffering to be enabled.  The purpose of this command line option is to be a way to restore the old behavior.

Dither is enabled by default. The no dither command line option disables it and instead uses a pure rounding rule when performing quantization.

Dither is a feature that reduces quantization noise when doing 16 bit sample conversions.  It works by adding a small amount of noise to a signal before it is quantized (32 bit -> 16 bit).  This may at first seem like a bad thing to do but it is in fact quite beneficial.  Dither has the effect of reducing harmonic distortion.  The addition of dither can also improve weak signal detection in specific quantization scenarios.  In baudline dither can apply to stdin, the Tone Generator, audio output, and file loading.

In normal operation it is not recommended that dither be disabled.  Although, disabling dither can be useful for educational purposes.  Try enabling the tone generator loopback in the Input Devices window and setting the Tone Generator to a clean unmodulated sine wave with a frequency that is an integer ratio of the sample rate.  For example: a 1 kHz sine wave with a 8000 sample/second rate.  Now try the same thing with the -nodither command line option.  Notice the large amounts of harmonic distortion?  Another experiment to try is lowering the digital gain of the Tone Generator to -132 dB, make note of the power of the weak signal.  When you try the same thing with the -nodither option the signal will be completely gone.

Print out a stream of sample rate estimation data to stderr.  This option is useful for logging the sample rate estimates to a file with a command like:
  • baudline -debugrate >& sample_rate.txt
The data file can then plotted with a graphing program or parsed with a shell script.  It can be insightful to watch the sample rate accuracy improve and converge over time, watch the 24 hour thermal cycle of the clocks in action, or monitor the effects of NTP on the system clock.  A significant observation worth noticing is that the change of time is not constant.  System d/dt is a variable.  This seemingly absurd statement can have a major impact on baudline frequency and time measurement when high accuracy is desired. 

To use this feature open the Input Devices and/or the Output Devices windows (iconified is OK).

An absolute UTC anchor time is printed in the header comment.  The first column is the time in seconds since sample rate estimation started.  The following columns are the sample rate estimates of the active channels.  The output speed of this command prints at a rate of about three times per second.  This rate can be lowered to print only once per minute, hour, or day with the -debugtimer command line option.

Print out a stream of measurement data to stderr.  This option is useful for logging measurement data to a numeric text file.  The data file can then plotted with a graphing program or parsed with a shell script.  Real-time measurement data analysis is even possible.  Note that "|&" only works with certain shells like tcsh.  See these stderr redirecting and piping commands:
  • baudline -debugmeasure >& measurements.txt
  • baudline -debugmeasure |& measurement_stream_analyzer
To use this measurement logging feature first open some measurement windows of interest.  Next measurement data will stream to stderr while in the record or play modes.  Also any measurement data from a paste command will print to stderr.  A #comment header line will print at mode transitions that labels the meaning of the different numeric data columns.

An absolute UTC anchor time is printed in the header comment.  The first column is the time in seconds since measurement logging started.  The following columns are values from the active measurement windows.  Note that the printed values are the same as the values displayed in the measurement windows so the record averaging menu option will also control the measurement variance.  The output speed of this command prints at a line rate equal to baudline's current frame rate (FPS).  This rate can be very high and it can vary dramatically based on system load.  The -debugtimer command line option can be used to control the output data rate.

Control the time in milliseconds between the printing of the -debugrate and the -debugmeasure data streams.  This command is useful for lowering the data output rate.  The usage format is "-debugtimer ms" where ms is an integer milliseconds value. 

Here are two examples of how to use the -debugtimer command.  The first command will print out the sample rate estimates once an hour.  The second command will print the measurement data once every ten seconds:
  • baudline -debugrate -debugtimer 3600000
  • baudline -debugmeasure -debugtimer 10000

Copyright © 2010 - group - blog - site map