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.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 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:
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_evt
process
(frames)Process a frame of audio.
-
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.get(‘NCHANNELS’)
jack.Client
s 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_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 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