jackclient

Client that dumps samples directly to the jack client with the jack package.

autopilot.stim.sound.jackclient.SERVER = None

JackClient – After initializing, JackClient will register itself with this variable.

autopilot.stim.sound.jackclient.FS = None

int – Sampling rate of the active server

autopilot.stim.sound.jackclient.BLOCKSIZE = None

int – Blocksize, or the amount of samples processed by jack per each JackClient.process() call.

autopilot.stim.sound.jackclient.QUEUE = None

multiprocessing.Queue – Queue to be loaded with frames of BLOCKSIZE audio.

autopilot.stim.sound.jackclient.PLAY = None

multiprocessing.Event – Event used to trigger loading samples from QUEUE, ie. playing.

autopilot.stim.sound.jackclient.STOP = None

multiprocessing.Event – Event that is triggered on the end of buffered audio.

Note

NOT an event used to stop audio.

autopilot.stim.sound.jackclient.Q_LOCK = None

multiprocessing.Lock – Lock that enforces a single writer to the QUEUE at a time.

class autopilot.stim.sound.jackclient.JackClient(name='jack_client')[source]

Bases: multiprocessing.process.Process

Client that dumps frames of audio directly into a running jackd client.

When first initialized, sets module level variables above.

Variables:
  • name (str) – name of client, default “jack_client”
  • q (Queue) – Queue that stores buffered frames of audio
  • q_lock (Lock) – Lock that manages access to the Queue
  • play_evt (multiprocessing.Event) – Event used to trigger loading samples from QUEUE, ie. playing.
  • stop_evt (multiprocessing.Event) – Event that is triggered on the end of buffered audio.
  • quit_evt (multiprocessing.Event) – Event that causes the process to be terminated.
  • client (jack.Client) – Client to interface with jackd
  • blocksize (int) – The blocksize - ie. samples processed per JackClient.process() call.
  • fs (int) – Sampling rate of client
  • zero_arr (numpy.ndarray) – cached array of zeroes used to fill jackd pipe when not processing audio.
Parameters:

name

boot_server()[source]

Called by JackClient.run() to boot the server upon starting the process.

Activates the client and connects it to the number of outports determined by prefs.NCHANNELS

jack.Client s can’t be kept alive, so this must be called just before processing sample starts.

run()[source]

Start the process, boot the server, start processing frames and wait for the end.

quit()[source]

Set the JackClient.quit_evt

process(frames)[source]

Process a frame of audio.

If the JackClient.play_evt is not set, fill port buffers with zeroes.

Otherwise, pull frames of audio from the JackClient.q until it’s empty.

When it’s empty, set the JackClient.stop_evt and clear the JackClient.play_evt .

Warning

Handling multiple outputs is a little screwy right now. v0.2 effectively only supports one channel output.

Parameters:frames – Unused - frames of input audio, but there shouldn’t be any.