Skip to main content

liquiphy

A quick and dirty interface to the liquidsfz command-line using python's subprocess.

You must install liquidsfz first for this package to work. To install:

$ git clone https://github.com/swesterfeld/liquidsfz.git

Follow the instructions found in the liquidsfz README to install.

QuickStart Example

from liquiphy import LiquidSFZ
with LiquidSFZ(<path-to-sfz>) as liq:
	liq.noteon(0, 60, 80)
	sleep(1)
	liq.noteoff(0, 60)

If you need to get a reference to the constructed instance before starting the liquidsfz subprocess, use the "defer_start" parameter in the constructor:

with LiquidSFZ(<path-to-sfz>, defer_start = True) as liq:
	... do something first ...
	liq.start()
	... do regular stuff ...

API

To see a list of available methods, do this:

from liquiphy import LiquidSFZ
with LiquidSFZ() as liquid:
	print(dir(liquid))

liquidsfz help

All the commands which you can call on a LiquidSFZ instance mirror the underlying "liquidsfz" command API. Calling "help" on the liquidsfz command line produces the following table:

quit                - quit liquidsfz

load sfz_filename   - load sfz from filename
allsoundoff         - stop all sounds
reset               - system reset (stop all sounds, reset controllers)
noteon chan key vel - start note
noteoff chan key    - stop note
cc chan ctrl value  - send controller event
pitch_bend chan val - send pitch bend event (0 <= val <= 16383)
gain value          - set gain (0 <= value <= 5)
max_voices value    - set maximum number of voices
max_cache_size size - set maximum cache size in MB
preload_time time   - set preload time in ms
keys                - show keys supported by the sfz
switches            - show switches supported by the sfz
ccs                 - show ccs supported by the sfz
stats               - show voices/cache/cpu usage
info                - show information
voice_count         - print number of active synthesis voices
sleep time_ms       - sleep for some milliseconds
source filename     - load a file and execute each line as command
echo text           - print text

Looking at the above table, we see that there is a command "cc", which sends a controller event. The parameters are "chan, ctrl, value". Interpreting this as a python method would produce this:

def cc(self, chan, ctrl, value):
	"""
	send controller event
	"""

So calling this method would work like this:

from liquiphy import LiquidSFZ
with LiquidSFZ(<path-to-sfz>) as liq:
	liq.cc(0, 0x78, 0)

... which would send CC 0x78 (all sound off) to channel 0.

Return values

For methods which print text, the text printed by liquidsfz is the return value of the function.

with LiquidSFZ(<path-to-sfz>) as liq:
	print(liq.ccs())

... which in the test I just ran produced the following text:

ccs
Supported Controls:
 - CC #7 - Volume [ default 100 ]
 - CC #10 - Pan [ default 64 ]

quick-liq

Need to listen to an .sfz file without a lot of hassle? Call "quick-liq " from the command line, like so:

$ quick-liq <path-to-sfz>

The above command loads the given .sfz file in a liquidsfz instance and automatically connects the Jack MIDI input and Jack audio outputs to the first available (physical) ports. So far, it's the quickest, easiest way I found to listen to the sound of an .sfz without hassling with container apps or Jack connections.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

liquiphy-1.3.2.tar.gz (17.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

liquiphy-1.3.2-py2.py3-none-any.whl (18.2 kB view details)

Uploaded Python 2Python 3

File details

Details for the file liquiphy-1.3.2.tar.gz.

File metadata

  • Download URL: liquiphy-1.3.2.tar.gz
  • Upload date:
  • Size: 17.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for liquiphy-1.3.2.tar.gz
Algorithm Hash digest
SHA256 4b2079b6a64bd42400c0d47c5fec90d554537b25e32949ae92c8abc801368d94
MD5 06d08596fe5748b3901f6eb214abe5cd
BLAKE2b-256 7d22ac622879d2ad1744bb871ea8fa9ee4f230e249273485806175e3cf38a1ed

See more details on using hashes here.

File details

Details for the file liquiphy-1.3.2-py2.py3-none-any.whl.

File metadata

  • Download URL: liquiphy-1.3.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 18.2 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for liquiphy-1.3.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 08e3c71dd6f6d64fc9a58cc2e94bdbf0025a48bc8caf7a6cd6b240eb1030f267
MD5 d27e5c9a3282df252f11b7ad639de971
BLAKE2b-256 6768ac7b2e0a2bbe4d8db20526b3ca1ae6d83b71f2b7d5f74dc4b91acdff3aa7

See more details on using hashes here.

Release history Release notifications | RSS feed

1.3.3

2 files

This release

1.3.2 This release

2 files

1.3.1

2 files

1.3.0

2 files

1.2.1

2 files

1.2.0

2 files

1.1.1

2 files

1.1.0

2 files

1.0.10

2 files

1.0.9

2 files

1.0.8

2 files

1.0.7

2 files

1.0.5

2 files

1.0.4

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page