Skip to content

Latest commit

 

History

History
129 lines (74 loc) · 3.2 KB

README.md

File metadata and controls

129 lines (74 loc) · 3.2 KB

Test

Control JACK audio server with Python. Can be used as replacement for jackd for more robust configuration, for example, when using jack package.

Installation

pip install jack_server

Also you need to have jackserver library on your machine, it comes with JACK2. I had problems with apt-package on Ubuntu (jackd2), if you do too, compile jack yourself.

Usage

🎛 jack_server.Server

On server creation you can specify some parameters:

import jack_server

server = jack_server.Server(
    name="myfancyserver",
    sync=True,
    realtime=False,
    driver="coreaudio",
    device="BuiltInSpeakerDevice",
    rate=48000,
    period=1024,
    # nperiods=2  # Work only with `alsa` driver
)
server.start()

input()

They are actually an equivalent of jackd flags:

  • -n, --name to name,
  • -S, --sync to sync,
  • -R, --realtime, -r, --no-realtime to realtime,
  • -d to driver,

And driver arguments:

  • -d, --device to device,
  • -r, --rate to rate,
  • -p, --period to period,

start(self) -> None

Open and start the server. All state controlling methods are idempotent.

stop(self) -> None

Stop and close server.

driver: jack_server.Driver

Selected driver.

name: str

Actual server name. It is property that calls C code, so you can actually set the name.

sync: bool

Whether JACK runs in sync mode. Useful when you`re trying to send and receive multichannel audio.

realtime: bool

Whether JACK should start in realtime mode.

params: dict[str, jack_server.Parameter]

Server parameters mapped by name.

💼 jack_server.Driver

Driver (JACK backend), can be safely changed before server is started. Not supposed to be created by user code.

name: str

Driver name, read-only.

device: str

Selected device.

rate: jack_server.SampleRate

Sampling rate.

period: int

Buffer size.

nperiods: int

Number of periods. 2 is right for motherboard, PCI, PCI-X, etc.; 3 for USB (source).

Can be helpful when tailoring performance on jittery systems.

params: dict[str, jack_server.Parameter]

Driver parameters mapped by name.

📻 jack_server.SampleRate

Valid sampling rate, 44100 or 48000.

🔻 jack_server.Parameter

Not supposed to be created by user code.

name: str

Read-only verbose name of parameter.

value: int | str | bytes | bool

Value of the parameter, can be changed.

❗️ jack_server.set_info_function(callback: Callable[[str], None] | None) -> None

Set info output handler. By default JACK does is itself, i. e. output is being printed in stdout.

‼️ jack_server.set_error_function(callback: Callable[[str], None] | None) -> None

Set error output handler. By default JACK does is itself, i. e. output is being printed in stderr.