On this page you will find a small collection of useful tools, which you can use together with Spark or for the development of DRM receivers.

Spark Remote Client - DRM Broadcast Monitoring and DRM Text Message update

The Spark Remote Client application is part of the Spark DRM Modulator installation. The remote client can be used to monitor and update DRM text messages during the DRM transmission (or MDI transmission). The remote client uses a subset of Spark Remote Client Interface (RCI) commands to visualize the content manager configuration and update the DRM text messages of audio streams. The connection is established via TCP/IP via a user-defined port (default port is 8500). If you want to use the Spark Remote Client, you need to enable this option in the Spark DRM Modulator content manager window as shown in the picture below.

Spark Content Manager Remote Client

In the Spark DRM Modulator content manager window, open the Remote Server Settings dialog and enable the RC server. To update the text messages on the fly, you must add at least one audio service with at least one text message in the DRM content manager panel. After you have started the broadcast, you can access the text message queue in the DRM content manager configuration using the Spark Remote Client application as depicted below. After you have started the DRM broadcast with RC server enabled, you can connect to the Spark DRM Modulator by pressing the play button on the Spark Remote Client main window. Finally, you can modify the DRM text messages during transmission without interrupting the broadcast.

Spark Remote Client Connection Window

Upon successful connection, you should see the Spark Remote Client main window as shown below:

Spark Remote Client Main Window

Ratemonkey - Realtime Signal Converter

Ratemonkey is a software tool used to acquire, resample and forward data from PCM sampled sources in realtime. It supports sample rate conversion for Microtelecom's Perseus sampling receiver in realtime.

Latest version: 0.6.1 download

Ratemonkey screenshot

Minimum requirements:

  • Java Runtime Enviroment (JRE) 6.0 or higher
  • Windows Vista/XP/2000 (32/64bit)

How does it work?

Ratemonkey acquires samples from an input device (e.g. a WAV file), resamples and processes the data and writes the resampled data to an output sink, such as the Soundcard, a UDP client, a TCP client or a WAV file.
The resampling is performed by a rational-factor FIR polyphase filter. The filter coefficients are calculated on the fly with respect to the command line arguments. The user can specify stopband attenuation, transition bandwidth as well as the number of coefficients to meet the image rejection requirements. If no arguments are given, Ratemonkey chooses suitable values considering the sample rate constraints. Additionally, the output gain can be adjusted during runtime. If the output signal starts clipping the clipping value in dB is indicated above the VU meter. By appropriately changing the output gain the clipping value can be counterbalanced. Note that the software doesn't have a build in AGC so that manual gain correction is necessary when the signal starts clipping.

Which devices are supported?

The user can choose between one of the following input devices:

  • Perseus sampling receiver (link)
  • WAV file

The resampled data can either be written to one of the following output devices:

  • Soundcard (line out)
  • TCP client (over network)
  • UDP client (over network)
  • WAV file
Ratemonkey function diagram

How do I use Ratemonkey?

In order to explain the usage of Ratemonkey, here are a few use-case examples. A detailed list of options can be found here.

Use the following option to use Perseus with the Fraunhofer Software Radio at 12 kHz IF:

Perseus receiver at 500 kHz sample rate
Soundcard (or VAC) at 48 kHz sample rate and 12 kHz intermediate frequency (IF)
ratemonkey.exe -indev perseus -inrate 500000 -outdev line -outrate 48000 -outifhz 12000
Shift from baseband to IF
WAV file at any sample rate
UDP at 56 kHz sample rate
ratemonkey.exe -indev wav -inwav "in.wav" -outdev udp -outrate 56000 -port 100 -host localhost -realtime
Perseus receiver at 500 kHz sample rate and 1 MHz LO frequency
WAV 192 kHz sample rate
ratemonkey.exe -indev perseus -inrate 500000 -perslo 1000000 -outdev wav -outrate 192000 -outwav "output.wav"
Perseus receiver at 250 kHz sample rate and 20 MHz LO frequency
Soundcard named "Primary Sound Device" at 48 kHz sample rate
ratemonkey.exe -indev perseus -inrate 250000 -perslo 20000000 -outdev line -outrate 48000 -outline "Primary Sound Device"

NOTE: The -outline "Primary Sound Device" parameter is optional. You can as well leave it away.
WAVE file at any sample rate
WAV file at 24 kHz sample rate
ratemonkey.exe -indev wav -inwav "in.wav" -outdev wav -outrate 24000 -outwav "output.wav" -inwavnorepeat
WAVE file at any sample rate
Soundcard at 48 kHz sample rate
ratemonkey.exe -indev wav -inwav "in.wav" -outdev line -outrate 48000 -realtime

Version history

  • Version 0.6.1 (05.06.2009) download
    - Added command line option: -outifhz
    - Added support to shift output signal on any intermediate frequency
  • Version 0.5.0 (08.05.2009) download
    - Added command line options: -complex, -outline, -outgaindb, -fftplotoff
    - Added VU meter and clipping indicator.
    - Added TCP support.
  • Version 0.4.5 (10.06.2008) download
    - Added Perseus-specific command line options: -perslo, -persdith, -perspreamp, -persatt, -perspres
  • Version 0.4.1 (05.06.2008) download
    - Added soundcard output
    - Added 24bit WAV file input support
  • Version 0.3.3 download
    - Initial release

