gstlal_play

This program will play data in a variety of ways

This program will play data in a variety of ways. Its input is anything supported by datasource. You can additionally whiten the data or apply a band pass filtering. It can direct its output to either your sound card, various audio file formats, or stderr/stdout in tab delimited ASCII text.

Graph of the gsreamer pipeline

  • gray boxes are optional and depend on the command line given

digraph G {
      // graph properties

      rankdir=LR;
      compound=true;
      node [shape=record fontsize=10 fontname="Verdana"];
      edge [fontsize=8 fontname="Verdana"];

      // nodes

      "mkbasicsrc()" [URL="\ref datasource.mkbasicsrc()"];
      "whitened_multirate_src()" [label="whitened_multirate_src()", URL="\ref multirate_datasource.mkwhitened_multirate_src()", style=filled, color=lightgrey];
      "mkresample()" [URL="\ref pipeparts.mkresample()", style=filled, color=lightgrey];
      "mkcapsfilter()" [URL="\ref pipeparts.mkcapsfilter()", style=filled, color=lightgrey];
      "mkaudiochebband()" [URL="\ref pipeparts.mkaudiochebband()", style=filled, color=lightgrey];
      "mkaudiocheblimit()" [URL="\ref pipeparts.mkaudiocheblimit()", style=filled, color=lightgrey];
      "mkaudioconvert()" [URL="\ref pipeparts.mkaudioconvert()"];
      "mkaudioamplify()" [URL="\ref pipeparts.mkaudioamplify()"];
      "mkautoaudiosink()" [URL="\ref pipeparts.mkautoaudiosink()", style=filled, color=lightgrey];
      "mkwavenc()" [URL="\ref pipeparts.mkwavenc()", style=filled, color=lightgrey];
      "mkflacenc()" [URL="\ref pipeparts.mkflacenc()", style=filled, color=lightgrey];
      "mkvorbisenc()" [URL="\ref pipeparts.mkvorbisenc()", style=filled, color=lightgrey];
      "mkfilesink()" [URL="\ref pipeparts.mkfilesink()", style=filled, color=lightgrey];
      "mknxydumpsink()" [URL="\ref pipeparts.mknxydumpsink()", style=filled, color=lightgrey];

      // connections

      "mkbasicsrc()" -> "mkresample()" [label=" --whiten not provided"];
      "mkresample()" -> "mkcapsfilter()";
      "mkcapsfilter()" -> "mkaudioconvert()" [label=" neither --low-pass-filter nor --high-pass-filter provided"];
      "mkcapsfilter()" -> "mkaudiochebband()" [label=" --low-pass-filter and --high-pass-filter provided"];
      "mkcapsfilter()" -> "mkaudiocheblimit()" [label=" --low-pass-filter or --high-pass-filter provided"];

      "mkbasicsrc()" -> "whitened_multirate_src()" [label=" --whiten provided"];
      "whitened_multirate_src()" -> "mkaudioconvert()" [label=" neither --low-pass-filter nor --high-pass-filter provided"];
      "whitened_multirate_src()" -> "mkaudiochebband()" [label=" --low-pass-filter and --high-pass-filter provided"];
      "whitened_multirate_src()" -> "mkaudiocheblimit()" [label=" --low-pass-filter or --high-pass-filter provided"];

      "mkaudiochebband()" -> "mkaudioconvert()";
      "mkaudiocheblimit()" -> "mkaudioconvert()";

      "mkaudioconvert()" -> "mkaudioamplify()";

      "mkaudioamplify()" -> "mkautoaudiosink()" [label=" --output not provided"];
      "mkaudioamplify()" -> "mkwavenc()" [label=" --output ends with '.wav'"];
      "mkaudioamplify()" -> "mkflacenc()" [label=" --output ends with '.flac'"];
      "mkaudioamplify()" -> "mkvorbisenc()" [label=" --output ends with '.ogg'"];
      "mkaudioamplify()" -> "mknxydumpsink()" [label=" --output ends with '.txt' or is /dev/stderr or /dev/stdout"];
      "mkwavenc()" -> "mkfilesink()";
      "mkvorbisenc()" -> "mkfilesink()";
      "mkflacenc()" -> "mkfilesink()";
}

