2 # -*- coding: utf-8 -*-
5 # - error-callback, function
6 # - info-callback, function
10 from sys
import platform
13 # Load Jack shared library
14 if (platform
== 'win32'):
15 jacklib
= cdll
.LoadLibrary("libjack.dll")
17 jacklib
= cdll
.LoadLibrary("libjack.so.0")
21 MAX_FRAMES
= 4294967295
22 LOAD_INIT_LIMIT
= 1024
24 DEFAULT_AUDIO_TYPE
= "32 bit float mono audio"
25 DEFAULT_MIDI_TYPE
= "8 bit raw midi"
42 OpenOptions
= (ServerName|NoStartServer|UseExactName
)
43 LoadOptions
= (LoadInit|LoadName|UseExactName
)
60 # Jack Transport states
64 TransportNetStarting
= 4
66 # Optional struct jack_position_t fields
68 PositionTimecode
= 0x20
70 AudioVideoRatio
= 0x80
71 VideoFrameOffset
= 0x100
72 POSITION_MASK
= (PositionBBT|PositionTimecode
)
74 # Optional struct jack_transport_info_t fields
76 TransportPosition
= 0x2
81 # Jack Session Event Type
83 JackSessionSaveAndQuit
= 2
84 JackSessionSaveTemplate
= 3
87 SessionSaveError
= 0x01
88 SessionNeedTerminal
= 0x02
90 # ? Not in the Jack API:
96 jack_shmsize_t
= c_int32
97 jack_nframes_t
= c_uint32
98 jack_time_t
= c_uint64
99 jack_intclient_t
= c_uint64
100 jack_port_id_t
= c_uint32
101 jack_port_type_id_t
= c_uint32
102 jack_default_audio_sample_t
= c_float
103 jack_unique_t
= c_uint64
104 jack_port_t
= c_long
#_jack_port
105 jack_client_t
= c_long
#_jack_client
106 jack_options_t
= c_int
107 jack_status_t
= c_int
108 jack_transport_state_t
= c_int
109 jack_position_bits_t
= c_int
110 jack_transport_bits_t
= c_int
111 jack_session_event_type_t
= c_int
112 jack_session_flags_t
= c_int
114 class jack_position_t(Structure
):
116 ("unique_1", jack_unique_t
),
117 ("usecs", jack_time_t
),
118 ("frame_rate", jack_nframes_t
),
119 ("frame", jack_nframes_t
),
120 ("valid", jack_position_bits_t
),
124 ("bar_start_tick", c_double
),
125 ("beats_per_bar", c_float
),
126 ("beat_type", c_float
),
127 ("ticks_per_beat", c_double
),
128 ("beats_per_minute", c_double
),
129 ("frame_time", c_double
),
130 ("next_time", c_double
),
131 ("bbt_offset", jack_nframes_t
),
132 ("audio_frames_per_video_frame", c_float
),
133 ("video_offset", jack_nframes_t
),
134 ("padding[7]", c_int32
), #FIXME
135 ("unique_2", jack_unique_t
)
137 jack_position_t
= POINTER(jack_position_t
)
139 class jack_session_event_t(Structure
):
141 ("type", jack_session_event_type_t
),
142 ("session_dir", c_char_p
),
143 ("client_uuid", c_char_p
),
144 ("command_line", c_char
),
145 ("flags", jack_session_flags_t
),
146 ("future", c_uint32
),
148 jack_session_event_t
= POINTER(jack_session_event_t
)
150 class jack_session_command_t(Structure
):
153 ("client_name", c_char_p
),
154 ("command", c_char_p
),
155 ("flags", jack_session_flags_t
),
159 # Special Callback defines
160 global ThreadInitCallback
, ShutdownCallback
, InfoShutdownCallback
161 global ProcessCallback
, FreewheelCallback
, BufferSizeCallback
, SampleRateCallback
162 global ClientRegistrationCallback
, PortRegistrationCallback
, PortConnectCallback
, GraphOrderCallback
, XRunCallback
163 global ThreadCallback
, SyncCallback
, TimebaseCallback
, SessionCallback
166 # Internal C char** -> Python list conversion
167 def __pointer_to_list(list_p
):
176 new_char_p
= list_p
[i
]
178 final_list
.append(str(new_char_p
))
189 def get_version_string():
190 jacklib
.jack_get_version_string
.argtypes
= None
191 jacklib
.jack_get_version_string
.restype
= c_char_p
192 return jacklib
.jack_get_version_string()
194 def client_open(client_name
, options
, status
):
195 if (not status
): status
= 0
196 jacklib
.jack_client_open
.argtypes
= [c_char_p
, c_int
, c_int
]
197 jacklib
.jack_client_open
.restype
= jack_client_t
198 return jacklib
.jack_client_open(client_name
, options
, status
)
200 def client_close(client
):
201 jacklib
.jack_client_close
.argtypes
= [jack_client_t
]
202 jacklib
.jack_client_close
.restype
= c_int
203 return jacklib
.jack_client_close(client
)
205 def client_name_size():
206 jacklib
.jack_client_name_size
.argtypes
= None
207 jacklib
.jack_client_name_size
.restype
= c_int
208 return jacklib
.jack_client_name_size()
210 def client_name(client
):
211 jacklib
.jack_get_client_name
.argtypes
= [jack_client_t
]
212 jacklib
.jack_get_client_name
.restype
= c_char_p
213 return jacklib
.jack_get_client_name(client
)
215 def activate(client
):
216 jacklib
.jack_activate
.argtypes
= [jack_client_t
]
217 jacklib
.jack_activate
.restype
= c_int
218 return jacklib
.jack_activate(client
)
220 def deactivate(client
):
221 jacklib
.jack_deactivate
.argtypes
= [jack_client_t
]
222 jacklib
.jack_deactivate
.restype
= c_int
223 return jacklib
.jack_deactivate(client
)
225 def get_client_pid(client
):
226 jacklib
.jack_get_client_pid
.argtypes
= [jack_client_t
]
227 jacklib
.jack_get_client_pid
.restype
= c_int
228 return jacklib
.jack_get_client_pid(client
)
230 def get_client_thread_id(client
): #TODO - restype as 'HANDLE'
231 jacklib
.jack_get_client_thread_id
.argtypes
= [jack_client_t
]
232 #jacklib.jack_get_client_thread_id.restype = HANDLE
233 return jacklib
.jack_get_client_thread_id(client
)
235 def client_thread_id(client
): #TODO - restype as 'pthread_t'
236 jacklib
.jack_client_thread_id
.argtypes
= [jack_client_t
]
237 #jacklib.jack_client_thread_id.restype = pthread_t
238 return jacklib
.jack_client_thread_id(client
)
240 def is_realtime(client
):
241 jacklib
.jack_is_realtime
.argtypes
= [jack_client_t
]
242 jacklib
.jack_is_realtime
.restype
= c_int
243 return jacklib
.jack_is_realtime(client
)
248 def thread_wait(client
):
249 jacklib
.jack_thread_wait
.argtypes
= [jack_client_t
, c_int
]
250 jacklib
.jack_thread_wait
.restype
= jack_nframes_t
251 return jacklib
.jack_thread_wait(client
, status
)
253 def cycle_wait(client
):
254 jacklib
.jack_cycle_wait
.argtypes
= jack_client_t
255 jacklib
.jack_cycle_wait
.restype
= jack_nframes_t
256 return jacklib
.jack_cycle_wait(client
)
258 def cycle_signal(client
, status
):
259 jacklib
.jack_cycle_signal
.argtypes
= [jack_client_t
, status
]
260 jacklib
.jack_cycle_signal
.restype
= None
261 return jacklib
.jack_cycle_signal(client
, status
)
263 def set_process_thread(client
, thread_callback
, arg
=None):
264 global ThreadCallback
265 ThreadCallback
= CFUNCTYPE(c_int
, c_void_p
)(thread_callback
)
266 jacklib
.jack_set_process_thread
.restype
= c_int
267 return jacklib
.jack_set_process_thread(client
)
272 def set_thread_init_callback(client
, thread_init_callback
, arg
=None):
273 global ThreadInitCallback
274 ThreadInitCallback
= CFUNCTYPE(c_int
, c_void_p
)(thread_init_callback
)
275 jacklib
.jack_set_thread_init_callback
.restype
= c_int
276 return jacklib
.jack_set_thread_init_callback(client
, ThreadInitCallback
, arg
)
278 def on_shutdown(client
, shutdown_callback
, arg
=None):
279 global ShutdownCallback
280 ShutdownCallback
= CFUNCTYPE(c_int
, c_void_p
)(shutdown_callback
)
281 jacklib
.jack_on_shutdown(client
, ShutdownCallback
, arg
)
283 def on_info_shutdown(client
, shutdown_callback
, arg
=None):
284 global InfoShutdownCallback
285 InfoShutdownCallback
= CFUNCTYPE(c_int
, c_int
, c_char_p
, c_void_p
)(shutdown_callback
)
286 jacklib
.jack_on_info_shutdown(client
, InfoShutdownCallback
, arg
)
288 def set_process_callback(client
, process_callback
, arg
=None):
289 global ProcessCallback
290 ProcessCallback
= CFUNCTYPE(c_int
, c_int
, c_void_p
)(process_callback
)
291 jacklib
.jack_set_process_callback
.restype
= c_int
292 return jacklib
.jack_set_process_callback(client
, ProcessCallback
, arg
)
294 def set_freewheel_callback(client
, freewheel_callback
, arg
=None):
295 global FreewheelCallback
296 FreewheelCallback
= CFUNCTYPE(c_int
, c_int
, c_void_p
)(freewheel_callback
)
297 jacklib
.jack_set_freewheel_callback
.restype
= c_int
298 return jacklib
.jack_set_freewheel_callback(client
, FreewheelCallback
, arg
)
300 def set_buffer_size_callback(client
, buffer_size_callback
, arg
=None):
301 global BufferSizeCallback
302 BufferSizeCallback
= CFUNCTYPE(c_int
, c_int
, c_void_p
)(buffer_size_callback
)
303 jacklib
.jack_set_buffer_size_callback
.restype
= c_int
304 return jacklib
.jack_set_buffer_size_callback(client
, BufferSizeCallback
, arg
)
306 def set_sample_rate_callback(client
, srate_callback
, arg
=None):
307 global SampleRateCallback
308 SampleRateCallback
= CFUNCTYPE(c_int
, c_int
, c_void_p
)(srate_callback
)
309 jacklib
.jack_set_sample_rate_callback
.restype
= c_int
310 return jacklib
.jack_set_sample_rate_callback(client
, SampleRateCallback
, arg
)
312 def set_client_registration_callback(client
, registration_callback
, arg
=None):
313 global ClientRegistrationCallback
314 ClientRegistrationCallback
= CFUNCTYPE(c_int
, c_char_p
, c_int
, c_void_p
)(registration_callback
)
315 jacklib
.jack_set_client_registration_callback
.restype
= c_int
316 return jacklib
.jack_set_client_registration_callback(client
, ClientRegistrationCallback
, arg
)
318 def set_port_registration_callback(client
, registration_callback
, arg
=None):
319 global PortRegistrationCallback
320 PortRegistrationCallback
= CFUNCTYPE(c_int
, c_int
, c_int
, c_void_p
)(registration_callback
)
321 jacklib
.jack_set_port_registration_callback
.restype
= c_int
322 return jacklib
.jack_set_port_registration_callback(client
, PortRegistrationCallback
, arg
)
324 def set_port_connect_callback(client
, connect_callback
, arg
=None):
325 global PortConnectCallback
326 PortConnectCallback
= CFUNCTYPE(c_int
, c_int
, c_int
, c_int
, c_void_p
)(connect_callback
)
327 jacklib
.jack_set_port_connect_callback
.restype
= c_int
328 return jacklib
.jack_set_port_connect_callback(client
, PortConnectCallback
, arg
)
330 def set_port_rename_callback(client
, rename_callback
, arg
=None):
331 global PortRenameCallback
332 PortRenameCallback
= CFUNCTYPE(c_int
, c_int
, c_char_p
, c_char_p
, c_void_p
)(rename_callback
)
333 jacklib
.jack_set_port_rename_callback
.restype
= c_int
334 return jacklib
.jack_set_port_rename_callback(client
, PortRenameCallback
, arg
)
336 def set_graph_order_callback(client
, graph_callback
, arg
=None):
337 global GraphOrderCallback
338 GraphOrderCallback
= CFUNCTYPE(c_int
, c_void_p
)(graph_callback
)
339 jacklib
.jack_set_graph_order_callback
.restype
= c_int
340 return jacklib
.jack_set_graph_order_callback(client
, GraphOrderCallback
, arg
)
342 def set_xrun_callback(client
, xrun_callback
, arg
=None):
344 XRunCallback
= CFUNCTYPE(c_int
, c_void_p
)(xrun_callback
)
345 jacklib
.jack_set_xrun_callback
.restype
= c_int
346 return jacklib
.jack_set_xrun_callback(client
, XRunCallback
, arg
)
349 # ServerClientControl
351 def set_freewheel(client
, onoff
):
352 jacklib
.jack_set_freewheel
.argtypes
= [jack_client_t
, c_int
]
353 jacklib
.jack_set_freewheel
.restype
= c_int
354 return jacklib
.jack_set_freewheel(client
, onoff
)
356 def set_buffer_size(client
, nframes
):
357 jacklib
.jack_set_buffer_size
.argtypes
= [jack_client_t
, jack_nframes_t
]
358 jacklib
.jack_set_buffer_size
.restype
= c_int
359 return jacklib
.jack_set_buffer_size(client
, nframes
)
361 def get_sample_rate(client
):
362 jacklib
.jack_get_sample_rate
.argtypes
= [jack_client_t
]
363 jacklib
.jack_get_sample_rate
.restype
= jack_nframes_t
364 return jacklib
.jack_get_sample_rate(client
)
366 def get_buffer_size(client
):
367 jacklib
.jack_get_buffer_size
.argtypes
= [jack_client_t
]
368 jacklib
.jack_get_buffer_size
.restype
= jack_nframes_t
369 return jacklib
.jack_get_buffer_size(client
)
371 def cpu_load(client
):
372 jacklib
.jack_cpu_load
.argtypes
= [jack_client_t
]
373 jacklib
.jack_cpu_load
.restype
= c_float
374 return jacklib
.jack_cpu_load(client
)
379 def port_register(client
, port_name
, port_type
, flags
, buffer_size
):
380 jacklib
.jack_port_short_name
.argtypes
= [jack_client_t
, c_char_p
, c_char_p
, c_ulong
, c_ulong
]
381 jacklib
.jack_port_short_name
.restype
= c_char_p
382 return jacklib
.jack_port_register(client
, port_name
, port_type
, flags
, buffer_size
)
384 def port_unregister(client
, port
):
385 jacklib
.jack_port_unregister
.argtypes
= [jack_client_t
, jack_port_t
]
386 jacklib
.jack_port_unregister
.restype
= c_int
387 return jacklib
.jack_port_unregister(client
, port
)
390 jacklib
.jack_port_name
.argtypes
= [jack_port_t
]
391 jacklib
.jack_port_name
.restype
= c_char_p
392 return jacklib
.jack_port_name(port
)
394 def port_short_name(port
):
395 jacklib
.jack_port_short_name
.argtypes
= [jack_port_t
]
396 jacklib
.jack_port_short_name
.restype
= c_char_p
397 return jacklib
.jack_port_short_name(port
)
399 def port_flags(port
):
400 jacklib
.jack_port_flags
.argtypes
= [jack_port_t
]
401 jacklib
.jack_port_flags
.restype
= c_int
402 return jacklib
.jack_port_flags(port
)
405 jacklib
.jack_port_type
.argtypes
= [jack_port_t
]
406 jacklib
.jack_port_type
.restype
= c_char_p
407 return jacklib
.jack_port_type(port
)
409 def port_type_id(port
):
410 jacklib
.jack_port_type_id
.argtypes
= [jack_port_t
]
411 jacklib
.jack_port_type_id
.restype
= jack_port_type_id_t
412 return jacklib
.jack_port_type_id(port
)
414 def port_is_mine(client
, port
):
415 jacklib
.jack_port_is_mine
.argtypes
= [jack_client_t
, jack_port_t
]
416 jacklib
.jack_port_is_mine
.restype
= c_int
417 return jacklib
.jack_port_is_mine(client
, port
)
419 def port_connected(port
):
420 jacklib
.jack_port_connected
.argtypes
= [jack_port_t
]
421 jacklib
.jack_port_connected
.restype
= c_int
422 return jacklib
.jack_port_connected(port
)
424 def port_connected_to(port
, port_name
):
425 jacklib
.jack_port_connected_to
.argtypes
= [jack_port_t
, c_char_p
]
426 jacklib
.jack_port_connected_to
.restype
= c_int
427 return jacklib
.jack_port_connected_to(port
, port_name
)
429 def port_get_connections(port
):
430 jacklib
.jack_port_get_connections
.argtypes
= [jack_port_t
]
431 jacklib
.jack_port_get_connections
.restype
= POINTER(c_char_p
)
432 list_p
= jacklib
.jack_port_get_connections(port
)
433 return __pointer_to_list(list_p
)
435 def port_get_all_connections(client
, port
):
436 jacklib
.jack_port_get_all_connections
.argtypes
= [jack_client_t
, jack_port_t
]
437 jacklib
.jack_port_get_all_connections
.restype
= POINTER(c_char_p
)
438 list_p
= jacklib
.jack_port_get_all_connections(client
, port
)
439 return __pointer_to_list(list_p
)
441 def port_get_latency(port
):
442 jacklib
.jack_port_get_latency
.argtypes
= [jack_port_t
]
443 jacklib
.jack_port_get_latency
.restype
= jack_nframes_t
444 return jacklib
.jack_port_get_latency(port
)
446 def port_get_total_latency(client
, port
):
447 jacklib
.jack_port_get_total_latency
.argtypes
= [jack_client_t
, jack_port_t
]
448 jacklib
.jack_port_get_total_latency
.restype
= jack_nframes_t
449 return jacklib
.jack_port_get_total_latency(client
, port
)
451 def port_set_latency(port
, nframes
):
452 jacklib
.jack_port_set_latency
.argtypes
= [jack_port_t
, jack_nframes_t
]
453 jacklib
.jack_port_set_latency
.restype
= None
454 jacklib
.jack_port_set_latency(port
, nframes
)
456 def recompute_total_latency(client
, port
):
457 jacklib
.jack_recompute_total_latency
.argtypes
= [jack_client_t
, jack_port_t
]
458 jacklib
.jack_recompute_total_latency
.restype
= c_int
459 return jacklib
.jack_recompute_total_latency(client
, port
)
461 def jack_recompute_total_latencies():
462 jacklib
.jack_recompute_total_latencies
.argtypes
= [jack_client_t
]
463 jacklib
.jack_recompute_total_latencies
.restype
= c_int
464 return jacklib
.jack_jack_recompute_total_latencies()
466 def port_set_name(port
, port_name
):
467 jacklib
.jack_port_set_name
.argtypes
= [jack_port_t
, c_char_p
]
468 jacklib
.jack_port_set_name
.restype
= c_int
469 return jacklib
.jack_port_set_name(port
, port_name
)
471 def port_set_alias(port
, alias
):
472 jacklib
.jack_port_set_alias
.argtypes
= [jack_port_t
, c_char_p
]
473 jacklib
.jack_port_set_alias
.restype
= c_int
474 return jacklib
.jack_port_set_alias(port
, alias
)
476 def port_unset_alias(port
, alias
):
477 jacklib
.jack_port_unset_alias
.argtypes
= [jack_port_t
, c_char_p
]
478 jacklib
.jack_port_unset_alias
.restype
= c_int
479 return jacklib
.jack_port_unset_alias(port
, alias
)
481 def port_get_aliases(port
, aliases
): #TODO - check argtypes
482 jacklib
.jack_port_get_aliases
.argtypes
= [jack_port_t
, POINTER(c_char_p
)] #POINTER(ARRAY(c_char_p, 2))
483 jacklib
.jack_port_get_aliases
.restype
= c_int
484 return jacklib
.jack_port_get_aliases(port
, pointer(c_char_p(aliases
)))
486 def port_request_monitor(port
, onoff
):
487 jacklib
.jack_port_request_monitor
.argtypes
= [jack_port_t
, c_int
]
488 jacklib
.jack_port_request_monitor
.restype
= c_int
489 return jacklib
.jack_port_request_monitor(port
, onoff
)
491 def port_request_monitor_by_name(client
, port_name
, onoff
):
492 jacklib
.jack_port_request_monitor_by_name
.argtypes
= [jack_client_t
, c_char_p
, c_int
]
493 jacklib
.jack_port_request_monitor_by_name
.restype
= c_int
494 return jacklib
.jack_port_request_monitor_by_name(client
, port_name
, onoff
)
496 def port_ensure_monitor(port
, onoff
):
497 jacklib
.jack_port_ensure_monitor
.argtypes
= [jack_port_t
, c_int
]
498 jacklib
.jack_port_ensure_monitor
.restype
= c_int
499 return jacklib
.jack_port_ensure_monitor(port
, onoff
)
501 def port_monitoring_input(port
):
502 jacklib
.jack_port_monitoring_input
.argtypes
= [jack_port_t
]
503 jacklib
.jack_port_monitoring_input
.restype
= c_int
504 return jacklib
.jack_port_monitoring_input(port
)
506 def connect(client
, source_port
, destination_port
):
507 jacklib
.jack_connect
.argtypes
= [jack_client_t
, c_char_p
, c_char_p
]
508 jacklib
.jack_connect
.restype
= c_int
509 return jacklib
.jack_connect(client
, source_port
, destination_port
)
511 def disconnect(client
, source_port
, destination_port
):
512 jacklib
.jack_disconnect
.argtypes
= [jack_client_t
, c_char_p
, c_char_p
]
513 jacklib
.jack_disconnect
.restype
= c_int
514 return jacklib
.jack_disconnect(client
, source_port
, destination_port
)
516 def port_disconnect(client
, port
):
517 jacklib
.jack_port_disconnect
.argtypes
= [jack_client_t
, jack_port_t
]
518 jacklib
.jack_port_disconnect
.restype
= c_int
519 return jacklib
.jack_port_disconnect(client
, port
)
521 def port_name_size():
522 jacklib
.jack_port_name_size
.argtypes
= None
523 jacklib
.jack_port_name_size
.restype
= c_int
524 return jacklib
.jack_port_name_size()
526 def port_type_size():
527 jacklib
.jack_port_type_size
.argtypes
= None
528 jacklib
.jack_port_type_size
.restype
= c_int
529 return jacklib
.jack_port_type_size()
534 def get_ports(client
, port_name_pattern
, type_name_pattern
, flags
):
535 jacklib
.jack_get_ports
.argtypes
= [jack_client_t
, c_char_p
, c_char_p
, c_ulong
]
536 jacklib
.jack_get_ports
.restype
= POINTER(c_char_p
)
537 list_p
= jacklib
.jack_get_ports(client
, port_name_pattern
, type_name_pattern
, flags
)
538 return __pointer_to_list(list_p
)
540 def port_by_name(client
, port_name
):
541 jacklib
.jack_port_by_name
.argtypes
= [jack_client_t
, c_char_p
]
542 jacklib
.jack_port_by_name
.restype
= jack_port_t
543 return jacklib
.jack_port_by_name(client
, port_name
)
545 def port_by_id(client
, port_id
):
546 jacklib
.jack_port_by_id
.argtypes
= [jack_client_t
, jack_port_id_t
]
547 jacklib
.jack_port_by_id
.restype
= jack_port_t
548 return jacklib
.jack_port_by_id(client
, port_id
)
553 def frames_since_cycle_start(client
):
554 jacklib
.jack_frames_since_cycle_start
.argtypes
= [jack_client_t
]
555 jacklib
.jack_frames_since_cycle_start
.restype
= jack_nframes_t
556 return jacklib
.jack_frames_since_cycle_start(client
)
558 def frame_time(client
):
559 jacklib
.jack_frame_time
.argtypes
= [jack_client_t
]
560 jacklib
.jack_frame_time
.restype
= jack_nframes_t
561 return jacklib
.jack_frame_time(client
)
563 def last_frame_time(client
):
564 jacklib
.jack_last_frame_time
.argtypes
= [jack_client_t
]
565 jacklib
.jack_last_frame_time
.restype
= jack_nframes_t
566 return jacklib
.jack_last_frame_time(client
)
568 def frames_to_time(client
, nframes
):
569 jacklib
.jack_frames_to_time
.argtypes
= [jack_client_t
, jack_nframes_t
]
570 jacklib
.jack_frames_to_time
.restype
= jack_time_t
571 return jacklib
.jack_frames_to_time(client
, nframes
)
573 def time_to_frames(client
, time
):
574 jacklib
.jack_time_to_frames
.argtypes
= [jack_client_t
, jack_time_t
]
575 jacklib
.jack_time_to_frames
.restype
= jack_nframes_t
576 return jacklib
.jack_time_to_frames(client
, time
)
579 jacklib
.jack_get_time
.argtypes
= [None]
580 jacklib
.jack_get_time
.restype
= jack_time_t
581 return jacklib
.jack_get_time()
586 def release_timebase(client
):
587 jacklib
.jack_release_timebase
.argtypes
= [jack_client_t
]
588 jacklib
.jack_release_timebase
.restype
= c_int
589 return jacklib
.jack_release_timebase(client
)
591 def set_sync_callback(client
, sync_callback
, arg
=None):
593 SyncCallback
= CFUNCTYPE(c_int
, c_int
, type(pointer(jack_position_t
)), c_void_p
)(sync_callback
)
594 jacklib
.jack_set_sync_callback
.restype
= c_int
595 return jacklib
.jack_set_sync_callback(client
, SyncCallback
, arg
)
597 def set_sync_timeout(client
, timeout
):
598 jacklib
.jack_set_sync_timeout
.argtypes
= [jack_client_t
, jack_time_t
]
599 jacklib
.jack_set_sync_timeout
.restype
= c_int
600 return jacklib
.jack_set_sync_timeout(client
, timeout
)
602 def set_timebase_callback(client
, conditional
, timebase_callback
, arg
=None):
603 global TimebaseCallback
604 TimebaseCallback
= CFUNCTYPE(c_int
, c_int
, c_int
, type(pointer(jack_position_t
)), c_int
, c_void_p
)(sync_callback
)
605 jacklib
.jack_set_timebase_callback
.restype
= c_int
606 return jacklib
.jack_set_timebase_callback(client
, conditional
, TimebaseCallback
, arg
)
608 def transport_locate(client
, frame
):
609 jacklib
.jack_transport_locate
.argtypes
= [jack_client_t
, jack_nframes_t
]
610 jacklib
.jack_transport_locate
.restype
= c_int
611 return jacklib
.jack_transport_locate(client
, frame
)
613 def transport_query(client
, pos
=None): #FIXME - weird crash when using pointer(pos) (on exit only)
614 jacklib
.jack_transport_query
.restype
= c_int
616 jacklib
.jack_transport_query
.argtypes
= [jack_client_t
, type(pointer(jack_position_t
))]
617 return jacklib
.jack_transport_query(client
, pointer(pos
))
619 return jacklib
.jack_transport_query(client
, None)
621 def get_current_transport_frame(client
):
622 jacklib
.jack_get_current_transport_frame
.argtypes
= [jack_client_t
]
623 jacklib
.jack_get_current_transport_frame
.restype
= jack_nframes_t
624 return jacklib
.jack_get_current_transport_frame(client
)
626 def transport_reposition(client
, pos
): #FIXME - weird crash when using pointer(pos) (on exit only)
627 jacklib
.jack_transport_reposition
.argtypes
= [jack_client_t
, type(pointer(jack_position_t
))]
628 jacklib
.jack_transport_reposition
.restype
= c_int
629 return jacklib
.jack_transport_reposition(client
, pointer(pos
))
631 def transport_start(client
):
632 jacklib
.jack_transport_start
.argtypes
= [jack_client_t
]
633 jacklib
.jack_transport_start
.restype
= None
634 return jacklib
.jack_transport_start(client
)
636 def transport_stop(client
):
637 jacklib
.jack_transport_stop
.argtypes
= [jack_client_t
]
638 jacklib
.jack_transport_stop
.restype
= None
639 return jacklib
.jack_transport_stop(client
)
642 jacklib
.jack_free
.argtypes
= [c_void_p
]
643 jacklib
.jack_free
.restype
= None
644 return jacklib
.jack_free(ptr
)
647 # Session Client Functions
649 def set_session_callback(client
, session_callback
, arg
=None):
650 global SessionCallback
651 SessionCallback
= CFUNCTYPE(jack_session_event_t
, c_void_p
)(session_callback
)
652 jacklib
.jack_set_session_callback
.restype
= c_int
653 return jacklib
.jack_set_session_callback(client
, SessionCallback
, arg
)
655 def session_reply(client
, event
):
656 jacklib
.jack_session_reply
.argtypes
= [jack_client_t
, jack_session_event_t
]
657 jacklib
.jack_session_reply
.restype
= c_int
658 return jacklib
.jack_session_reply(client
, event
)
660 def session_event_free(event
):
661 jacklib
.jack_session_event_free
.argtypes
= [jack_session_event_t
]
662 jacklib
.jack_session_event_free
.restype
= None
663 return jacklib
.jack_session_event_free(event
)
665 def client_get_uuid(client
):
666 jacklib
.jack_client_get_uuid
.argtypes
= [jack_client_t
]
667 jacklib
.jack_client_get_uuid
.restype
= c_char_p
668 return jacklib
.jack_client_get_uuid(client
)
670 def session_notify(client
, target
, type_
, path
):
671 jacklib
.jack_session_notify
.argtypes
= [jack_client_t
, c_char_p
, jack_session_event_type_t
, c_char_p
]
672 jacklib
.jack_session_notify
.restype
= c_int
673 return jacklib
.jack_session_notify(client
, target
, type_
, path
)
675 def session_commands_free(cmds
):
676 jacklib
.jack_session_commands_free
.argtypes
= [jack_session_command_t
]
677 jacklib
.jack_session_commands_free
.restype
= None
678 return jacklib
.jack_session_commands_free(cmds
)
680 def get_uuid_for_client_name(client
, client_name
):
681 jacklib
.jack_get_uuid_for_client_name
.argtypes
= [jack_client_t
, c_char_p
]
682 jacklib
.jack_get_uuid_for_client_name
.restype
= c_char_p
683 return jacklib
.jack_get_uuid_for_client_name(client
, client_name
)
685 def get_client_name_by_uuid(client
, client_uuid
):
686 jacklib
.jack_get_client_name_by_uuid
.argtypes
= [jack_client_t
, c_char_p
]
687 jacklib
.jack_get_client_name_by_uuid
.restype
= c_char_p
688 return jacklib
.jack_get_client_name_by_uuid(client
, client_uuid
)
690 def reserve_client_name(client
, name
, uuid
):
691 jacklib
.jack_reserve_client_name
.argtypes
= [jack_client_t
, c_char_p
, c_char_p
]
692 jacklib
.jack_reserve_client_name
.restype
= c_int
693 return jacklib
.jack_reserve_client_name(client
, name
, uuid
)