jackclient¶
Client that dumps samples directly to the jack client with the jack package.
Data:
After initializing, JackClient will register itself with this variable. |
|
Sampling rate of the active server |
|
Blocksize, or the amount of samples processed by jack per each |
|
Queue to be loaded with frames of BLOCKSIZE audio. |
|
Event used to trigger loading samples from QUEUE, ie. |
|
Event that is triggered on the end of buffered audio. |
|
Lock that enforces a single writer to the QUEUE at a time. |
|
Event that (when set) signals the sound server should play some sound continuously rather than remain silent by default (eg. |
|
Queue that |
|
Event flag that is set when frames dropped into the CONTINUOUS_QUEUE should be looped (eg. |
Classes:
|
Client that dumps frames of audio directly into a running jackd client. |
-
SERVER= None¶ After initializing, JackClient will register itself with this variable.
- Type
-
BLOCKSIZE= None¶ Blocksize, or the amount of samples processed by jack per each
JackClient.process()call.- Type
-
QUEUE= None¶ Queue to be loaded with frames of BLOCKSIZE audio.
-
PLAY= None¶ Event used to trigger loading samples from QUEUE, ie. playing.
-
STOP= None¶ Event that is triggered on the end of buffered audio.
Note
NOT an event used to stop audio.
-
Q_LOCK= None¶ Lock that enforces a single writer to the QUEUE at a time.
- Type
-
CONTINUOUS= None¶ Event that (when set) signals the sound server should play some sound continuously rather than remain silent by default (eg. play a background sound).
-
CONTINUOUS_QUEUE= None¶ Queue that
-
CONTINUOUS_LOOP= None¶ Event flag that is set when frames dropped into the CONTINUOUS_QUEUE should be looped (eg. in the case of stationary background noise), otherwise they are played and then discarded (ie. the sound is continuously generating and submitting samples)
-
class
JackClient(name='jack_client')[source]¶ Bases:
multiprocessing.context.ProcessClient 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 audioq_lock (
Lock) – Lock that manages access to the Queueplay_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 jackdblocksize (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.continuous_cycle (
itertools.cycle) – cycle of frames used for continuous sounds
- Parameters
name
Methods:
Initialize logging to a timestamped file in prefs.LOGDIR .
Called by
JackClient.run()to boot the server upon starting the process.run()Start the process, boot the server, start processing frames and wait for the end.
quit()Set the
JackClient.quit_evtprocess(frames)Process a frame of audio.
-
init_logging()[source]¶ Initialize logging to a timestamped file in prefs.LOGDIR .
The logger name will be ‘node.{id}’ .
-
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.Clients can’t be kept alive, so this must be called just before processing sample starts.
-
process(frames)[source]¶ Process a frame of audio.
If the
JackClient.play_evtis not set, fill port buffers with zeroes.Otherwise, pull frames of audio from the
JackClient.quntil it’s empty.When it’s empty, set the
JackClient.stop_evtand clear theJackClient.play_evt.Warning
Handling multiple outputs is a little screwy right now. v0.2 effectively only supports one channel output.
- Parameters
frames – number of frames (samples) to be processed. unused. passed by jack client