Usage cases

See datasource.append_options() for additional usage cases for datasource specific command line options

  1. Viewing low latency data in stdout (e.g. on CIT cluster) Note ctrl+c kills this:

    $ gstlal_play --data-source framexmit --channel-name=L1=FAKE-STRAIN  \
    --output /dev/stdout
    

2. Pipe low latency data to an ogg file narrowing in on the sweet spot and add amplification to make it audible. Note ctrl+c kills this:

$ gstlal_play --data-source framexmit --channel-name=L1=FAKE-STRAIN  \
--high-pass-filter 40 --low-pass-filter 1000 --amplification 1e21 --output test.ogg
  1. Write injection time series from an xml file into an ASCII delimited text file:

    $ gstlal_play --data-source silence --gps-start-time 966383960 \
    --gps-end-time 966384960 --channel-name=L1=FAKE-STRAIN  \
    --injections=BNS-MDC1-FIXEDMASS.xml --output test.txt
    
  2. Other things are certainly possible. Please add some!

Command line options

Usage: gstlal_play [options]

Options:
  -h, --help            show this help message and exit
  --output=filename     Set the filename in which to save the output.  If not
                        given, output is sent to the default audio device.
                        The filename's extension determines the format, the
                        following are recognized:  .wav, .flac, .ogg, .txt,
                        /dev/stdout, /dev/stderr
  --sample-format=name  Force a specific sample format for the output.  If not
                        specified, the format is chosen by auto-negotiation
                        with the encoder.  Allowed values are any GStreamer-
                        recognized format that is compatible with the
                        requested encoder.  Examples include "F32LE", "F64LE".
  --rate=Hz             Downsample input to this sample rate. Default = 4096
                        Hz.  Must be <= input sample rate or else you will get
                        a caps negotiation error.
  --whiten              Whiten the time series (default = do not whiten).
  --veto-segments-file=filename
                        Set the name of the LIGO light-weight XML file from
                        which to load vetoes (optional). Must coincide with
                        --whiten
  --veto-segments-name=name
                        Set the name of the segments to extract from the
                        segment tables and use as the veto list.  Must
                        coincide with --whiten
  --reference-psd=file  When whitening, normalize the time series to the
                        spectrum described in this XML file.  If this option
                        is not given, the spectrum is measured from the data.
  --low-pass-filter=Hz  Low pass filter frequency (default = no low-pass
                        filter).  Low-pass filter is applied after whitening.
  --high-pass-filter=Hz
                        High pass filter frequency (default = no high-pass
                        filter).  High-pass filter is applied after whitening.
  --amplification=num   Amplify the timeseries this much (default = no
                        amplification).  Amplification is applied after low-
                        and high-pass filtering. For unwhitened h(t) that is
                        bandpassed to the most sensitive region you might need
                        to set this to 1e20 to make it audible
  -v, --verbose         Be verbose.

  Data source options:
    Use these options to set up the appropriate data source

    --data-source=source
                        Set the data source from
                        [frames|framexmit|lvshm|nds|silence|white].  Required.
    --block-size=bytes  Data block size to read in bytes. Default 16384 * 8 *
                        512 (512 seconds of double precision data at 16384 Hz.
                        This parameter is only used if --data-source is one of
                        white, silence, AdvVirgo, LIGO, AdvLIGO, nds.
    --frame-cache=filename
                        Set the name of the LAL cache listing the LIGO-Virgo
                        .gwf frame files (optional).
    --frame-type=name   Set the frame type for a given instrument.  Can be
                        given multiple times as --frame-type=IFO=FRAME-TYPE.
                        Used with --data-source=frames
    --data-find-server=url
                        Set the data find server for LIGO data discovery. Used
                        with --data-source=frames
    --gps-start-time=seconds
                        Set the start time of the segment to analyze in GPS
                        seconds. Required unless --data-source=lvshm
    --gps-end-time=seconds
                        Set the end time of the segment to analyze in GPS
                        seconds.  Required unless --data-source=lvshm
    --injection-file=filename
                        Set the name of the LIGO light-weight XML file from
                        which to load injections (optional).
    --channel-name=name
                        Set the name of the channels to process.  Can be given
                        multiple times as --channel-name=IFO=CHANNEL-NAME
    --idq-channel-name=idqname
                        iDQ channel names to process. Must also provide idq-
                        state-channel-name. Can be given multiple times as
                        --idq-channel-name=IFO=IDQ-CHANNEL-NAME
    --idq-state-channel-name=idqstatename
                        iDQ state channel names to process. Can be given
                        multiple times as --idq-state-channel-name=IFO=IDQ-
                        STATE-CHANNEL-NAME
    --nds-host=hostname
                        Set the remote host or IP address that serves nds
                        data. This is required iff --data-source=nds
    --nds-port=portnumber
                        Set the port of the remote host that serves nds data.
                        This is required iff --data-source=nds
    --nds-channel-type=type
                        Set the port of the remote host that serves nds data.
                        This is required only if --data-source=nds.
                        default==online
    --framexmit-addr=name
                        Set the address of the framexmit service.  Can be
                        given multiple times as --framexmit-
                        addr=IFO=xxx.xxx.xxx.xxx:port
    --framexmit-iface=name
                        Set the multicast interface address of the framexmit
                        service.
    --state-channel-name=name
                        Set the name of the state vector channel.  This
                        channel will be used to control the flow of data via
                        the on/off bits.  Can be given multiple times as
                        --channel-name=IFO=CHANNEL-NAME
    --dq-channel-name=name
                        Set the name of the data quality channel.  This
                        channel will be used to control the flow of data via
                        the on/off bits.  Can be given multiple times as
                        --channel-name=IFO=CHANNEL-NAME
    --shared-memory-partition=name
                        Set the name of the shared memory partition for a
                        given instrument.  Can be given multiple times as
                        --shared-memory-partition=IFO=PARTITION-NAME
    --shared-memory-dir=name
                        Set the name of the shared memory directory for a
                        given instrument.  Can be given multiple times as
                        --shared-memory-dir=IFO=DIR-NAME
    --shared-memory-assumed-duration=SHARED_MEMORY_ASSUMED_DURATION
                        Set the assumed span of files in seconds. Default = 4.
    --shared-memory-block-size=SHARED_MEMORY_BLOCK_SIZE
                        Set the byte size to read per buffer. Default = 4096.
    --frame-segments-file=filename
                        Set the name of the LIGO light-weight XML file from
                        which to load frame segments.  Optional iff --data-
                        source=frames
    --frame-segments-name=name
                        Set the name of the segments to extract from the
                        segment tables.  Required iff --frame-segments-file is
                        given
    --state-vector-on-bits=bits
                        Set the state vector on bits to process (optional).
                        The default is 0x7 for all detectors. Override with
                        IFO=bits can be given multiple times.  Only currently
                        has meaning for online (lvshm) data.
    --state-vector-off-bits=bits
                        Set the state vector off bits to process (optional).
                        The default is 0x160 for all detectors. Override with
                        IFO=bits can be given multiple times.  Only currently
                        has meaning for online (lvshm) data.
    --dq-vector-on-bits=bits
                        Set the DQ vector on bits to process (optional).  The
                        default is 0x7 for all detectors. Override with
                        IFO=bits can be given multiple times.  Only currently
                        has meaning for online (lvshm) data.
    --dq-vector-off-bits=bits
                        Set the DQ vector off bits to process (optional).  The
                        default is 0x160 for all detectors. Override with
                        IFO=bits can be given multiple times.  Only currently
                        has meaning for online (lvshm) data.