Command line options

Ratemonkey v0.6.0 realtime sample rate converter.
(c) 2009 Michael Feilen.

Usage: RATEMONKEY -indev wav|perseus -outdev wav|udp|line -outrate hz [-flags]

  -indev device    Specifies the input device. Devices: wav, perseus.
                   a) Wav file input
                        -indev wav -inwav "infile.wav"
                        -inwavnorepeat (end process if wav file read)
                        -realtime      (see other options)
                   b) Perseus receiver running at 500 kHz sample rate
                        -indev perseus -inrate 500000
                      (valid sample rates are 125000, 250000, 500000
                       and 1000000.)
                        -persdith      (enable ADC dither)
                        -perspreamp    (enable preamplifier)
                        -perslo 100000 (set LO frequency to 100 kHz)
                        -persatt 0     (select attenuator 0)
                        0: Off
                        1: 10 dB
                        2: 20 dB
                        3: 30 dB
                        -perspres 0    (select preselector 0)
                        0: 0 - 1.7 MHz
                        1: 1.6 - 2.1 MHz
                        2: 2.1 - 3.0 MHz
                        3: 3.0 - 4.2 MHz
                        4: 4.2 - 6.0 MHz
                        5: 6.0 - 8.4 MHz
                        6: 8.4 - 12.0 MHz
                        7: 12.0 - 17.0 MHz
                        8: 17.0 - 24.0 MHz
                        9: 24.0 - 32.0 MHz
                        10: No Filter (Wideband)

  -outdev device   Specifies the output device. Devices: udp, tcp, wav, line
                   a) Wav file output at 48 kHz sample rate
                        -outdev wav -outwav "outfile.wav" -outrate 48000
                   b) UDP output at 96 kHz sample rate
                        -outdev udp -host -port 6000 -outrate 96000
                   c) TCP server output at 192kHz sample rate
                        -outdev tcp -port 6000 -outrate 192000
                   d) Line output (Soundcard) at 48 kHz sample rate
                        -outdev line -outrate 48000
                        (optional) -outline "Primary Sound Device"
  -firtabs 128     Number of filter tabs used for rate conversion.
                   The higher the number of tabs, the better
                   the approximation and image rejection becomes.
                   The default value is: 64.
  -imgrej 90       The image rejection in dB. The rolloff
                   of the filter depends on the number of fir-tabs.
                   The default value is: 90.
  -cutoff 0.8      The right edge cutoff frequency of the
                   image rejection filter.
                   The default value is: 0.9.
  -outbps 1        The number of bytes per sample of the output
                   device. The default value is: 2 (16 bit per sample).
  -outgaindb -6.0  Defines the gain of the output signal in dB.
                   The default value is: -3.0 dB.
  -outifhz 12000   Shifts complex valued input signals to an inter-
                   mediate frequency of 12 kHz.
                   The default value is: 0.0 Hz.
  -realtime        The realtime flag enables sample clock emulation
                   when reading from unclocked sources like a wav-file
                   If the realtime-flag is not set the rate conversion
                   will be performed as fast as possible.
  -console         Runs the ratemonkey without graphical output.
                   Ratemonkey consumes less CPU power with this option.
  -complex         Plots a complex spectrum. The left channel
                   contains the real component and the right channel
                   contains the imaginary component.
  -fftplotoff      Turns the spectrum plotting off.

Analog Filter Designer

Analog Filter Designer screenshot

This application calculates the phase and frequency response of arbitrary complex analog filters consisting of resistors, capacitors and inductors.
The user can append different blocks consisting of resistors and replace these resistors by different components like inductors, capacitors, serial or parallel ciruits and so on. To adjust the value of a component the user needs to double click on the icon until a slider pops up in a different window. By right-clicking on a component the user can alter the settings or replace the component with a different one.
To measure the circuit the user must append a measurement block. Measurement blocks can also be inserted between filter circuits to obtain measurements from the signal source up to the point of interest. Due to lack of time the varistor block functionality was not implemented. The values in the frequency and phase response window are highlighted when the user clicks into the plot. Furthermore the boundaries of the plot window are self-adjusting and store a couple of previous measurements until the clear-all button was pressed.
The program was written during the semester break in 2005 and comes with no guarantee.

Java executable: filter.jar
Source code:

- Java Runtime Enviroment (JRE) 5.0 or higher
- Windows/Linux/Mac

Wave File Signal Generator

Console screenshot

Command line wave file signal generator which writes a sine or a phase modulated sine signal to a wav file.

Wave generator options:
  -?     show this option menu
  -file  the name of the output file (default: output.wav)
  -kb    output filesize in kB (default: 5000)
  -sr    the sample rate in Hz (default: 48000)
  -ch    the number of channels (default: 2)
  -res   the number of bytes per sample (default: 2)
Sine  LFO:
  -frq   LFO frequency in Hz (default: 0.00)
  -db    attenuation in dB (default: -3.00)
Phase LFO:
  -mfrq  modulation frequency in Hz (default: 0.00)
  -mran  modulation range in percent (100% = 2PI) (default: 100.00)

- Windows x86

Executable: wavsig.exe
Source code: (VS.NET 2003 project)

Top-Pfeil to the top