From 6bf892eb3890cdedb88fedb18bb54f3e72de3d15 Mon Sep 17 00:00:00 2001 From: Peter Sobot Date: Mon, 22 Jul 2024 22:53:13 -0400 Subject: [PATCH] Revert "Allow processing square buffers. (#347)" This reverts commit 077e2362603a4a9ffb8e9c04b5a7364a3eedfec6. --- docs/reference/pedalboard.html | 627 +++++++----------- docs/reference/pedalboard.io.html | 134 ++-- docs/searchindex.js | 2 +- pedalboard/BufferUtils.h | 24 +- pedalboard/Plugin.h | 42 -- .../plugin_templates/PrimeWithSilence.h | 12 +- pedalboard/plugins/AddLatency.h | 2 - pedalboard/plugins/Delay.h | 6 +- pedalboard/process.h | 38 +- pedalboard/python_bindings.cpp | 24 +- pedalboard_native/__init__.pyi | 8 +- tests/test_native_module.py | 103 --- tests/test_small_buffers.py | 28 - 13 files changed, 341 insertions(+), 709 deletions(-) delete mode 100644 tests/test_small_buffers.py diff --git a/docs/reference/pedalboard.html b/docs/reference/pedalboard.html index 00573be7f..2784c9115 100644 --- a/docs/reference/pedalboard.html +++ b/docs/reference/pedalboard.html @@ -246,7 +246,7 @@

The pedalboard<

The following documentation lists all of the available types of Plugin.

-class pedalboard.AudioProcessorParameter(plugin: ExternalPlugin, parameter_name: str, search_steps: int = 1000)#
+class pedalboard.AudioProcessorParameter(plugin: ExternalPlugin, parameter_name: str, search_steps: int = 1000)#

A wrapper around various different parameters exposed by VST3Plugin or AudioUnitPlugin instances.

AudioProcessorParameter objects are rarely used directly, @@ -271,7 +271,7 @@

The pedalboard<
-property label: Optional[str]#
+property label: Optional[str]#

The units used by this parameter (Hz, dB, etc).

May be None if the plugin does not expose units for this parameter or if automatic unit detection fails.

@@ -279,7 +279,7 @@

The pedalboard<
-property units: Optional[str]#
+property units: Optional[str]#

Alias for “label” - the units used by this parameter (Hz, dB, etc).

May be None if the plugin does not expose units for this parameter or if automatic unit detection fails.

@@ -294,17 +294,17 @@

The pedalboard<

Don’t use this directly; use one of pedalboard.VST3Plugin or pedalboard.AudioUnitPlugin instead.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
-__call__(midi_messages: object, duration: float, sample_rate: float, num_channels: int = 2, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]
+__call__(midi_messages: object, duration: float, sample_rate: float, num_channels: int = 2, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]

Run an audio or MIDI buffer through this plugin, returning audio. Alias for process().

-process(midi_messages: object, duration: float, sample_rate: float, num_channels: int = 2, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(midi_messages: object, duration: float, sample_rate: float, num_channels: int = 2, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]

Pass a buffer of audio (as a 32- or 64-bit NumPy array) or a list of MIDI messages to this plugin, returning audio.

(If calling this multiple times with multiple effect plugins, consider @@ -380,21 +380,21 @@

The pedalboard<
-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -402,7 +402,7 @@

The pedalboard<
-class pedalboard.Pedalboard(plugins: Optional[List[Plugin]] = None)#
+class pedalboard.Pedalboard(plugins: Optional[List[Plugin]] = None)#

A container for a series of Plugin objects, to use for processing audio, like a guitar pedalboard.

Pedalboard objects act like regular Python List objects, @@ -421,39 +421,39 @@

The pedalboard<
-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-append(plugin: Plugin) None#
+append(plugin: Plugin) None#

Append a plugin to the end of this container.

-insert(index: int, plugin: Plugin) None#
+insert(index: int, plugin: Plugin) None#

Insert a plugin at the specified index.

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -471,11 +471,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -486,13 +481,13 @@

The pedalboard<
-remove(plugin: Plugin) None#
+remove(plugin: Plugin) None#

Remove a plugin by its value.

-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -500,7 +495,7 @@

The pedalboard<
-pedalboard.load_plugin(path_to_plugin_file: str, parameter_values: Dict[str, Union[str, int, float, bool]] = {}, plugin_name: Optional[str] = None, initialization_timeout: float = 10.0) ExternalPlugin#
+pedalboard.load_plugin(path_to_plugin_file: str, parameter_values: Dict[str, Union[str, int, float, bool]] = {}, plugin_name: Optional[str] = None, initialization_timeout: float = 10.0) ExternalPlugin#

Load an audio plugin.

Two plugin formats are supported:
    @@ -544,7 +539,7 @@

    The pedalboard<
    -class pedalboard.AudioUnitPlugin(path_to_plugin_file: str, parameter_values: Optional[object] = None, plugin_name: Optional[str] = None, initialization_timeout: float = 10.0)#
    +class pedalboard.AudioUnitPlugin(path_to_plugin_file: str, parameter_values: Optional[object] = None, plugin_name: Optional[str] = None, initialization_timeout: float = 10.0)#

    A wrapper around third-party, audio effect or instrument plugins in Apple’s Audio Unit format.

    @@ -567,24 +562,24 @@

    The pedalboard<

    Support for loading AUv3 plugins ( .appex bundles) introduced in v0.9.5.

    -__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
    +__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
    -__call__(midi_messages: object, duration: float, sample_rate: float, num_channels: int = 2, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]
    +__call__(midi_messages: object, duration: float, sample_rate: float, num_channels: int = 2, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]

    Run an audio or MIDI buffer through this plugin, returning audio. Alias for process().

    -static get_plugin_names_for_file(filename: str) list[str]#
    +static get_plugin_names_for_file(filename: str) list[str]#

    Return a list of plugin names contained within a given Audio Unit bundle (i.e.: a .component or .appex file). If the provided file cannot be scanned, an ImportError will be raised.

    Note that most Audio Units have a single plugin inside, but this method can be useful to determine if multiple plugins are present in one bundle, and if so, what their names are.

    -process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
    +process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
    -process(midi_messages: object, duration: float, sample_rate: float, num_channels: int = 2, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]
    +process(midi_messages: object, duration: float, sample_rate: float, num_channels: int = 2, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]

    Pass a buffer of audio (as a 32- or 64-bit NumPy array) or a list of MIDI messages to this plugin, returning audio.

    (If calling this multiple times with multiple effect plugins, consider @@ -660,7 +655,7 @@

    The pedalboard<
    -show_editor(close_event: Optional[Event] = None) None#
    +show_editor(close_event: Optional[Event] = None) None#

    Show the UI of this plugin as a native window.

    This method may only be called on the main thread, and will block the main thread until any of the following things happens:

    @@ -669,8 +664,8 @@

    The pedalboard<
  • the window is closed by clicking the close button

  • the window is closed by pressing the appropriate (OS-specific) keyboard shortcut

  • a KeyboardInterrupt (Ctrl-C) is sent to the program

  • -
  • the threading.Event.set() method is called (by another thread) -on a provided threading.Event object

  • +
  • the threading.Event.set() method is called (by another thread) +on a provided threading.Event object

An example of how to programmatically close an editor window:

@@ -696,57 +691,57 @@

The pedalboard<
-property category: str#
+property category: str#

A category that this plugin falls into, such as “Dynamics”, “Reverbs”, etc.

Introduced in v0.9.4.

-property descriptive_name: str#
+property descriptive_name: str#

A more descriptive name for this plugin. This may be the same as the ‘name’ field, but some plugins may provide an alternative name.

Introduced in v0.9.4.

-property has_shared_container: bool#
+property has_shared_container: bool#

True iff this plugin is part of a multi-plugin container.

Introduced in v0.9.4.

-property identifier: str#
+property identifier: str#

A string that can be saved and used to uniquely identify this plugin (and version) again.

Introduced in v0.9.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin identifies itself as an instrument (generator, synthesizer, etc) plugin.

Introduced in v0.9.4.

-property manufacturer_name: str#
+property manufacturer_name: str#

The name of the manufacturer of this plugin, as reported by the plugin itself.

Introduced in v0.9.4.

-property name: str#
+property name: str#

The name of this plugin.

-property raw_state: bytes#
-

A bytes object representing the plugin’s internal state.

-

For the Audio Unit format, this is usually a binary property list that can be decoded or encoded with the built-in plistlib package.

+property raw_state: bytes# +

A bytes object representing the plugin’s internal state.

+

For the Audio Unit format, this is usually a binary property list that can be decoded or encoded with the built-in plistlib package.

Warning

This property can be set to change the plugin’s internal state, but providing invalid data may cause the plugin to crash, taking the entire Python process down with it.

@@ -755,21 +750,21 @@

The pedalboard<
-property version: str#
+property version: str#

The version string for this plugin, as reported by the plugin itself.

Introduced in v0.9.4.

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -777,38 +772,38 @@

The pedalboard<
-class pedalboard.Bitcrush(bit_depth: float = 8)#
+class pedalboard.Bitcrush(bit_depth: float = 8)#

A plugin that reduces the signal to a given bit depth, giving the audio a lo-fi, digitized sound. Floating-point bit depths are supported.

Bitcrushing changes the amount of “vertical” resolution used for an audio signal (i.e.: how many unique values could be used to represent each sample). For an effect that changes the “horizontal” resolution (i.e.: how many samples are available per second), see pedalboard.Resample.

-property bit_depth: float#
+property bit_depth: float#

The bit depth to quantize the signal to. Must be between 0 and 32 bits. May be an integer, decimal, or floating-point value. Each audio sample will be quantized onto 2 ** bit_depth values.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -826,11 +821,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -841,7 +831,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -849,43 +839,43 @@

The pedalboard<
-class pedalboard.Chain(plugins: list[Plugin])#
+class pedalboard.Chain(plugins: list[Plugin])#

Run zero or more plugins as a plugin. Useful when used with the Mix plugin.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-append(plugin: Plugin) None#
+append(plugin: Plugin) None#

Append a plugin to the end of this container.

-insert(index: int, plugin: Plugin) None#
+insert(index: int, plugin: Plugin) None#

Insert a plugin at the specified index.

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -903,11 +893,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -918,13 +903,13 @@

The pedalboard<
-remove(plugin: Plugin) None#
+remove(plugin: Plugin) None#

Remove a plugin by its value.

-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -932,39 +917,39 @@

The pedalboard<
-class pedalboard.Chorus(rate_hz: float = 1.0, depth: float = 0.25, centre_delay_ms: float = 7.0, feedback: float = 0.0, mix: float = 0.5)#
+class pedalboard.Chorus(rate_hz: float = 1.0, depth: float = 0.25, centre_delay_ms: float = 7.0, feedback: float = 0.0, mix: float = 0.5)#

A basic chorus effect.

This audio effect can be controlled via the speed and depth of the LFO controlling the frequency response, a mix control, a feedback control, and the centre delay of the modulation.

Note: To get classic chorus sounds try to use a centre delay time around 7-8 ms with a low feeback volume and a low depth. This effect can also be used as a flanger with a lower centre delay time and a lot of feedback, and as a vibrato effect if the mix value is 1.

-property rate_hz: float#
+property rate_hz: float#

The speed of the chorus effect’s low-frequency oscillator (LFO), in Hertz. This value must be between 0 Hz and 100 Hz.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -982,11 +967,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -997,7 +977,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -1005,31 +985,31 @@

The pedalboard<
-class pedalboard.Clipping(threshold_db: float = -6.0)#
+class pedalboard.Clipping(threshold_db: float = -6.0)#

A distortion plugin that adds hard distortion to the signal by clipping the signal at the provided threshold (in decibels).

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -1047,11 +1027,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -1062,7 +1037,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -1070,32 +1045,32 @@

The pedalboard<
-class pedalboard.Compressor(threshold_db: float = 0, ratio: float = 1, attack_ms: float = 1.0, release_ms: float = 100)#
+class pedalboard.Compressor(threshold_db: float = 0, ratio: float = 1, attack_ms: float = 1.0, release_ms: float = 100)#

A dynamic range compressor, used to reduce the volume of loud sounds and “compress” the loudness of the signal.

For a lossy compression algorithm that introduces noise or artifacts, see pedalboard.MP3Compressor or pedalboard.GSMCompressor.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -1113,11 +1088,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -1128,7 +1098,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -1142,27 +1112,27 @@

The pedalboard<

Support for passing NumPy arrays as impulse responses introduced in v0.9.10.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -1180,11 +1150,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -1195,7 +1160,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -1203,31 +1168,31 @@

The pedalboard<
-class pedalboard.Delay(delay_seconds: float = 0.5, feedback: float = 0.0, mix: float = 0.5)#
+class pedalboard.Delay(delay_seconds: float = 0.5, feedback: float = 0.0, mix: float = 0.5)#

A digital delay plugin with controllable delay time, feedback percentage, and dry/wet mix.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -1245,11 +1210,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -1260,7 +1220,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -1268,32 +1228,32 @@

The pedalboard<
-class pedalboard.Distortion(drive_db: float = 25)#
+class pedalboard.Distortion(drive_db: float = 25)#

A distortion effect, which applies a non-linear (tanh, or hyperbolic tangent) waveshaping function to apply harmonically pleasing distortion to a signal.

This plugin produces a signal that is roughly equivalent to running: def distortion(x): return tanh(x * db_to_gain(drive_db))

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -1311,11 +1271,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -1326,7 +1281,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -1338,27 +1293,27 @@

The pedalboard<

An audio degradation/compression plugin that applies the GSM “Full Rate” compression algorithm to emulate the sound of a 2G cellular phone connection. This plugin internally resamples the input audio to a fixed sample rate of 8kHz (required by the GSM Full Rate codec), although the quality of the resampling algorithm can be specified.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -1376,11 +1331,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -1391,7 +1341,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -1399,32 +1349,32 @@

The pedalboard<
-class pedalboard.Gain(gain_db: float = 1.0)#
+class pedalboard.Gain(gain_db: float = 1.0)#

A gain plugin that increases or decreases the volume of a signal by amplifying or attenuating it by the provided value (in decibels). No distortion or other effects are applied.

Think of this as a volume control.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -1442,11 +1392,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -1457,7 +1402,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -1465,31 +1410,31 @@

The pedalboard<
-class pedalboard.HighShelfFilter(cutoff_frequency_hz: float = 440, gain_db: float = 0.0, q: float = 0.7071067690849304)#
+class pedalboard.HighShelfFilter(cutoff_frequency_hz: float = 440, gain_db: float = 0.0, q: float = 0.7071067690849304)#

A high shelf filter plugin with variable Q and gain, as would be used in an equalizer. Frequencies above the cutoff frequency will be boosted (or cut) by the provided gain (in decibels).

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -1507,11 +1452,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -1522,7 +1462,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -1530,31 +1470,31 @@

The pedalboard<
-class pedalboard.HighpassFilter(cutoff_frequency_hz: float = 50)#
+class pedalboard.HighpassFilter(cutoff_frequency_hz: float = 50)#

Apply a first-order high-pass filter with a roll-off of 6dB/octave. The cutoff frequency will be attenuated by -3dB (i.e.: \(\frac{1}{\sqrt{2}}\) as loud, expressed as a gain factor) and lower frequencies will be attenuated by a further 6dB per octave.)

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -1572,11 +1512,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -1587,7 +1522,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -1599,27 +1534,27 @@

The pedalboard<

An abstract class that implements various kinds of infinite impulse response (IIR) filter designs. This should not be used directly; use HighShelfFilter, LowShelfFilter, or PeakFilter directly instead.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -1637,11 +1572,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -1652,7 +1582,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -1665,27 +1595,27 @@

The pedalboard<

Inverting a signal may be useful to cancel out signals in many cases; for instance, Invert can be used with the Mix plugin to remove the original signal from an effects chain that contains multiple signals.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -1703,11 +1633,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -1718,7 +1643,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -1726,7 +1651,7 @@

The pedalboard<
-class pedalboard.LadderFilter(mode: Mode = Mode.LPF12, cutoff_hz: float = 200, resonance: float = 0, drive: float = 1.0)#
+class pedalboard.LadderFilter(mode: Mode = Mode.LPF12, cutoff_hz: float = 200, resonance: float = 0, drive: float = 1.0)#

A multi-mode audio filter based on the classic Moog synthesizer ladder filter, invented by Dr. Bob Moog in 1968.

Depending on the filter’s mode, frequencies above, below, or on both sides of the cutoff frequency will be attenuated. Higher values for the resonance parameter may cause peaks in the frequency response around the cutoff frequency.

@@ -1773,27 +1698,27 @@

The pedalboard<
-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -1811,11 +1736,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -1826,7 +1746,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -1834,31 +1754,31 @@

The pedalboard<
-class pedalboard.Limiter(threshold_db: float = -10.0, release_ms: float = 100.0)#
+class pedalboard.Limiter(threshold_db: float = -10.0, release_ms: float = 100.0)#

A simple limiter with standard threshold and release time controls, featuring two compressors and a hard clipper at 0 dB.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -1876,11 +1796,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -1891,7 +1806,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -1899,31 +1814,31 @@

The pedalboard<
-class pedalboard.LowShelfFilter(cutoff_frequency_hz: float = 440, gain_db: float = 0.0, q: float = 0.7071067690849304)#
+class pedalboard.LowShelfFilter(cutoff_frequency_hz: float = 440, gain_db: float = 0.0, q: float = 0.7071067690849304)#

A low shelf filter with variable Q and gain, as would be used in an equalizer. Frequencies below the cutoff frequency will be boosted (or cut) by the provided gain value.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -1941,11 +1856,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -1956,7 +1866,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -1964,31 +1874,31 @@

The pedalboard<
-class pedalboard.LowpassFilter(cutoff_frequency_hz: float = 50)#
+class pedalboard.LowpassFilter(cutoff_frequency_hz: float = 50)#

Apply a first-order low-pass filter with a roll-off of 6dB/octave. The cutoff frequency will be attenuated by -3dB (i.e.: 0.707x as loud).

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -2006,11 +1916,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -2021,7 +1926,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -2029,33 +1934,33 @@

The pedalboard<
-class pedalboard.MP3Compressor(vbr_quality: float = 2.0)#
+class pedalboard.MP3Compressor(vbr_quality: float = 2.0)#

An MP3 compressor plugin that runs the LAME MP3 encoder in real-time to add compression artifacts to the audio stream.

Currently only supports variable bit-rate mode (VBR) and accepts a floating-point VBR quality value (between 0.0 and 10.0; lower is better).

Note that the MP3 format only supports 8kHz, 11025Hz, 12kHz, 16kHz, 22050Hz, 24kHz, 32kHz, 44.1kHz, and 48kHz audio; if an unsupported sample rate is provided, an exception will be thrown at processing time.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -2073,11 +1978,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -2088,7 +1988,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -2096,43 +1996,43 @@

The pedalboard<
-class pedalboard.Mix(plugins: list[Plugin])#
+class pedalboard.Mix(plugins: list[Plugin])#

A utility plugin that allows running other plugins in parallel. All plugins provided will be mixed equally.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-append(plugin: Plugin) None#
+append(plugin: Plugin) None#

Append a plugin to the end of this container.

-insert(index: int, plugin: Plugin) None#
+insert(index: int, plugin: Plugin) None#

Insert a plugin at the specified index.

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -2150,11 +2050,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -2165,13 +2060,13 @@

The pedalboard<
-remove(plugin: Plugin) None#
+remove(plugin: Plugin) None#

Remove a plugin by its value.

-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -2179,31 +2074,31 @@

The pedalboard<
-class pedalboard.NoiseGate(threshold_db: float = -100.0, ratio: float = 10, attack_ms: float = 1.0, release_ms: float = 100.0)#
+class pedalboard.NoiseGate(threshold_db: float = -100.0, ratio: float = 10, attack_ms: float = 1.0, release_ms: float = 100.0)#

A simple noise gate with standard threshold, ratio, attack time and release time controls. Can be used as an expander if the ratio is low.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -2221,11 +2116,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -2236,7 +2126,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -2244,31 +2134,31 @@

The pedalboard<
-class pedalboard.PeakFilter(cutoff_frequency_hz: float = 440, gain_db: float = 0.0, q: float = 0.7071067690849304)#
+class pedalboard.PeakFilter(cutoff_frequency_hz: float = 440, gain_db: float = 0.0, q: float = 0.7071067690849304)#

A peak (or notch) filter with variable Q and gain, as would be used in an equalizer. Frequencies around the cutoff frequency will be boosted (or cut) by the provided gain value.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -2286,11 +2176,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -2301,7 +2186,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -2309,31 +2194,31 @@

The pedalboard<
-class pedalboard.Phaser(rate_hz: float = 1.0, depth: float = 0.5, centre_frequency_hz: float = 1300.0, feedback: float = 0.0, mix: float = 0.5)#
+class pedalboard.Phaser(rate_hz: float = 1.0, depth: float = 0.5, centre_frequency_hz: float = 1300.0, feedback: float = 0.0, mix: float = 0.5)#

A 6 stage phaser that modulates first order all-pass filters to create sweeping notches in the magnitude frequency response. This audio effect can be controlled with standard phaser parameters: the speed and depth of the LFO controlling the frequency response, a mix control, a feedback control, and the centre frequency of the modulation.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -2351,11 +2236,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -2366,7 +2246,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -2374,32 +2254,32 @@

The pedalboard<
-class pedalboard.PitchShift(semitones: float = 0.0)#
+class pedalboard.PitchShift(semitones: float = 0.0)#

A pitch shifting effect that can change the pitch of audio without affecting its duration.

This effect uses Chris Cannam’s wonderful *Rubber Band* library audio stretching library.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -2417,11 +2297,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -2432,7 +2307,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -2444,13 +2319,13 @@

The pedalboard<

A generic audio processing plugin. Base class of all Pedalboard plugins.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -2468,11 +2343,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -2483,20 +2353,20 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

@@ -2505,49 +2375,49 @@

The pedalboard<
-class pedalboard.PluginContainer(plugins: list[Plugin])#
+class pedalboard.PluginContainer(plugins: list[Plugin])#

A generic audio processing plugin that contains zero or more other plugins. Not intended for direct use.

-append(plugin: Plugin) None#
+append(plugin: Plugin) None#

Append a plugin to the end of this container.

-insert(index: int, plugin: Plugin) None#
+insert(index: int, plugin: Plugin) None#

Insert a plugin at the specified index.

-remove(plugin: Plugin) None#
+remove(plugin: Plugin) None#

Remove a plugin by its value.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -2565,11 +2435,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -2580,7 +2445,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -2588,7 +2453,7 @@

The pedalboard<
-class pedalboard.Resample(target_sample_rate: float = 8000.0, quality: Quality = Quality.WindowedSinc)#
+class pedalboard.Resample(target_sample_rate: float = 8000.0, quality: Quality = Quality.WindowedSinc)#

A plugin that downsamples the input audio to the given sample rate, then upsamples it back to the original sample rate. Various quality settings will produce audible distortion and aliasing effects.

@@ -2628,27 +2493,27 @@

The pedalboard<
-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -2666,11 +2531,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -2681,7 +2541,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -2693,7 +2553,7 @@

The pedalboard<
-property target_sample_rate: float#
+property target_sample_rate: float#

The sample rate to resample the input audio to. This value may be a floating-point number, in which case a floating-point sampling rate will be used. Note that the output of this plugin will still be at the original sample rate; this is merely the sample rate used for quality reduction.

@@ -2701,31 +2561,31 @@

The pedalboard<
-class pedalboard.Reverb(room_size: float = 0.5, damping: float = 0.5, wet_level: float = 0.33, dry_level: float = 0.4, width: float = 1.0, freeze_mode: float = 0.0)#
+class pedalboard.Reverb(room_size: float = 0.5, damping: float = 0.5, wet_level: float = 0.33, dry_level: float = 0.4, width: float = 1.0, freeze_mode: float = 0.0)#

A simple reverb effect. Uses a simple stereo reverb algorithm, based on the technique and tunings used in FreeVerb <https://ccrma.stanford.edu/~jos/pasp/Freeverb.html>_.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run an audio buffer through this plugin. Alias for process().

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-property is_instrument: bool#
+property is_instrument: bool#

True iff this plugin is not an audio effect and accepts only MIDI input, not audio.

Introduced in v0.7.4.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#

Run a 32-bit or 64-bit floating point audio buffer through this plugin. (If calling this multiple times with multiple plugins, consider creating a pedalboard.Pedalboard object instead.)

@@ -2743,11 +2603,6 @@

The pedalboard< processing begins, clearing any state from previous calls to process. If calling process multiple times while processing the same audio file or buffer, set reset to False.

-

The layout of the provided input_array will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -Plugin object will use the last-detected channel layout until -reset() is explicitly called (as of v0.9.9).

Note

The process() method can also be used via __call__(); @@ -2758,7 +2613,7 @@

The pedalboard<
-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

@@ -2766,7 +2621,7 @@

The pedalboard<
-class pedalboard.VST3Plugin(path_to_plugin_file: str, parameter_values: Optional[object] = None, plugin_name: Optional[str] = None, initialization_timeout: float = 10.0)#
+class pedalboard.VST3Plugin(path_to_plugin_file: str, parameter_values: Optional[object] = None, plugin_name: Optional[str] = None, initialization_timeout: float = 10.0)#

A wrapper around third-party, audio effect or instrument plugins in Steinberg GmbH’s VST3® format.

@@ -2785,42 +2640,42 @@

The pedalboard<

Support for running VST3® plugins on background threads introduced in v0.8.8.

-property is_effect: bool#
+property is_effect: bool#

True iff this plugin is an audio effect and accepts audio as input.

Introduced in v0.7.4.

-reset() None#
+reset() None#

Clear any internal state stored by this plugin (e.g.: reverb tails, delay lines, LFO state, etc). The values of plugin parameters will remain unchanged.

-__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+__call__(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
-__call__(midi_messages: object, duration: float, sample_rate: float, num_channels: int = 2, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]
+__call__(midi_messages: object, duration: float, sample_rate: float, num_channels: int = 2, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]

Run an audio or MIDI buffer through this plugin, returning audio. Alias for process().

-static get_plugin_names_for_file(arg0: str) list[str]#
+static get_plugin_names_for_file(arg0: str) list[str]#

Return a list of plugin names contained within a given VST3 plugin (i.e.: a “.vst3”). If the provided file cannot be scanned, an ImportError will be raised.

-load_preset(preset_file_path: str) None#
+load_preset(preset_file_path: str) None#

Load a VST3 preset file in .vstpreset format.

-process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
+process(input_array: ndarray, sample_rate: float, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]#
-process(midi_messages: object, duration: float, sample_rate: float, num_channels: int = 2, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]
+process(midi_messages: object, duration: float, sample_rate: float, num_channels: int = 2, buffer_size: int = 8192, reset: bool = True) ndarray[Any, dtype[float32]]

Pass a buffer of audio (as a 32- or 64-bit NumPy array) or a list of MIDI messages to this plugin, returning audio.

(If calling this multiple times with multiple effect plugins, consider @@ -2896,7 +2751,7 @@

The pedalboard<
-show_editor(close_event: Optional[Event] = None) None#
+show_editor(close_event: Optional[Event] = None) None#

Show the UI of this plugin as a native window.

This method may only be called on the main thread, and will block the main thread until any of the following things happens:

@@ -2905,8 +2760,8 @@

The pedalboard<
  • the window is closed by clicking the close button

  • the window is closed by pressing the appropriate (OS-specific) keyboard shortcut

  • a KeyboardInterrupt (Ctrl-C) is sent to the program

  • -
  • the threading.Event.set() method is called (by another thread) -on a provided threading.Event object

  • +
  • the threading.Event.set() method is called (by another thread) +on a provided threading.Event object

  • An example of how to programmatically close an editor window:

    @@ -2932,56 +2787,56 @@

    The pedalboard<
    -property category: str#
    +property category: str#

    A category that this plugin falls into, such as “Dynamics”, “Reverbs”, etc.

    Introduced in v0.9.4.

    -property descriptive_name: str#
    +property descriptive_name: str#

    A more descriptive name for this plugin. This may be the same as the ‘name’ field, but some plugins may provide an alternative name.

    Introduced in v0.9.4.

    -property has_shared_container: bool#
    +property has_shared_container: bool#

    True iff this plugin is part of a multi-plugin container.

    Introduced in v0.9.4.

    -property identifier: str#
    +property identifier: str#

    A string that can be saved and used to uniquely identify this plugin (and version) again.

    Introduced in v0.9.4.

    -property is_instrument: bool#
    +property is_instrument: bool#

    True iff this plugin identifies itself as an instrument (generator, synthesizer, etc) plugin.

    Introduced in v0.9.4.

    -property manufacturer_name: str#
    +property manufacturer_name: str#

    The name of the manufacturer of this plugin, as reported by the plugin itself.

    Introduced in v0.9.4.

    -property name: str#
    +property name: str#

    The name of this plugin.

    -property raw_state: bytes#
    -

    A bytes object representing the plugin’s internal state.

    +property raw_state: bytes# +

    A bytes object representing the plugin’s internal state.

    For the VST3 format, this is usually an XML-encoded string prefixed with an 8-byte header and suffixed with a single null byte.

    Warning

    @@ -2991,7 +2846,7 @@

    The pedalboard<
    -property version: str#
    +property version: str#

    The version string for this plugin, as reported by the plugin itself.

    Introduced in v0.9.4.

    @@ -3000,7 +2855,7 @@

    The pedalboard<
    -pedalboard.time_stretch(input_audio: ndarray[Any, dtype[float32]], samplerate: float, stretch_factor: Union[float, ndarray[Any, dtype[float64]]] = 1.0, pitch_shift_in_semitones: Union[float, ndarray[Any, dtype[float64]]] = 0.0, high_quality: bool = True, transient_mode: str = 'crisp', transient_detector: str = 'compound', retain_phase_continuity: bool = True, use_long_fft_window: Optional[bool] = None, use_time_domain_smoothing: bool = False, preserve_formants: bool = True) ndarray[Any, dtype[float32]]#
    +pedalboard.time_stretch(input_audio: ndarray[Any, dtype[float32]], samplerate: float, stretch_factor: Union[float, ndarray[Any, dtype[float64]]] = 1.0, pitch_shift_in_semitones: Union[float, ndarray[Any, dtype[float64]]] = 0.0, high_quality: bool = True, transient_mode: str = 'crisp', transient_detector: str = 'compound', retain_phase_continuity: bool = True, use_long_fft_window: Optional[bool] = None, use_time_domain_smoothing: bool = False, preserve_formants: bool = True) ndarray[Any, dtype[float32]]#

    Time-stretch (and optionally pitch-shift) a buffer of audio, changing its length.

    Using a higher stretch_factor will shorten the audio - i.e., a stretch_factor of 2.0 will double the speed of the audio and halve the length of the audio, @@ -3472,4 +3327,4 @@

    The pedalboard< - + \ No newline at end of file diff --git a/docs/reference/pedalboard.io.html b/docs/reference/pedalboard.io.html index 14dcf0edf..6dd70bc00 100644 --- a/docs/reference/pedalboard.io.html +++ b/docs/reference/pedalboard.io.html @@ -250,13 +250,13 @@

    The pedalboard.

    The following documentation lists all of the available I/O classes.

    -class pedalboard.io.AudioFile(filename: str, mode: Literal['r'] = 'r')#
    +class pedalboard.io.AudioFile(filename: str, mode: Literal['r'] = 'r')#
    -class pedalboard.io.AudioFile(file_like: Union[BinaryIO, memoryview], mode: Literal['r'] = 'r')
    +class pedalboard.io.AudioFile(file_like: Union[BinaryIO, memoryview], mode: Literal['r'] = 'r')
    -class pedalboard.io.AudioFile(filename: str, mode: Literal['w'], samplerate: Optional[float] = None, num_channels: int = 1, bit_depth: int = 16, quality: Optional[Union[str, float]] = None)
    +class pedalboard.io.AudioFile(filename: str, mode: Literal['w'], samplerate: Optional[float] = None, num_channels: int = 1, bit_depth: int = 16, quality: Optional[Union[str, float]] = None)
    -class pedalboard.io.AudioFile(file_like: BinaryIO, mode: Literal['w'], samplerate: Optional[float] = None, num_channels: int = 1, bit_depth: int = 16, quality: Optional[Union[str, float]] = None, format: Optional[str] = None)
    +class pedalboard.io.AudioFile(file_like: BinaryIO, mode: Literal['w'], samplerate: Optional[float] = None, num_channels: int = 1, bit_depth: int = 16, quality: Optional[Union[str, float]] = None, format: Optional[str] = None)

    A base class for readable and writeable audio files.

    AudioFile may be used just like a regular Python open function call, to open an audio file for reading (with the default "r" mode) @@ -271,7 +271,7 @@

    The pedalboard.
  • A file-like object can be provided to AudioFile, allowing for reading and writing to in-memory streams or buffers. The provided file-like object must be seekable and must be opened in binary mode (i.e.: io.BytesIO instead of io.StringIO). -A memoryview object may also be provided when reading audio.

  • +A memoryview object may also be provided when reading audio.

    @@ -304,7 +304,7 @@

    The pedalboard. wav_buffer.getvalue() # do something with the file-like object

    -

    Encoding audio as wav, ogg, mp3, or flac as a bytes buffer in one line:

    +

    Encoding audio as wav, ogg, mp3, or flac as a bytes buffer in one line:

    sr = 44100
     num_channels = 2
     audio = np.random.rand(num_channels, sr)
    @@ -343,9 +343,9 @@ 

    The pedalboard.

    -static encode(samples: ndarray, samplerate: float, format: str, num_channels: int = 1, bit_depth: int = 16, quality: Optional[Union[str, float]] = None) bytes#
    -

    Encode an audio buffer to a Python bytes object.

    -

    This function will encode an entire audio buffer at once and return a bytes +static encode(samples: ndarray, samplerate: float, format: str, num_channels: int = 1, bit_depth: int = 16, quality: Optional[Union[str, float]] = None) bytes# +

    Encode an audio buffer to a Python bytes object.

    +

    This function will encode an entire audio buffer at once and return a bytes object representing the bytes of the resulting audio file.

    This function produces identical output to the following code:

    buf = io.BytesIO()
    @@ -373,7 +373,7 @@ 

    The pedalboard.
    -class pedalboard.io.AudioStream(input_device_name: str, output_device_name: str, plugins: Optional[Chain] = None, sample_rate: Optional[float] = None, buffer_size: int = 512, allow_feedback: bool = False)#
    +class pedalboard.io.AudioStream(input_device_name: str, output_device_name: str, plugins: Optional[Chain] = None, sample_rate: Optional[float] = None, buffer_size: int = 512, allow_feedback: bool = False)#

    A class that streams audio from an input audio device (i.e.: a microphone, audio interface, etc) to an output device (speaker, headphones), passing it through a pedalboard.Pedalboard to add effects.

    @@ -420,7 +420,7 @@

    The pedalboard. not in scope, etc), the audio stream will continue to play back forever, and won’t stop until the Python interpreter exits.

    To run an AudioStream in the background, use Python’s -threading module to call the synchronous run() method on a +threading module to call the synchronous run() method on a background thread, allowing for easier cleanup.

    Introduced in v0.7.0. Not supported on Linux.

    @@ -432,14 +432,14 @@

    The pedalboard.
    -__exit__(arg0: object, arg1: object, arg2: object) None#
    +__exit__(arg0: object, arg1: object, arg2: object) None#

    Exit the context manager, ending the audio stream. Once called, the audio stream will be stopped (i.e.: running will be False).

    -run() None#
    -

    Start streaming audio from input to output, passing the audio stream through the plugins on this AudioStream object. This call will block the current thread until a KeyboardInterrupt (Ctrl-C) is received.

    +run() None# +

    Start streaming audio from input to output, passing the audio stream through the plugins on this AudioStream object. This call will block the current thread until a KeyboardInterrupt (Ctrl-C) is received.

    @@ -450,7 +450,7 @@

    The pedalboard.
    -property running: bool#
    +property running: bool#

    True if this stream is currently streaming live audio from input to output, False otherwise.

    @@ -458,9 +458,9 @@

    The pedalboard.
    -class pedalboard.io.ReadableAudioFile(filename: str)#
    +class pedalboard.io.ReadableAudioFile(filename: str)#
    -class pedalboard.io.ReadableAudioFile(file_like: Union[BinaryIO, memoryview])
    +class pedalboard.io.ReadableAudioFile(file_like: Union[BinaryIO, memoryview])

    A class that wraps an audio file for reading, with native support for Ogg Vorbis, MP3, WAV, FLAC, and AIFF files on all operating systems. Other formats may also be readable depending on the operating system and installed system libraries:

    @@ -497,19 +497,19 @@

    The pedalboard.
    -__exit__(arg0: object, arg1: object, arg2: object) None#
    +__exit__(arg0: object, arg1: object, arg2: object) None#

    Stop using this ReadableAudioFile as a context manager, close the file, release its resources.

    -close() None#
    +close() None#

    Close this file, rendering this object unusable.

    -read(num_frames: Union[float, int] = 0) ndarray[Any, dtype[float32]]#
    +read(num_frames: Union[float, int] = 0) ndarray[Any, dtype[float32]]#

    Read the given number of frames (samples in each channel) from this audio file at its current position.

    num_frames is a required argument, as audio files can be deceptively large. (Consider that an hour-long .ogg file may be only a handful of megabytes on disk, but may decompress to @@ -535,7 +535,7 @@

    The pedalboard.
    -read_raw(num_frames: Union[float, int] = 0) ndarray#
    +read_raw(num_frames: Union[float, int] = 0) ndarray#

    Read the given number of frames (samples in each channel) from this audio file at its current position.

    num_frames is a required argument, as audio files can be deceptively large. (Consider that an hour-long .ogg file may be only a handful of megabytes on disk, but may decompress to @@ -560,7 +560,7 @@

    The pedalboard.
    -resampled_to(target_sample_rate: float, quality: Quality = Quality.WindowedSinc) Union[ReadableAudioFile, ResampledReadableAudioFile]#
    +resampled_to(target_sample_rate: float, quality: Quality = Quality.WindowedSinc) Union[ReadableAudioFile, ResampledReadableAudioFile]#

    Return a ResampledReadableAudioFile that will automatically resample this ReadableAudioFile to the provided target_sample_rate, using a constant amount of memory.

    If target_sample_rate matches the existing sample rate of the file, the original file will be returned.

    Introduced in v0.6.0.

    @@ -568,31 +568,31 @@

    The pedalboard.
    -seek(position: int) None#
    +seek(position: int) None#

    Seek this file to the provided location in frames. Future reads will start from this position.

    -seekable() bool#
    +seekable() bool#

    Returns True if this file is currently open and calls to seek() will work.

    -tell() int#
    +tell() int#

    Return the current position of the read pointer in this audio file, in frames. This value will increase as read() is called, and may decrease if seek() is called.

    -property closed: bool#
    +property closed: bool#

    True iff this file is closed (and no longer usable), False otherwise.

    -property duration: float#
    +property duration: float#

    The duration of this file in seconds (frames divided by samplerate).

    Warning

    @@ -605,7 +605,7 @@

    The pedalboard.
    -property exact_duration_known: bool#
    +property exact_duration_known: bool#

    Returns True if this file’s frames and duration attributes are exact values, or False if the frames and duration attributes are estimates based @@ -625,14 +625,14 @@

    The pedalboard.
    -property file_dtype: str#
    +property file_dtype: str#

    The data type ("int16", "float32", etc) stored natively by this file.

    Note that read() will always return a float32 array, regardless of the value of this property. Use read_raw() to read data from the file in its file_dtype.

    -property frames: int#
    +property frames: int#

    The total number of frames (samples per channel) in this file.

    For example, if this file contains 10 seconds of stereo audio at sample rate of 44,100 Hz, frames will return 441,000.

    @@ -674,20 +674,20 @@

    The pedalboard.
    -property name: Optional[str]#
    +property name: Optional[str]#

    The name of this file.

    If this ReadableAudioFile was opened from a file-like object, this will be None.

    -property num_channels: int#
    +property num_channels: int#

    The number of channels in this file.

    -property samplerate: Union[float, int]#
    +property samplerate: Union[float, int]#

    The sample rate of this file in samples (per channel) per second (Hz). Sample rates are represented as floating-point numbers by default, but this property will be an integer if the file’s sample rate has no fractional part.

    @@ -695,7 +695,7 @@

    The pedalboard.
    -class pedalboard.io.ResampledReadableAudioFile(audio_file: ReadableAudioFile, target_sample_rate: float, resampling_quality: Quality = Quality.WindowedSinc)#
    +class pedalboard.io.ResampledReadableAudioFile(audio_file: ReadableAudioFile, target_sample_rate: float, resampling_quality: Quality = Quality.WindowedSinc)#

    A class that wraps an audio file for reading, while resampling the audio stream on-the-fly to a new sample rate.

    Introduced in v0.6.0.

    @@ -724,19 +724,19 @@

    The pedalboard.
    -__exit__(arg0: object, arg1: object, arg2: object) None#
    +__exit__(arg0: object, arg1: object, arg2: object) None#

    Stop using this ResampledReadableAudioFile as a context manager, close the file, release its resources.

    -close() None#
    +close() None#

    Close this file, rendering this object unusable. Note that the ReadableAudioFile instance that is wrapped by this object will not be closed, and will remain usable.

    -read(num_frames: Union[float, int] = 0) ndarray[Any, dtype[float32]]#
    +read(num_frames: Union[float, int] = 0) ndarray[Any, dtype[float32]]#

    Read the given number of frames (samples in each channel, at the target sample rate) from this audio file at its current position, automatically resampling on-the-fly to target_sample_rate.

    @@ -764,7 +764,7 @@

    The pedalboard.
    -seek(position: int) None#
    +seek(position: int) None#

    Seek this file to the provided location in frames at the target sample rate. Future reads will start from this position.

    Note

    @@ -774,25 +774,25 @@

    The pedalboard.
    -seekable() bool#
    +seekable() bool#

    Returns True if this file is currently open and calls to seek() will work.

    -tell() int#
    +tell() int#

    Return the current position of the read pointer in this audio file, in frames at the target sample rate. This value will increase as read() is called, and may decrease if seek() is called.

    -property closed: bool#
    +property closed: bool#

    True iff either this file or its wrapped ReadableAudioFile instance are closed (and no longer usable), False otherwise.

    -property duration: float#
    +property duration: float#

    The duration of this file in seconds (frames divided by samplerate).

    Warning

    @@ -802,7 +802,7 @@

    The pedalboard.
    -property exact_duration_known: bool#
    +property exact_duration_known: bool#

    Returns True if this file’s frames and duration attributes are exact values, or False if the frames and duration attributes are estimates based @@ -822,14 +822,14 @@

    The pedalboard.
    -property file_dtype: str#
    +property file_dtype: str#

    The data type ("int16", "float32", etc) stored natively by this file.

    Note that read() will always return a float32 array, regardless of the value of this property.

    -property frames: int#
    +property frames: int#

    The total number of frames (samples per channel) in this file, at the target sample rate.

    For example, if this file contains 10 seconds of stereo audio at sample rate of 44,100 Hz, and target_sample_rate is 22,050 Hz, frames will return 22,050.

    Note that different resampling_quality values used for resampling may cause frames to differ by ± 1 from its expected value.

    @@ -841,14 +841,14 @@

    The pedalboard.
    -property name: Optional[str]#
    +property name: Optional[str]#

    The name of this file.

    If the ReadableAudioFile wrapped by this ResampledReadableAudioFile was opened from a file-like object, this will be None.

    -property num_channels: int#
    +property num_channels: int#

    The number of channels in this file.

    @@ -860,7 +860,7 @@

    The pedalboard.
    -property samplerate: Union[float, int]#
    +property samplerate: Union[float, int]#

    The sample rate of this file in samples (per channel) per second (Hz). This will be equal to the target_sample_rate parameter passed when this object was created. Sample rates are represented as floating-point numbers by default, but this property will be an integer if the file’s target sample rate has no fractional part.

    @@ -868,31 +868,31 @@

    The pedalboard.
    -class pedalboard.io.StreamResampler(source_sample_rate: float, target_sample_rate: float, num_channels: int, quality: Quality = Quality.WindowedSinc)#
    +class pedalboard.io.StreamResampler(source_sample_rate: float, target_sample_rate: float, num_channels: int, quality: Quality = Quality.WindowedSinc)#

    A streaming resampler that can change the sample rate of multiple chunks of audio in series, while using constant memory.

    For a resampling plug-in that can be used in Pedalboard objects, see pedalboard.Resample.

    Introduced in v0.6.0.

    -process(input: Optional[ndarray[Any, dtype[float32]]] = None) ndarray[Any, dtype[float32]]#
    +process(input: Optional[ndarray[Any, dtype[float32]]] = None) ndarray[Any, dtype[float32]]#

    Resample a 32-bit floating-point audio buffer. The returned buffer may be smaller than the provided buffer depending on the quality method used. Call process() without any arguments to flush the internal buffers and return all remaining audio.

    -reset() None#
    +reset() None#

    Used to reset the internal state of this resampler. Call this method when resampling a new audio stream to prevent audio from leaking between streams.

    -property input_latency: float#
    +property input_latency: float#

    The number of samples (in the input sample rate) that must be supplied before this resampler will begin returning output.

    -property num_channels: int#
    +property num_channels: int#

    The number of channels expected to be passed in every call to process().

    @@ -904,13 +904,13 @@

    The pedalboard.
    -property source_sample_rate: float#
    +property source_sample_rate: float#

    The source sample rate of the input audio that this resampler expects to be passed to process().

    -property target_sample_rate: float#
    +property target_sample_rate: float#

    The sample rate of the audio that this resampler will return from process().

    @@ -918,9 +918,9 @@

    The pedalboard.
    -class pedalboard.io.WriteableAudioFile(filename: str, samplerate: Optional[float] = None, num_channels: int = 1, bit_depth: int = 16, quality: Optional[Union[str, float]] = None)#
    +class pedalboard.io.WriteableAudioFile(filename: str, samplerate: Optional[float] = None, num_channels: int = 1, bit_depth: int = 16, quality: Optional[Union[str, float]] = None)#
    -class pedalboard.io.WriteableAudioFile(file_like: BinaryIO, samplerate: Optional[float] = None, num_channels: int = 1, bit_depth: int = 16, quality: Optional[Union[str, float]] = None, format: Optional[str] = None)
    +class pedalboard.io.WriteableAudioFile(file_like: BinaryIO, samplerate: Optional[float] = None, num_channels: int = 1, bit_depth: int = 16, quality: Optional[Union[str, float]] = None, format: Optional[str] = None)

    A class that wraps an audio file for writing, with native support for Ogg Vorbis, MP3, WAV, FLAC, and AIFF files on all operating systems.

    Use pedalboard.io.get_supported_write_formats() to see which @@ -960,25 +960,25 @@

    The pedalboard.

    -close() None#
    +close() None#

    Close this file, flushing its contents to disk and rendering this object unusable for further writing.

    -flush() None#
    +flush() None#

    Attempt to flush this audio file’s contents to disk. Not all formats support flushing, so this may throw a RuntimeError. (If this happens, closing the file will reliably force a flush to occur.)

    -tell() int#
    +tell() int#

    Return the current position of the write pointer in this audio file, in frames at the target sample rate. This value will increase as write() is called, and will never decrease.

    -write(samples: ndarray) None#
    +write(samples: ndarray) None#

    Encode an array of audio data and write it to this file. The number of channels in the array must match the number of channels used to open the file. The array may contain audio in any shape. If the file’s bit depth or format does not match the provided data type, the audio will be automatically converted.

    Arrays of type int8, int16, int32, float32, and float64 are supported. If an array of an unsupported dtype is provided, a TypeError will be raised.

    @@ -1008,38 +1008,38 @@

    The pedalboard.
    -property closed: bool#
    +property closed: bool#

    If this file has been closed, this property will be True.

    -property file_dtype: str#
    +property file_dtype: str#

    The data type stored natively by this file. Note that write(…) will accept multiple datatypes, regardless of the value of this property.

    -property frames: int#
    +property frames: int#

    The total number of frames (samples per channel) written to this file so far.

    -property num_channels: int#
    +property num_channels: int#

    The number of channels in this file.

    -property quality: Optional[str]#
    +property quality: Optional[str]#

    The quality setting used to write this file. For many formats, this may be None.

    Quality options differ based on the audio codec used in the file. Most codecs specify a number of bits per second in 16- or 32-bit-per-second increments (128 kbps, 160 kbps, etc). Some codecs provide string-like options for variable bit-rate encoding (i.e. “V0” through “V9” for MP3). The strings "best", "worst", "fastest", and "slowest" will also work for any codec.

    -property samplerate: Union[float, int]#
    +property samplerate: Union[float, int]#

    The sample rate of this file in samples (per channel) per second (Hz). Sample rates are represented as floating-point numbers by default, but this property will be an integer if the file’s sample rate has no fractional part.

    diff --git a/docs/searchindex.js b/docs/searchindex.js index 57637528a..dbbaaff49 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["compatibility", "examples", "faq", "index", "internals", "license", "reference/pedalboard", "reference/pedalboard.io"], "filenames": ["compatibility.rst", "examples.rst", "faq.rst", "index.rst", "internals.rst", "license.rst", "reference/pedalboard.rst", "reference/pedalboard.io.rst"], "titles": ["Plugin Compatibility", "Examples", "Frequently Asked Questions", "Features", "Pedalboard Internals", "License", "The pedalboard API", "The pedalboard.io API"], "terms": {"pedalboard": [0, 3, 5], "allow": [0, 1, 3, 6, 7], "load": [0, 1, 3, 4, 6], "vst3": [0, 3, 4, 5, 6], "audio": [0, 3, 4, 5, 6, 7], "unit": [0, 2, 3, 4, 6], "which": [0, 5, 6, 7], "could": [0, 6, 7], "contain": [0, 1, 6, 7], "ani": [0, 2, 4, 6, 7], "code": [0, 2, 4, 5, 7], "most": [0, 3, 4, 6, 7], "have": [0, 4, 6, 7], "been": [0, 7], "test": [0, 3, 4], "work": [0, 1, 3, 6, 7], "just": [0, 1, 4, 6, 7], "fine": [0, 6], "some": [0, 1, 4, 6, 7], "mai": [0, 4, 6, 7], "worst": [0, 7], "even": [0, 3, 7], "crash": [0, 6, 7], "python": [0, 1, 3, 4, 6, 7], "interpret": [0, 3, 7], "without": [0, 3, 6, 7], "warn": 0, "abil": [0, 6], "catch": 0, "error": [0, 6], "ar": [0, 1, 3, 4, 5, 6, 7], "well": [0, 3, 4, 6, 7], "behav": [0, 1], "conform": 0, "set": [0, 1, 2, 6, 7], "convent": 0, "how": [0, 1, 6], "suppos": 0, "mani": [0, 3, 6, 7], "do": [0, 1, 6, 7], "specif": [0, 6], "attempt": [0, 7], "detect": [0, 6], "common": [0, 3], "program": [0, 1, 6, 7], "can": [0, 1, 3, 4, 6, 7], "around": [0, 4, 6], "issu": [0, 4, 6], "includ": [0, 1, 3, 4, 5, 6], "automat": [0, 3, 6, 7], "don": [0, 1, 6, 7], "t": [0, 1, 2, 6, 7], "clear": [0, 6], "intern": [0, 3, 6, 7], "state": [0, 6, 7], "when": [0, 3, 4, 6, 7], "ask": [0, 3], "so": [0, 1, 2, 6, 7], "misbehav": 0, "notic": 0, "If": [0, 1, 3, 6, 7], "i": [0, 1, 2, 3, 4, 5, 6, 7], "being": [0, 7], "render": [0, 1, 2, 3, 6, 7], "incorrectli": 0, "leak": [0, 7], "from": [0, 1, 2, 3, 5, 6, 7], "one": [0, 1, 3, 6, 7], "process": [0, 1, 2, 3, 4, 5, 6, 7], "call": [0, 6, 7], "next": 0, "an": [0, 1, 4, 6, 7], "undesir": 0, "fashion": 0, "try": [0, 6, 7], "pass": [0, 1, 2, 6, 7], "silenc": 0, "between": [0, 2, 6, 7], "ensur": [0, 2, 4, 6, 7], "reverb": [0, 1, 2, 3, 6, 7], "tail": [0, 2, 6], "other": [0, 1, 3, 6, 7], "ha": [0, 1, 6, 7], "time": [0, 1, 3, 6, 7], "fade": 0, "reload": 0, "everi": [0, 4, 6, 7], "load_plugin": [0, 1, 3, 4, 6], "note": [1, 6, 7], "you": [1, 3, 6, 7], "d": [1, 7], "rather": [1, 7], "watch": 1, "video": 1, "instead": [1, 3, 6, 7], "read": [1, 2, 3, 6, 7], "document": [1, 6, 7], "feat": 1, "youtub": 1, "import": [1, 2, 4, 6, 7], "choru": [1, 3, 6], "io": [1, 2, 3, 6], "audiofil": [1, 2, 6, 7], "object": [1, 6, 7], "multipl": [1, 3, 6, 7], "board": [1, 2], "room_siz": [1, 6], "0": [1, 2, 6, 7], "25": [1, 6], "open": [1, 2, 4, 6, 7], "file": [1, 2, 3, 4, 6, 7], "like": [1, 3, 6, 7], "regular": [1, 6, 7], "wav": [1, 2, 3, 6, 7], "f": [1, 6, 7], "write": [1, 2, 3, 6, 7], "output": [1, 2, 6, 7], "w": [1, 2, 6, 7], "sampler": [1, 2, 6, 7], "num_channel": [1, 2, 6, 7], "o": [1, 2, 3, 6, 7], "second": [1, 6, 7], "until": [1, 6, 7], "empti": [1, 6], "while": [1, 2, 6, 7], "tell": [1, 7], "frame": [1, 2, 7], "chunk": [1, 2, 6, 7], "int": [6, 7], "through": [1, 2, 6, 7], "our": [1, 2], "reset": [1, 2, 6, 7], "fals": [1, 2, 6, 7], "For": [1, 6, 7], "more": [1, 2, 3, 4, 6, 7], "inform": [1, 7], "about": [1, 6, 7], "paramet": [1, 3, 6, 7], "see": [1, 2, 6, 7], "http": 6, "spotifi": [3, 5], "github": [3, 6], "refer": [], "html": 6, "_": 6, "It": [1, 3], "thi": [1, 2, 5, 6, 7], "smaller": [1, 2, 6, 7], "whole": 1, "resampl": [1, 3, 6, 7], "desir": 1, "sampl": [1, 2, 6, 7], "rate": [1, 2, 6, 7], "44100": [1, 6, 7], "input": [1, 6, 7], "resampled_to": [1, 7], "pretti": 1, "interest": 1, "sound": [1, 6], "compressor": [1, 2, 3, 6], "threshold_db": [1, 6], "50": [1, 6], "ratio": [1, 6], "gain": [1, 3, 6], "gain_db": [1, 6], "30": [1, 7], "ladderfilt": [1, 3, 6], "mode": [1, 6, 7], "hpf12": [1, 6], "cutoff_hz": [1, 6], "900": 1, "phaser": [1, 3, 6], "convolut": [1, 3, 6], "guitar_amp": 1, "1": [1, 2, 3, 6, 7], "list": [1, 6, 7], "add": [1, 3, 4, 6, 7], "append": [1, 6, 7], "10": [1, 3, 6, 7], "limit": [1, 3, 6], "chang": [1, 3, 6, 7], "easili": 1, "40": 1, "back": [1, 6, 7], "shape": [1, 2, 7], "known": 1, "path": [1, 6, 7], "disk": [1, 7], "vst": [1, 3, 5], "roughrider3": 1, "print": [1, 6, 7], "kei": [1, 6], "dict_kei": 1, "sc_hpf_hz": 1, "input_lvl_db": 1, "sensitivity_db": 1, "attack_m": [1, 6], "release_m": [1, 6], "makeup_db": 1, "mix": [1, 6], "output_lvl_db": 1, "sc_activ": 1, "full_bandwidth": 1, "bypass": 1, "15": 1, "r": 7, "put": 1, "same": [1, 4, 6, 7], "instanc": [1, 4, 6, 7], "delai": [1, 3, 6], "pitch": [1, 3, 6], "shift": [1, 6], "themselv": [1, 6], "nest": [1, 6], "them": [1, 6], "much": [1, 6, 7], "distort": [1, 3, 6], "pitchshift": [1, 3, 5, 6], "passthrough": 1, "delay_and_pitch_shift": 1, "delay_second": [1, 6], "semiton": [1, 6], "7": [1, 2, 3, 6, 7], "3": [1, 3, 6, 7], "delay_longer_and_more_pitch_shift": 1, "5": [1, 6], "12": [1, 3, 6], "6": [1, 3, 5, 6, 7], "front": 1, "all": [1, 3, 4, 6, 7], "simultan": 1, "final": 1, "On": 1, "maco": [1, 3, 4, 6, 7], "window": [1, 3, 4, 6, 7], "support": [1, 3, 4, 6, 7], "stream": [1, 3, 6, 7], "audiostream": [1, 2, 3, 7], "real": [1, 3, 6, 7], "manipul": 1, "ad": [1, 3, 6, 7], "up": [1, 3, 5, 6], "input_device_nam": [1, 7], "apoge": 1, "jam": 1, "interfac": [1, 4, 6, 7], "output_device_nam": [1, 7], "macbook": 1, "pro": 1, "speaker": [1, 6, 7], "now": [1, 7], "out": [1, 3, 6, 7], "your": [1, 7], "press": [1, 6], "enter": [1, 7], "stop": [1, 7], "The": [1, 4, 5], "close": [1, 6, 7], "folder": 1, "repositori": [1, 4], "demo": 1, "colab": 1, "notebook": 1, "peter": 1, "sobot": 1, "europython": 1, "2022": 1, "interact": [1, 6, 7], "web": 1, "hug": 1, "face": 1, "space": 1, "gradio": 1, "via": [1, 3, 6, 7], "ak391": 1, "technic": [], "ye": 2, "pull": 5, "request": [], "98": [], "experiment": 3, "written": [4, 7], "c": [4, 6, 7], "stefanobazzi": [], "guitarboard": [], "project": 5, "exampl": [3, 4, 6, 7], "sounddevic": [], "librari": [3, 4, 5, 6, 7], "howev": [2, 6, 7], "coupl": [], "big": 2, "caveat": [], "talk": [], "context": 7, "languag": [], "garbag": [], "collect": [], "mean": [], "randomli": [], "paus": [], "interv": [], "clean": [], "unus": 7, "In": 7, "result": [6, 7], "random": [1, 7], "pop": [], "click": 6, "drop": [], "veri": [], "difficult": [], "prevent": 7, "global": [3, 7], "lock": [3, 7], "also": [3, 4, 5, 6, 7], "potenti": 7, "unbound": 7, "switch": [], "thread": [3, 4, 6, 7], "oper": [6, 7], "system": [6, 7], "separ": [], "high": [6, 7], "prioriti": [], "block": [6, 7], "caus": [6, 7], "stutter": [], "access": [6, 7], "mutat": [], "applic": 4, "larg": 7, "buffer": [6, 7], "size": [2, 4, 6, 7], "soft": 6, "requir": [3, 4, 6, 7], "case": [3, 4, 6, 7], "network": [], "data": [2, 3, 6, 7], "offlin": [], "built": [2, 3, 6], "function": [2, 4, 5, 6, 7], "possibl": [2, 3, 6, 7], "vari": [2, 6], "manual": [2, 3], "tqdm": 2, "step": 2, "would": [2, 4, 6, 7], "give": [2, 6], "smoother": [2, 6], "transit": 2, "expens": [2, 6, 7], "speed": [2, 3, 4, 5, 6, 7], "step_size_in_sampl": 2, "100": [2, 6, 7], "_n_": 2, "af": 2, "we": 2, "directli": [2, 6, 7], "save": [2, 6], "memori": [2, 3, 6, 7], "creat": [2, 3, 6, 7], "progress": 2, "bar": 2, "show": [2, 4, 6], "total": [2, 7], "pbar": 2, "rang": [2, 3, 6], "wet": [2, 6], "equal": [2, 3, 6, 7], "percentag": [2, 6], "track": [2, 6], "e": [2, 6, 7], "make": [2, 3, 7], "ramp": 2, "percentage_through_track": 2, "wet_level": [2, 6, 7], "updat": 2, "number": [2, 3, 5, 6, 7], "receiv": [2, 6, 7], "aren": 2, "cut": [2, 6], "off": [2, 6], "With": 2, "techniqu": [2, 6], "autom": 2, "usual": [2, 6, 7], "somewher": 2, "000": [2, 7], "2m": 2, "22m": 2, "44": [2, 6, 7], "1khz": [2, 6], "small": 2, "enough": [2, 7], "avoid": [2, 7], "hear": 2, "artifact": [2, 6], "slow": [2, 6], "down": [2, 6], "dramat": 2, "Not": [4, 6, 7], "yet": 2, "underli": [6, 7], "framework": [], "juce": [4, 5], "au": 7, "itself": [4, 6], "modifi": [], "either": [6, 7], "although": [6, 7], "effect": [3, 4, 6, 7], "popular": 3, "format": [3, 6, 7], "box": 3, "us": [3, 4, 5, 6, 7], "third": [3, 6], "parti": [3, 6], "plugin": [3, 5, 6, 7], "wa": [3, 6, 7], "": [1, 3, 4, 6, 7], "intellig": 3, "lab": 3, "enabl": [3, 6], "studio": 3, "qualiti": [3, 6, 7], "within": [3, 4, 6], "tensorflow": [1, 3], "augment": 3, "improv": 3, "machin": [3, 4], "learn": [3, 4], "model": [1, 3, 6], "help": 3, "power": [3, 6], "ai": 3, "dj": 3, "content": [3, 7], "creation": 3, "digit": [3, 4, 6], "workstat": 3, "util": [3, 6], "aiff": [3, 7], "flac": [3, 7], "mp3": [3, 6, 7], "ogg": [3, 7], "platform": [3, 4, 6, 7], "depend": [3, 4, 6, 7], "addit": [3, 4, 6, 7], "aac": [3, 7], "ac3": [3, 7], "wma": [3, 7], "fly": [3, 7], "usag": [3, 6], "live": [3, 7], "basic": [3, 6, 7], "transform": [3, 6], "guitar": [3, 6], "style": 3, "clip": [3, 6], "loud": [3, 6], "dynam": [3, 6], "filter": [3, 6], "highpassfilt": [3, 6], "lowpassfilt": [3, 6], "spatial": 3, "lossi": [3, 6], "compress": [3, 6, 7], "gsmfullratecompressor": [3, 5, 6], "mp3compressor": [3, 5, 6], "reduct": [3, 6], "bitcrush": [3, 6], "linux": [3, 4, 6, 7], "strong": 3, "safeti": [3, 7], "guarante": [3, 7], "releas": [3, 6, 7], "gil": [3, 7], "cpu": [3, 6], "core": [3, 5], "No": [3, 6], "need": [3, 4, 7], "multiprocess": 3, "onli": [3, 6, 7], "300x": 3, "faster": 3, "than": [3, 4, 6, 7], "pysox": 3, "singl": [3, 6], "2": [3, 6, 7], "5x": 3, "soxbind": 3, "icorv": 3, "4x": 3, "librosa": 3, "tf": 3, "pipelin": 3, "avail": [3, 4, 6, 7], "pypi": 3, "wheel": [3, 4], "pip": 3, "That": 3, "new": [3, 7], "follow": [3, 4, 5, 6, 7], "md": 3, "robust": 3, "guid": 3, "thoroughli": 3, "8": [3, 6], "9": [3, 6], "11": 3, "heavili": 3, "product": 3, "manylinux": 3, "x86_64": 3, "intel": 3, "amd": 3, "aarch64": 3, "arm": 3, "appl": [3, 6], "silicon": 3, "rel": 3, "modern": 3, "glibc": 3, "27": 3, "both": [2, 3, 6], "wide": [3, 6], "api": [3, 4], "quick": 3, "start": [3, 6, 7], "parallel": [3, 6], "chain": [3, 6, 7], "run": [3, 6, 7], "frequent": [3, 6], "question": 3, "doe": [3, 4, 6, 7], "over": [3, 6], "instrument": [3, 6], "accept": [3, 6, 7], "midi": [1, 3, 6], "design": [3, 6], "consider": 3, "licens": [3, 4], "cite": [], "repo": 3, "wrapper": [4, 6], "sourc": [4, 7], "cross": [4, 6], "develop": 4, "pybind11": 4, "bind": 4, "goal": [4, 7], "expos": [4, 6], "signal": [4, 6], "idiomat": 4, "wai": [4, 7], "provid": [4, 6, 7], "raw": [4, 6, 7], "perform": [4, 7], "dsp": 4, "hide": 4, "complex": 4, "programm": 4, "intuit": 4, "varieti": 4, "reason": 4, "wider": 4, "compat": [4, 5, 6], "notabl": 4, "rare": [4, 6], "fewer": [4, 6], "simpler": 4, "remov": [4, 6], "copi": 4, "associ": 4, "resourc": [4, 6, 7], "option": [4, 6, 7], "might": 4, "meant": 4, "music": 4, "appropri": [4, 6], "vice": 4, "versa": 4, "stabil": 4, "environ": 4, "where": [1, 4, 6, 7], "implement": [4, 6, 7], "logic": 4, "portabl": 4, "safe": [4, 7], "constraint": 4, "should": [4, 6, 7], "consid": [4, 6, 7], "gplv3": [4, 5], "static": [4, 5, 6, 7], "link": 4, "vendor": 4, "git": 4, "submodul": 4, "binari": [4, 6, 7], "distribut": 4, "Will": [4, 7], "increas": [4, 6, 7], "amount": [4, 6, 7], "compil": [1, 4, 5], "runtim": 4, "cannot": [2, 4, 6, 7], "user": 4, "instal": [4, 6, 7], "softwar": [3, 4], "complic": 4, "simplic": 4, "packag": [4, 6], "To": [6, 7], "academ": [], "its": [6, 7], "entri": [], "zenodo": [], "imag": [], "org": [], "badg": [], "doi": [], "5281": [], "7817838": [], "svg": [], "target": [6, 7], "alt": [], "bibtex": [], "tex": [], "sobot_peter_2023_7817838": [], "author": [], "titl": [], "modul": [6, 7], "class": [2, 6, 7], "subclass": 6, "each": [6, 7], "appli": [1, 6], "name": [6, 7], "after": [6, 7], "concept": 6, "musician": 6, "variou": 6, "pedal": 6, "togeth": 6, "complet": [6, 7], "control": 6, "main": 6, "my_pedalboard": 6, "treat": 6, "output_audio": 6, "input_audio": 6, "input_audio_sampler": 6, "zero": [6, 7], "composit": 6, "type": [6, 7], "none": [6, 7], "A": [6, 7], "seri": [6, 7], "act": 6, "come": [6, 7], "method": [6, 7], "alias": 6, "__call__": 6, "entir": [6, 7], "input_arrai": 6, "numpi": [6, 7], "ndarrai": [6, 7], "sample_r": [1, 6, 7], "float": [6, 7], "buffer_s": [6, 7], "8192": 6, "bool": [6, 7], "true": [6, 7], "dtype": [6, 7], "float32": [1, 6, 7], "alia": 6, "end": [6, 7], "insert": 6, "index": 6, "specifi": [6, 7], "properti": [6, 7], "is_effect": 6, "iff": [6, 7], "is_instru": 6, "32": [6, 7], "bit": [6, 7], "64": [3, 6], "point": [6, 7], "return": [6, 7], "arrai": [6, 7], "were": 6, "expect": [6, 7], "insid": 6, "remain": [6, 7], "anoth": 6, "datatyp": [6, 7], "convert": [6, 7], "argument": [6, 7], "higher": 6, "flag": 6, "determin": [6, 7], "befor": [6, 7], "begin": [6, 7], "previou": 6, "my_plugin": 6, "invok": 6, "valu": [6, 7], "store": [6, 7], "g": 6, "line": [6, 7], "lfo": 6, "etc": [6, 7], "unchang": 6, "path_to_plugin_fil": 6, "str": [6, 7], "parameter_valu": 6, "dict": 6, "union": [6, 7], "plugin_nam": 6, "externalplugin": 6, "two": 6, "bundl": [5, 6], "dictionari": 6, "initi": [6, 7], "match": [6, 7], "report": 6, "normal": 6, "string": [6, 7], "identifi": 6, "These": 6, "multi": [6, 7], "except": [6, 7], "thrown": [6, 7], "vst3plugin": [2, 6], "audiounitplugin": [2, 6], "throw": [6, 7], "importerror": 6, "found": [6, 7], "runtimeerror": [6, 7], "audioprocessorparamet": 6, "parameter_nam": 6, "search_step": 6, "1000": 6, "differ": [6, 7], "implicit": 6, "my": 6, "cool": 6, "delay_time_m": 6, "foobar": 6, "attribut": [6, 7], "400": 6, "tri": 6, "guess": 6, "valid": 6, "instanti": 6, "alwai": [6, 7], "accur": [6, 7], "had": 6, "raw_valu": 6, "bound": [6, 7], "label": 6, "hz": [6, 7], "db": 6, "fail": 6, "midi_messag": 6, "durat": [1, 6, 7], "messag": [1, 2, 6], "sequenc": [], "must": [6, 7], "byte": [6, 7], "mido": [1, 6], "tupl": 6, "look": 6, "midi_byt": 6, "timestamp_in_second": 6, "worth": 6, "sent": 6, "timestamp": 6, "indic": [6, 7], "whose": 6, "greater": 6, "ignor": 6, "held": [], "decai": [], "non": [6, 7], "unavail": 6, "loadabl": 6, "plug": [6, 7], "Ins": 6, "compon": 6, "helper": [], "overload": [], "rais": [6, 7], "get_plugin_names_for_fil": 6, "filenam": [6, 7], "given": [6, 7], "scan": [6, 7], "present": [6, 7], "what": 6, "show_editor": 6, "ui": 6, "nativ": [6, 7], "keyboardinterrupt": [6, 7], "bit_depth": [6, 7], "reduc": 6, "depth": [6, 7], "lo": 6, "fi": 6, "vertic": 6, "resolut": 6, "uniqu": 6, "repres": [6, 7], "horizont": 6, "per": [6, 7], "quantiz": 6, "integ": [6, 7], "decim": 6, "onto": 6, "pedalboard_n": 6, "rate_hz": 6, "centre_delay_m": 6, "feedback": 6, "frequenc": 6, "respons": 6, "centr": 6, "get": 6, "classic": 6, "m": 6, "low": 6, "feeback": 6, "volum": 6, "flanger": 6, "lower": 6, "lot": 6, "vibrato": 6, "oscil": 6, "hertz": 6, "hard": [6, 7], "threshold": 6, "decibel": 6, "algorithm": [6, 7], "introduc": [6, 7], "nois": [1, 6], "gsmcompressor": 6, "impulse_response_filenam": 6, "suitabl": 6, "thing": 6, "simul": 6, "dry": 6, "drive_db": 6, "linear": [6, 7], "tanh": 6, "hyperbol": 6, "tangent": 6, "waveshap": 6, "harmon": 6, "pleas": 6, "produc": [6, 7], "roughli": 6, "equival": 6, "def": 6, "x": 6, "db_to_gain": 6, "windowedsinc": [6, 7], "degrad": 6, "gsm": 6, "full": 6, "emul": 6, "2g": 6, "cellular": 6, "phone": 6, "connect": 6, "fix": 6, "8khz": 6, "codec": [6, 7], "decreas": [6, 7], "amplifi": 6, "attenu": 6, "think": 6, "highshelffilt": 6, "cutoff_frequency_hz": 6, "440": 6, "q": 6, "7071067690849304": 6, "shelf": 6, "variabl": [6, 7], "abov": [6, 7], "cutoff": 6, "boost": 6, "first": [6, 7], "order": 6, "roll": 6, "6db": 6, "octav": 6, "3db": 6, "frac": 6, "sqrt": 6, "express": 6, "factor": 6, "further": [6, 7], "iirfilt": 6, "abstract": 6, "kind": 6, "infinit": 6, "impuls": 6, "iir": 6, "lowshelffilt": 6, "peakfilt": 6, "invert": 6, "flip": 6, "polar": 6, "audibl": 6, "own": [5, 6], "take": 6, "mathemat": 6, "ident": [6, 7], "cancel": 6, "origin": [6, 7], "lpf12": 6, "200": 6, "reson": 6, "drive": 6, "base": [6, 7], "moog": 6, "synthes": 6, "ladder": 6, "invent": 6, "dr": 6, "bob": 6, "1968": 6, "below": [6, 7], "side": [6, 7], "peak": 6, "architectur": 6, "bpf12": 6, "band": [5, 6], "lpf24": 6, "24": 6, "hpf24": 6, "4": [2, 6], "bpf24": 6, "simpl": 6, "standard": 6, "featur": 6, "clipper": 6, "707x": 6, "vbr_qualiti": 6, "lame": [5, 6, 7], "encod": [6, 7], "current": [6, 7], "vbr": 6, "better": 6, "32khz": 6, "48khz": 6, "unsupport": [6, 7], "noiseg": 6, "gate": 6, "attack": 6, "expand": 6, "notch": 6, "centre_frequency_hz": 6, "1300": 6, "stage": 6, "sweep": 6, "magnitud": [6, 7], "affect": 6, "chri": 6, "cannam": 6, "wonder": 6, "rubber": [5, 6], "stretch": 6, "gener": [5, 6], "plugincontain": 6, "intend": 6, "direct": [6, 7], "target_sample_r": [6, 7], "8000": 6, "downsampl": 6, "upsampl": 6, "zeroorderhold": 6, "lowest": 6, "fastest": [6, 7], "slightli": 6, "less": [6, 7], "noisi": 6, "simplest": 6, "catmullrom": 6, "moder": 6, "good": 6, "fast": 6, "lagrang": 6, "highest": 6, "slowest": [6, 7], "still": [6, 7], "mere": 6, "damp": 6, "33": 6, "dry_level": 6, "width": 6, "freeze_mod": 6, "stereo": [6, 7], "tune": 6, "freeverb": 6, "ccrma": 6, "stanford": 6, "edu": 6, "jo": 6, "pasp": 6, "steinberg": [5, 6], "gmbh": [5, 6], "build": 6, "arg0": [6, 7], "load_preset": 6, "preset_file_path": 6, "preset": 6, "vstpreset": 6, "decod": [6, 7], "handl": 7, "behind": 7, "scene": 7, "my_filenam": 7, "441_000": 7, "necessari": 7, "accomplish": 7, "readableaudiofil": 7, "find": [6, 7], "yourself": 7, "writeableaudiofil": 7, "resampledreadableaudiofil": 7, "probabl": 7, "cover": 7, "file_lik": 7, "binaryio": 7, "liter": 7, "16": 7, "readabl": 7, "writeabl": 7, "default": [6, 7], "unlik": 7, "typic": 7, "trail": 7, "b": 7, "redund": 7, "exist": 7, "seekabl": 7, "stringio": 7, "my_fil": 7, "first_ten_second": 7, "ogg_buff": 7, "bytesio": 7, "get_audio_buff": 7, "22_050": 7, "white_nois": 7, "np": [1, 7], "rand": [1, 7], "wav_buff": 7, "getvalu": 7, "someth": [6, 7], "160": 7, "kilobit": 7, "re": 7, "four": 7, "1024": 7, "constructor": 7, "actual": 7, "those": [6, 7], "512": 7, "allow_feedback": 7, "devic": 7, "microphon": 7, "headphon": 7, "manag": 7, "delet": 7, "del": 7, "synchron": 7, "ctrl": [6, 7], "under": [5, 7], "hood": 7, "concern": 7, "never": 7, "left": 7, "dangl": 7, "background": [6, 7], "__enter__": 7, "nasti": 7, "longer": 7, "reachabl": 7, "scope": 7, "continu": 7, "plai": 7, "forev": 7, "won": 7, "exit": 7, "easier": 7, "cleanup": 7, "v0": [6, 7], "immedi": 7, "send": 7, "__exit__": 7, "arg1": 7, "arg2": 7, "onc": [6, 7], "otherwis": 7, "wrap": 7, "vorbi": 7, "3g2": 7, "3gp": 7, "adt": 7, "aif": 7, "aifc": 7, "amr": 7, "bwf": 7, "caf": 7, "ec3": 7, "latm": 7, "loa": 7, "m4a": 7, "m4b": 7, "m4r": 7, "mov": 7, "mp1": 7, "mp2": 7, "mp4": 7, "mpa": 7, "mpeg": 7, "qt": 7, "sd2": 7, "snd": 7, "w64": 7, "xhe": 7, "get_supported_read_format": 7, "extens": 7, "certain": 7, "want": [1, 7], "too": 7, "num_fram": 7, "channel": 7, "posit": 7, "decept": 7, "hour": 7, "long": 7, "hand": 7, "megabyt": 7, "decompress": 7, "nearli": 7, "gigabyt": 7, "debug": 7, "problem": 7, "dimension": 7, "length": [6, 7], "fill": 7, "exact_duration_known": 7, "situat": [6, 7], "occur": 7, "minimum": 7, "0f": 7, "maximum": 7, "read_raw": 7, "int8": 7, "int16": 7, "int32": 7, "constant": 7, "seek": 7, "locat": 7, "futur": 7, "pointer": 7, "usabl": 7, "divid": 7, "overestim": 7, "detail": [2, 7], "exact": 7, "estim": 7, "bitrat": 7, "ever": 7, "file_dtyp": 7, "regardless": 7, "441": 7, "discrep": 7, "due": 7, "fact": 7, "header": [6, 7], "xing": 7, "info": 7, "finish": 7, "forc": 7, "pars": 7, "correct": 7, "60": [1, 6, 7], "assert": [6, 7], "num_sampl": 7, "behaviour": 7, "later": 7, "prior": 7, "version": [2, 6, 7], "lack": 7, "audio_fil": 7, "resampling_qu": 7, "22050": 7, "fraction": 7, "streamresampl": 7, "obtain": 7, "benefit": 7, "respect": 7, "push": 7, "optim": 7, "retain": 7, "accuraci": 7, "22": 7, "050": 7, "source_sample_r": 7, "flush": 7, "input_lat": 7, "suppli": 7, "get_supported_write_format": 7, "filename_or_file_lik": 7, "assum": 7, "level": 7, "numer": 7, "128": 7, "256": 7, "advanc": 7, "v2": 7, "best": 7, "happen": [6, 7], "reliabl": 7, "float64": [6, 7], "typeerror": 7, "far": 7, "increment": 7, "kbp": 7, "v9": 7, "arg": [], "kwarg": [], "self": [], "kwd": [], "extern": 6, "part": [1, 6, 7], "conveni": [1, 6, 7], "note_on": [1, 6], "note_off": [1, 6], "magical8bitplug2": 1, "As": 2, "amd64": 3, "x86": 3, "contribut": [], "copyright": 5, "2021": 5, "2023": [], "ab": 5, "gnu": 5, "public": 5, "v3": 5, "carri": 5, "dual": 5, "commerci": 5, "sdk": 5, "media": 5, "technologi": 5, "gplv2": 5, "newer": 5, "libmp3lam": 5, "lgplv2": 5, "upgrad": 5, "inclus": 5, "permit": 5, "libgsm": 5, "isc": 5, "regist": 5, "trademark": 5, "e4m3t": [], "precis": 6, "expon": [], "e4m3": [], "from_char": [], "mantissa": [], "sign": [], "setview": [], "unord": [], "map": 1, "search": [], "member": [], "euclidean": [], "cosin": [], "innerproduct": [], "storagedatatyp": [], "vector": [], "float8": [], "448": [], "inspir": [], "paper": [], "fp8": [], "deep": [], "micikeviciu": [], "et": [], "al": [], "arxiv": [], "2209": [], "05433": [], "musllinux": 3, "initialization_timeout": 6, "spend": 6, "asynchron": 6, "startup": 6, "larger": 6, "properli": 6, "01": 7, "00": 7, "time_stretch": [5, 6], "stretch_factor": 6, "pitch_shift_in_semiton": 6, "shorten": 6, "doubl": 6, "_speed_": [], "halv": 6, "_length_": [], "fo": [], "dure": [6, 7], "independ": 6, "worri": 6, "thei": 6, "transient_mod": 6, "crisp": 6, "transient_detector": 6, "compound": 6, "retain_phase_continu": 6, "use_long_fft_window": 6, "use_time_domain_smooth": 6, "preserve_form": 6, "behavior": 6, "stretcher": 6, "transient": 6, "percuss": 6, "smooth": 6, "phase": 6, "adjac": 6, "bin": 6, "kept": 6, "similar": 6, "softer": 6, "phasier": 6, "fourier": 6, "clariti": 6, "crisper": 6, "sharp": 6, "substanti": 6, "profil": 6, "formant": 6, "voic": [3, 6], "grain": 6, "high_qual": 6, "translat": 3, "close_ev": 6, "event": 6, "editor": 6, "programmat": 6, "button": 6, "keyboard": 6, "shortcut": 6, "close_window_ev": 6, "other_thread": 6, "should_close_window_ev": [], "should_close_window": 6, "sr": [1, 7], "48000": 1, "welcom": [], "whatev": 1, "here": 1, "dataset": 1, "train": 1, "somehow": 1, "from_tensor_slic": 1, "lambda": 1, "numpy_funct": 1, "dummi": 1, "ml": 1, "kera": 1, "sequenti": 1, "layer": 1, "inputlay": 1, "input_shap": 1, "dens": 1, "loss": 1, "mse": 1, "fit": 1, "batch": 1, "epoch": 1, "hang": 6, "incorrect": 6, "outright": 6, "incompat": 6, "externalpluginreloadtyp": [], "unknown": [], "reinstanti": [], "clearsaudioonreset": [], "correctli": [], "persistsaudioonreset": [], "memoryview": 7, "py": [], "effici": 7, "consum": 7, "arbitrari": 7, "recommend": 7, "buf": 7, "mp3_buffer": 7, "flac_buff": 7, "categori": 6, "fall": 6, "descriptive_nam": 6, "descript": 6, "field": 6, "altern": 6, "has_shared_contain": 6, "again": 6, "manufacturer_nam": 6, "manufactur": 6, "auv3": 6, "appex": 6, "2024": 5, "raw_stat": 6, "plistlib": 6, "invalid": 6, "xml": 6, "prefix": 6, "suffix": 6, "null": 6, "squar": [], "abl": 7, "infer": 7, "dimens": 7, "correspond": 7, "layout": 7, "previous": [], "cach": 7, "writableaudiofil": 7, "recent": 7, "disambigu": 7, "But": 7, "And": 7, "hint": 7, "noth": 7, "anyth": 7, "slower": 6, "024": 6, "23": 6, "millisecond": 6, "fftw": 5}, "objects": {"": [[6, 0, 0, "-", "pedalboard"]], "pedalboard": [[6, 1, 1, "", "AudioProcessorParameter"], [6, 1, 1, "", "AudioUnitPlugin"], [6, 1, 1, "", "Bitcrush"], [6, 1, 1, "", "Chain"], [6, 1, 1, "", "Chorus"], [6, 1, 1, "", "Clipping"], [6, 1, 1, "", "Compressor"], [6, 1, 1, "", "Convolution"], [6, 1, 1, "", "Delay"], [6, 1, 1, "", "Distortion"], [6, 1, 1, "", "ExternalPlugin"], [6, 1, 1, "", "GSMFullRateCompressor"], [6, 1, 1, "", "Gain"], [6, 1, 1, "", "HighShelfFilter"], [6, 1, 1, "", "HighpassFilter"], [6, 1, 1, "", "IIRFilter"], [6, 1, 1, "", "Invert"], [6, 1, 1, "", "LadderFilter"], [6, 1, 1, "", "Limiter"], [6, 1, 1, "", "LowShelfFilter"], [6, 1, 1, "", "LowpassFilter"], [6, 1, 1, "", "MP3Compressor"], [6, 1, 1, "", "Mix"], [6, 1, 1, "", "NoiseGate"], [6, 1, 1, "", "PeakFilter"], [6, 1, 1, "", "Pedalboard"], [6, 1, 1, "", "Phaser"], [6, 1, 1, "", "PitchShift"], [6, 1, 1, "", "Plugin"], [6, 1, 1, "", "PluginContainer"], [6, 1, 1, "", "Resample"], [6, 1, 1, "", "Reverb"], [6, 1, 1, "", "VST3Plugin"], [7, 0, 0, "-", "io"], [6, 5, 1, "", "load_plugin"], [6, 5, 1, "", "time_stretch"]], "pedalboard.AudioProcessorParameter": [[6, 2, 1, "", "label"], [6, 2, 1, "", "units"]], "pedalboard.AudioUnitPlugin": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "category"], [6, 2, 1, "", "descriptive_name"], [6, 3, 1, "", "get_plugin_names_for_file"], [6, 2, 1, "", "has_shared_container"], [6, 2, 1, "", "identifier"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 2, 1, "", "manufacturer_name"], [6, 2, 1, "", "name"], [6, 3, 1, "", "process"], [6, 2, 1, "", "raw_state"], [6, 3, 1, "", "reset"], [6, 3, 1, "", "show_editor"], [6, 2, 1, "", "version"]], "pedalboard.Bitcrush": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "bit_depth"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.Chain": [[6, 3, 1, "", "__call__"], [6, 3, 1, "", "append"], [6, 3, 1, "", "insert"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "remove"], [6, 3, 1, "", "reset"]], "pedalboard.Chorus": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 2, 1, "", "rate_hz"], [6, 3, 1, "", "reset"]], "pedalboard.Clipping": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.Compressor": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.Convolution": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.Delay": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.Distortion": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.ExternalPlugin": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.GSMFullRateCompressor": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.Gain": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.HighShelfFilter": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.HighpassFilter": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.IIRFilter": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.Invert": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.LadderFilter": [[6, 1, 1, "", "Mode"], [6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.LadderFilter.Mode": [[6, 4, 1, "", "BPF12"], [6, 4, 1, "", "BPF24"], [6, 4, 1, "", "HPF12"], [6, 4, 1, "", "HPF24"], [6, 4, 1, "", "LPF12"], [6, 4, 1, "", "LPF24"]], "pedalboard.Limiter": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.LowShelfFilter": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.LowpassFilter": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.MP3Compressor": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.Mix": [[6, 3, 1, "", "__call__"], [6, 3, 1, "", "append"], [6, 3, 1, "", "insert"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "remove"], [6, 3, 1, "", "reset"]], "pedalboard.NoiseGate": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.PeakFilter": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.Pedalboard": [[6, 3, 1, "", "__call__"], [6, 3, 1, "", "append"], [6, 3, 1, "", "insert"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "remove"], [6, 3, 1, "", "reset"]], "pedalboard.Phaser": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.PitchShift": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.Plugin": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.PluginContainer": [[6, 3, 1, "", "__call__"], [6, 3, 1, "", "append"], [6, 3, 1, "", "insert"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "remove"], [6, 3, 1, "", "reset"]], "pedalboard.Resample": [[6, 1, 1, "", "Quality"], [6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 2, 1, "", "quality"], [6, 3, 1, "", "reset"], [6, 2, 1, "", "target_sample_rate"]], "pedalboard.Resample.Quality": [[6, 4, 1, "", "CatmullRom"], [6, 4, 1, "", "Lagrange"], [6, 4, 1, "", "Linear"], [6, 4, 1, "", "WindowedSinc"], [6, 4, 1, "", "ZeroOrderHold"]], "pedalboard.Reverb": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.VST3Plugin": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "category"], [6, 2, 1, "", "descriptive_name"], [6, 3, 1, "", "get_plugin_names_for_file"], [6, 2, 1, "", "has_shared_container"], [6, 2, 1, "", "identifier"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "load_preset"], [6, 2, 1, "", "manufacturer_name"], [6, 2, 1, "", "name"], [6, 3, 1, "", "process"], [6, 2, 1, "", "raw_state"], [6, 3, 1, "", "reset"], [6, 3, 1, "", "show_editor"], [6, 2, 1, "", "version"]], "pedalboard.io": [[7, 1, 1, "", "AudioFile"], [7, 1, 1, "", "AudioStream"], [7, 1, 1, "", "ReadableAudioFile"], [7, 1, 1, "", "ResampledReadableAudioFile"], [7, 1, 1, "", "StreamResampler"], [7, 1, 1, "", "WriteableAudioFile"]], "pedalboard.io.AudioFile": [[7, 3, 1, "", "encode"]], "pedalboard.io.AudioStream": [[7, 3, 1, "", "__enter__"], [7, 3, 1, "", "__exit__"], [7, 2, 1, "", "plugins"], [7, 3, 1, "", "run"], [7, 2, 1, "", "running"]], "pedalboard.io.ReadableAudioFile": [[7, 3, 1, "", "__enter__"], [7, 3, 1, "", "__exit__"], [7, 3, 1, "", "close"], [7, 2, 1, "", "closed"], [7, 2, 1, "", "duration"], [7, 2, 1, "", "exact_duration_known"], [7, 2, 1, "", "file_dtype"], [7, 2, 1, "", "frames"], [7, 2, 1, "", "name"], [7, 2, 1, "", "num_channels"], [7, 3, 1, "", "read"], [7, 3, 1, "", "read_raw"], [7, 3, 1, "", "resampled_to"], [7, 2, 1, "", "samplerate"], [7, 3, 1, "", "seek"], [7, 3, 1, "", "seekable"], [7, 3, 1, "", "tell"]], "pedalboard.io.ResampledReadableAudioFile": [[7, 3, 1, "", "__enter__"], [7, 3, 1, "", "__exit__"], [7, 3, 1, "", "close"], [7, 2, 1, "", "closed"], [7, 2, 1, "", "duration"], [7, 2, 1, "", "exact_duration_known"], [7, 2, 1, "", "file_dtype"], [7, 2, 1, "", "frames"], [7, 2, 1, "", "name"], [7, 2, 1, "", "num_channels"], [7, 3, 1, "", "read"], [7, 2, 1, "", "resampling_quality"], [7, 2, 1, "", "samplerate"], [7, 3, 1, "", "seek"], [7, 3, 1, "", "seekable"], [7, 3, 1, "", "tell"]], "pedalboard.io.StreamResampler": [[7, 2, 1, "", "input_latency"], [7, 2, 1, "", "num_channels"], [7, 3, 1, "", "process"], [7, 2, 1, "", "quality"], [7, 3, 1, "", "reset"], [7, 2, 1, "", "source_sample_rate"], [7, 2, 1, "", "target_sample_rate"]], "pedalboard.io.WriteableAudioFile": [[7, 3, 1, "", "close"], [7, 2, 1, "", "closed"], [7, 2, 1, "", "file_dtype"], [7, 3, 1, "", "flush"], [7, 2, 1, "", "frames"], [7, 2, 1, "", "num_channels"], [7, 2, 1, "", "quality"], [7, 2, 1, "", "samplerate"], [7, 3, 1, "", "tell"], [7, 3, 1, "", "write"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:property", "3": "py:method", "4": "py:attribute", "5": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "property", "Python property"], "3": ["py", "method", "Python method"], "4": ["py", "attribute", "Python attribute"], "5": ["py", "function", "Python function"]}, "titleterms": {"plugin": [0, 1, 2, 4], "compat": [0, 3], "exampl": 1, "quick": 1, "start": 1, "make": 1, "guitar": 1, "style": 1, "pedalboard": [1, 2, 4, 6, 7], "us": [1, 2], "vst3": 1, "audio": [1, 2], "unit": 1, "creat": 1, "parallel": 1, "effect": [1, 2], "chain": 1, "run": 1, "live": [1, 2], "frequent": 2, "ask": 2, "question": 2, "can": 2, "real": 2, "time": 2, "doe": 2, "support": 2, "chang": 2, "": 2, "paramet": 2, "over": 2, "vst": 2, "instrument": [1, 2], "instead": 2, "accept": 2, "midi": 2, "featur": 3, "instal": 3, "refer": 3, "document": 3, "intern": 4, "ad": 4, "new": 4, "built": 4, "design": 4, "consider": 4, "licens": 5, "cite": [], "The": [6, 7], "api": [6, 7], "io": 7, "process": [], "other": [], "argument": [], "contribut": [], "voyag": [], "tf": 1, "data": 1, "pipelin": 1}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx": 57}, "alltitles": {"Plugin Compatibility": [[0, "plugin-compatibility"]], "Examples": [[1, "examples"]], "Quick start": [[1, "quick-start"]], "Making a guitar-style pedalboard": [[1, "making-a-guitar-style-pedalboard"]], "Using VST3\u00ae or Audio Unit instrument and effect plugins": [[1, "using-vst3-or-audio-unit-instrument-and-effect-plugins"]], "Creating parallel effects chains": [[1, "creating-parallel-effects-chains"]], "Running Pedalboard on Live Audio": [[1, "running-pedalboard-on-live-audio"]], "Using Pedalboard in tf.data Pipelines": [[1, "using-pedalboard-in-tf-data-pipelines"]], "Frequently Asked Questions": [[2, "frequently-asked-questions"]], "Can Pedalboard be used with live (real-time) audio?": [[2, "can-pedalboard-be-used-with-live-real-time-audio"]], "Does Pedalboard support changing a plugin\u2019s parameters over time?": [[2, "does-pedalboard-support-changing-a-plugin-s-parameters-over-time"]], "Can Pedalboard be used with VST instruments, instead of effects?": [[2, "can-pedalboard-be-used-with-vst-instruments-instead-of-effects"]], "Can Pedalboard plugins accept MIDI?": [[2, "can-pedalboard-plugins-accept-midi"]], "Features": [[3, "features"]], "Installation": [[3, "installation"]], "Compatibility": [[3, "compatibility"]], "Reference": [[3, "reference"]], "Documentation": [[3, "documentation"]], "Pedalboard Internals": [[4, "pedalboard-internals"]], "Adding new built-in Pedalboard plugins": [[4, "adding-new-built-in-pedalboard-plugins"]], "Design considerations": [[4, "design-considerations"]], "License": [[5, "license"]], "The pedalboard API": [[6, "the-pedalboard-api"]], "The pedalboard.io API": [[7, "the-pedalboard-io-api"]]}, "indexentries": {"audioprocessorparameter (class in pedalboard)": [[6, "pedalboard.AudioProcessorParameter"]], "audiounitplugin (class in pedalboard)": [[6, "pedalboard.AudioUnitPlugin"]], "bpf12 (pedalboard.ladderfilter.mode attribute)": [[6, "pedalboard.LadderFilter.Mode.BPF12"]], "bpf24 (pedalboard.ladderfilter.mode attribute)": [[6, "pedalboard.LadderFilter.Mode.BPF24"]], "bitcrush (class in pedalboard)": [[6, "pedalboard.Bitcrush"]], "catmullrom (pedalboard.resample.quality attribute)": [[6, "pedalboard.Resample.Quality.CatmullRom"]], "chain (class in pedalboard)": [[6, "pedalboard.Chain"]], "chorus (class in pedalboard)": [[6, "pedalboard.Chorus"]], "clipping (class in pedalboard)": [[6, "pedalboard.Clipping"]], "compressor (class in pedalboard)": [[6, "pedalboard.Compressor"]], "convolution (class in pedalboard)": [[6, "pedalboard.Convolution"]], "delay (class in pedalboard)": [[6, "pedalboard.Delay"]], "distortion (class in pedalboard)": [[6, "pedalboard.Distortion"]], "externalplugin (class in pedalboard)": [[6, "pedalboard.ExternalPlugin"]], "gsmfullratecompressor (class in pedalboard)": [[6, "pedalboard.GSMFullRateCompressor"]], "gain (class in pedalboard)": [[6, "pedalboard.Gain"]], "hpf12 (pedalboard.ladderfilter.mode attribute)": [[6, "pedalboard.LadderFilter.Mode.HPF12"]], "hpf24 (pedalboard.ladderfilter.mode attribute)": [[6, "pedalboard.LadderFilter.Mode.HPF24"]], "highshelffilter (class in pedalboard)": [[6, "pedalboard.HighShelfFilter"]], "highpassfilter (class in pedalboard)": [[6, "pedalboard.HighpassFilter"]], "iirfilter (class in pedalboard)": [[6, "pedalboard.IIRFilter"]], "invert (class in pedalboard)": [[6, "pedalboard.Invert"]], "lpf12 (pedalboard.ladderfilter.mode attribute)": [[6, "pedalboard.LadderFilter.Mode.LPF12"]], "lpf24 (pedalboard.ladderfilter.mode attribute)": [[6, "pedalboard.LadderFilter.Mode.LPF24"]], "ladderfilter (class in pedalboard)": [[6, "pedalboard.LadderFilter"]], "ladderfilter.mode (class in pedalboard)": [[6, "pedalboard.LadderFilter.Mode"]], "lagrange (pedalboard.resample.quality attribute)": [[6, "pedalboard.Resample.Quality.Lagrange"]], "limiter (class in pedalboard)": [[6, "pedalboard.Limiter"]], "linear (pedalboard.resample.quality attribute)": [[6, "pedalboard.Resample.Quality.Linear"]], "lowshelffilter (class in pedalboard)": [[6, "pedalboard.LowShelfFilter"]], "lowpassfilter (class in pedalboard)": [[6, "pedalboard.LowpassFilter"]], "mp3compressor (class in pedalboard)": [[6, "pedalboard.MP3Compressor"]], "mix (class in pedalboard)": [[6, "pedalboard.Mix"]], "noisegate (class in pedalboard)": [[6, "pedalboard.NoiseGate"]], "peakfilter (class in pedalboard)": [[6, "pedalboard.PeakFilter"]], "pedalboard (class in pedalboard)": [[6, "pedalboard.Pedalboard"]], "phaser (class in pedalboard)": [[6, "pedalboard.Phaser"]], "pitchshift (class in pedalboard)": [[6, "pedalboard.PitchShift"]], "plugin (class in pedalboard)": [[6, "pedalboard.Plugin"]], "plugincontainer (class in pedalboard)": [[6, "pedalboard.PluginContainer"]], "resample (class in pedalboard)": [[6, "pedalboard.Resample"]], "resample.quality (class in pedalboard)": [[6, "pedalboard.Resample.Quality"]], "reverb (class in pedalboard)": [[6, "pedalboard.Reverb"]], "vst3plugin (class in pedalboard)": [[6, "pedalboard.VST3Plugin"]], "windowedsinc (pedalboard.resample.quality attribute)": [[6, "pedalboard.Resample.Quality.WindowedSinc"]], "zeroorderhold (pedalboard.resample.quality attribute)": [[6, "pedalboard.Resample.Quality.ZeroOrderHold"]], "__call__() (pedalboard.audiounitplugin method)": [[6, "pedalboard.AudioUnitPlugin.__call__"]], "__call__() (pedalboard.bitcrush method)": [[6, "pedalboard.Bitcrush.__call__"]], "__call__() (pedalboard.chain method)": [[6, "pedalboard.Chain.__call__"]], "__call__() (pedalboard.chorus method)": [[6, "pedalboard.Chorus.__call__"]], "__call__() (pedalboard.clipping method)": [[6, "pedalboard.Clipping.__call__"]], "__call__() (pedalboard.compressor method)": [[6, "pedalboard.Compressor.__call__"]], "__call__() (pedalboard.convolution method)": [[6, "pedalboard.Convolution.__call__"]], "__call__() (pedalboard.delay method)": [[6, "pedalboard.Delay.__call__"]], "__call__() (pedalboard.distortion method)": [[6, "pedalboard.Distortion.__call__"]], "__call__() (pedalboard.externalplugin method)": [[6, "pedalboard.ExternalPlugin.__call__"]], "__call__() (pedalboard.gsmfullratecompressor method)": [[6, "pedalboard.GSMFullRateCompressor.__call__"]], "__call__() (pedalboard.gain method)": [[6, "pedalboard.Gain.__call__"]], "__call__() (pedalboard.highshelffilter method)": [[6, "pedalboard.HighShelfFilter.__call__"]], "__call__() (pedalboard.highpassfilter method)": [[6, "pedalboard.HighpassFilter.__call__"]], "__call__() (pedalboard.iirfilter method)": [[6, "pedalboard.IIRFilter.__call__"]], "__call__() (pedalboard.invert method)": [[6, "pedalboard.Invert.__call__"]], "__call__() (pedalboard.ladderfilter method)": [[6, "pedalboard.LadderFilter.__call__"]], "__call__() (pedalboard.limiter method)": [[6, "pedalboard.Limiter.__call__"]], "__call__() (pedalboard.lowshelffilter method)": [[6, "pedalboard.LowShelfFilter.__call__"]], "__call__() (pedalboard.lowpassfilter method)": [[6, "pedalboard.LowpassFilter.__call__"]], "__call__() (pedalboard.mp3compressor method)": [[6, "pedalboard.MP3Compressor.__call__"]], "__call__() (pedalboard.mix method)": [[6, "pedalboard.Mix.__call__"]], "__call__() (pedalboard.noisegate method)": [[6, "pedalboard.NoiseGate.__call__"]], "__call__() (pedalboard.peakfilter method)": [[6, "pedalboard.PeakFilter.__call__"]], "__call__() (pedalboard.pedalboard method)": [[6, "pedalboard.Pedalboard.__call__"]], "__call__() (pedalboard.phaser method)": [[6, "pedalboard.Phaser.__call__"]], "__call__() (pedalboard.pitchshift method)": [[6, "pedalboard.PitchShift.__call__"]], "__call__() (pedalboard.plugin method)": [[6, "pedalboard.Plugin.__call__"]], "__call__() (pedalboard.plugincontainer method)": [[6, "pedalboard.PluginContainer.__call__"]], "__call__() (pedalboard.resample method)": [[6, "pedalboard.Resample.__call__"]], "__call__() (pedalboard.reverb method)": [[6, "pedalboard.Reverb.__call__"]], "__call__() (pedalboard.vst3plugin method)": [[6, "pedalboard.VST3Plugin.__call__"]], "append() (pedalboard.chain method)": [[6, "pedalboard.Chain.append"]], "append() (pedalboard.mix method)": [[6, "pedalboard.Mix.append"]], "append() (pedalboard.pedalboard method)": [[6, "pedalboard.Pedalboard.append"]], "append() (pedalboard.plugincontainer method)": [[6, "pedalboard.PluginContainer.append"]], "bit_depth (pedalboard.bitcrush property)": [[6, "pedalboard.Bitcrush.bit_depth"]], "category (pedalboard.audiounitplugin property)": [[6, "pedalboard.AudioUnitPlugin.category"]], "category (pedalboard.vst3plugin property)": [[6, "pedalboard.VST3Plugin.category"]], "descriptive_name (pedalboard.audiounitplugin property)": [[6, "pedalboard.AudioUnitPlugin.descriptive_name"]], "descriptive_name (pedalboard.vst3plugin property)": [[6, "pedalboard.VST3Plugin.descriptive_name"]], "get_plugin_names_for_file() (pedalboard.audiounitplugin static method)": [[6, "pedalboard.AudioUnitPlugin.get_plugin_names_for_file"]], "get_plugin_names_for_file() (pedalboard.vst3plugin static method)": [[6, "pedalboard.VST3Plugin.get_plugin_names_for_file"]], "has_shared_container (pedalboard.audiounitplugin property)": [[6, "pedalboard.AudioUnitPlugin.has_shared_container"]], "has_shared_container (pedalboard.vst3plugin property)": [[6, "pedalboard.VST3Plugin.has_shared_container"]], "identifier (pedalboard.audiounitplugin property)": [[6, "pedalboard.AudioUnitPlugin.identifier"]], "identifier (pedalboard.vst3plugin property)": [[6, "pedalboard.VST3Plugin.identifier"]], "insert() (pedalboard.chain method)": [[6, "pedalboard.Chain.insert"]], "insert() (pedalboard.mix method)": [[6, "pedalboard.Mix.insert"]], "insert() (pedalboard.pedalboard method)": [[6, "pedalboard.Pedalboard.insert"]], "insert() (pedalboard.plugincontainer method)": [[6, "pedalboard.PluginContainer.insert"]], "is_effect (pedalboard.audiounitplugin property)": [[6, "pedalboard.AudioUnitPlugin.is_effect"]], "is_effect (pedalboard.bitcrush property)": [[6, "pedalboard.Bitcrush.is_effect"]], "is_effect (pedalboard.chain property)": [[6, "pedalboard.Chain.is_effect"]], "is_effect (pedalboard.chorus property)": [[6, "pedalboard.Chorus.is_effect"]], "is_effect (pedalboard.clipping property)": [[6, "pedalboard.Clipping.is_effect"]], "is_effect (pedalboard.compressor property)": [[6, "pedalboard.Compressor.is_effect"]], "is_effect (pedalboard.convolution property)": [[6, "pedalboard.Convolution.is_effect"]], "is_effect (pedalboard.delay property)": [[6, "pedalboard.Delay.is_effect"]], "is_effect (pedalboard.distortion property)": [[6, "pedalboard.Distortion.is_effect"]], "is_effect (pedalboard.externalplugin property)": [[6, "pedalboard.ExternalPlugin.is_effect"]], "is_effect (pedalboard.gsmfullratecompressor property)": [[6, "pedalboard.GSMFullRateCompressor.is_effect"]], "is_effect (pedalboard.gain property)": [[6, "pedalboard.Gain.is_effect"]], "is_effect (pedalboard.highshelffilter property)": [[6, "pedalboard.HighShelfFilter.is_effect"]], "is_effect (pedalboard.highpassfilter property)": [[6, "pedalboard.HighpassFilter.is_effect"]], "is_effect (pedalboard.iirfilter property)": [[6, "pedalboard.IIRFilter.is_effect"]], "is_effect (pedalboard.invert property)": [[6, "pedalboard.Invert.is_effect"]], "is_effect (pedalboard.ladderfilter property)": [[6, "pedalboard.LadderFilter.is_effect"]], "is_effect (pedalboard.limiter property)": [[6, "pedalboard.Limiter.is_effect"]], "is_effect (pedalboard.lowshelffilter property)": [[6, "pedalboard.LowShelfFilter.is_effect"]], "is_effect (pedalboard.lowpassfilter property)": [[6, "pedalboard.LowpassFilter.is_effect"]], "is_effect (pedalboard.mp3compressor property)": [[6, "pedalboard.MP3Compressor.is_effect"]], "is_effect (pedalboard.mix property)": [[6, "pedalboard.Mix.is_effect"]], "is_effect (pedalboard.noisegate property)": [[6, "pedalboard.NoiseGate.is_effect"]], "is_effect (pedalboard.peakfilter property)": [[6, "pedalboard.PeakFilter.is_effect"]], "is_effect (pedalboard.pedalboard property)": [[6, "pedalboard.Pedalboard.is_effect"]], "is_effect (pedalboard.phaser property)": [[6, "pedalboard.Phaser.is_effect"]], "is_effect (pedalboard.pitchshift property)": [[6, "pedalboard.PitchShift.is_effect"]], "is_effect (pedalboard.plugin property)": [[6, "pedalboard.Plugin.is_effect"]], "is_effect (pedalboard.plugincontainer property)": [[6, "pedalboard.PluginContainer.is_effect"]], "is_effect (pedalboard.resample property)": [[6, "pedalboard.Resample.is_effect"]], "is_effect (pedalboard.reverb property)": [[6, "pedalboard.Reverb.is_effect"]], "is_effect (pedalboard.vst3plugin property)": [[6, "pedalboard.VST3Plugin.is_effect"]], "is_instrument (pedalboard.audiounitplugin property)": [[6, "pedalboard.AudioUnitPlugin.is_instrument"]], "is_instrument (pedalboard.bitcrush property)": [[6, "pedalboard.Bitcrush.is_instrument"]], "is_instrument (pedalboard.chain property)": [[6, "pedalboard.Chain.is_instrument"]], "is_instrument (pedalboard.chorus property)": [[6, "pedalboard.Chorus.is_instrument"]], "is_instrument (pedalboard.clipping property)": [[6, "pedalboard.Clipping.is_instrument"]], "is_instrument (pedalboard.compressor property)": [[6, "pedalboard.Compressor.is_instrument"]], "is_instrument (pedalboard.convolution property)": [[6, "pedalboard.Convolution.is_instrument"]], "is_instrument (pedalboard.delay property)": [[6, "pedalboard.Delay.is_instrument"]], "is_instrument (pedalboard.distortion property)": [[6, "pedalboard.Distortion.is_instrument"]], "is_instrument (pedalboard.externalplugin property)": [[6, "pedalboard.ExternalPlugin.is_instrument"]], "is_instrument (pedalboard.gsmfullratecompressor property)": [[6, "pedalboard.GSMFullRateCompressor.is_instrument"]], "is_instrument (pedalboard.gain property)": [[6, "pedalboard.Gain.is_instrument"]], "is_instrument (pedalboard.highshelffilter property)": [[6, "pedalboard.HighShelfFilter.is_instrument"]], "is_instrument (pedalboard.highpassfilter property)": [[6, "pedalboard.HighpassFilter.is_instrument"]], "is_instrument (pedalboard.iirfilter property)": [[6, "pedalboard.IIRFilter.is_instrument"]], "is_instrument (pedalboard.invert property)": [[6, "pedalboard.Invert.is_instrument"]], "is_instrument (pedalboard.ladderfilter property)": [[6, "pedalboard.LadderFilter.is_instrument"]], "is_instrument (pedalboard.limiter property)": [[6, "pedalboard.Limiter.is_instrument"]], "is_instrument (pedalboard.lowshelffilter property)": [[6, "pedalboard.LowShelfFilter.is_instrument"]], "is_instrument (pedalboard.lowpassfilter property)": [[6, "pedalboard.LowpassFilter.is_instrument"]], "is_instrument (pedalboard.mp3compressor property)": [[6, "pedalboard.MP3Compressor.is_instrument"]], "is_instrument (pedalboard.mix property)": [[6, "pedalboard.Mix.is_instrument"]], "is_instrument (pedalboard.noisegate property)": [[6, "pedalboard.NoiseGate.is_instrument"]], "is_instrument (pedalboard.peakfilter property)": [[6, "pedalboard.PeakFilter.is_instrument"]], "is_instrument (pedalboard.pedalboard property)": [[6, "pedalboard.Pedalboard.is_instrument"]], "is_instrument (pedalboard.phaser property)": [[6, "pedalboard.Phaser.is_instrument"]], "is_instrument (pedalboard.pitchshift property)": [[6, "pedalboard.PitchShift.is_instrument"]], "is_instrument (pedalboard.plugin property)": [[6, "pedalboard.Plugin.is_instrument"]], "is_instrument (pedalboard.plugincontainer property)": [[6, "pedalboard.PluginContainer.is_instrument"]], "is_instrument (pedalboard.resample property)": [[6, "pedalboard.Resample.is_instrument"]], "is_instrument (pedalboard.reverb property)": [[6, "pedalboard.Reverb.is_instrument"]], "is_instrument (pedalboard.vst3plugin property)": [[6, "pedalboard.VST3Plugin.is_instrument"]], "label (pedalboard.audioprocessorparameter property)": [[6, "pedalboard.AudioProcessorParameter.label"]], "load_plugin() (in module pedalboard)": [[6, "pedalboard.load_plugin"]], "load_preset() (pedalboard.vst3plugin method)": [[6, "pedalboard.VST3Plugin.load_preset"]], "manufacturer_name (pedalboard.audiounitplugin property)": [[6, "pedalboard.AudioUnitPlugin.manufacturer_name"]], "manufacturer_name (pedalboard.vst3plugin property)": [[6, "pedalboard.VST3Plugin.manufacturer_name"]], "module": [[6, "module-pedalboard"], [7, "module-pedalboard.io"]], "name (pedalboard.audiounitplugin property)": [[6, "pedalboard.AudioUnitPlugin.name"]], "name (pedalboard.vst3plugin property)": [[6, "pedalboard.VST3Plugin.name"]], "pedalboard": [[6, "module-pedalboard"]], "process() (pedalboard.audiounitplugin method)": [[6, "pedalboard.AudioUnitPlugin.process"]], "process() (pedalboard.bitcrush method)": [[6, "pedalboard.Bitcrush.process"]], "process() (pedalboard.chain method)": [[6, "pedalboard.Chain.process"]], "process() (pedalboard.chorus method)": [[6, "pedalboard.Chorus.process"]], "process() (pedalboard.clipping method)": [[6, "pedalboard.Clipping.process"]], "process() (pedalboard.compressor method)": [[6, "pedalboard.Compressor.process"]], "process() (pedalboard.convolution method)": [[6, "pedalboard.Convolution.process"]], "process() (pedalboard.delay method)": [[6, "pedalboard.Delay.process"]], "process() (pedalboard.distortion method)": [[6, "pedalboard.Distortion.process"]], "process() (pedalboard.externalplugin method)": [[6, "pedalboard.ExternalPlugin.process"]], "process() (pedalboard.gsmfullratecompressor method)": [[6, "pedalboard.GSMFullRateCompressor.process"]], "process() (pedalboard.gain method)": [[6, "pedalboard.Gain.process"]], "process() (pedalboard.highshelffilter method)": [[6, "pedalboard.HighShelfFilter.process"]], "process() (pedalboard.highpassfilter method)": [[6, "pedalboard.HighpassFilter.process"]], "process() (pedalboard.iirfilter method)": [[6, "pedalboard.IIRFilter.process"]], "process() (pedalboard.invert method)": [[6, "pedalboard.Invert.process"]], "process() (pedalboard.ladderfilter method)": [[6, "pedalboard.LadderFilter.process"]], "process() (pedalboard.limiter method)": [[6, "pedalboard.Limiter.process"]], "process() (pedalboard.lowshelffilter method)": [[6, "pedalboard.LowShelfFilter.process"]], "process() (pedalboard.lowpassfilter method)": [[6, "pedalboard.LowpassFilter.process"]], "process() (pedalboard.mp3compressor method)": [[6, "pedalboard.MP3Compressor.process"]], "process() (pedalboard.mix method)": [[6, "pedalboard.Mix.process"]], "process() (pedalboard.noisegate method)": [[6, "pedalboard.NoiseGate.process"]], "process() (pedalboard.peakfilter method)": [[6, "pedalboard.PeakFilter.process"]], "process() (pedalboard.pedalboard method)": [[6, "pedalboard.Pedalboard.process"]], "process() (pedalboard.phaser method)": [[6, "pedalboard.Phaser.process"]], "process() (pedalboard.pitchshift method)": [[6, "pedalboard.PitchShift.process"]], "process() (pedalboard.plugin method)": [[6, "pedalboard.Plugin.process"]], "process() (pedalboard.plugincontainer method)": [[6, "pedalboard.PluginContainer.process"]], "process() (pedalboard.resample method)": [[6, "pedalboard.Resample.process"]], "process() (pedalboard.reverb method)": [[6, "pedalboard.Reverb.process"]], "process() (pedalboard.vst3plugin method)": [[6, "pedalboard.VST3Plugin.process"]], "quality (pedalboard.resample property)": [[6, "pedalboard.Resample.quality"]], "rate_hz (pedalboard.chorus property)": [[6, "pedalboard.Chorus.rate_hz"]], "raw_state (pedalboard.audiounitplugin property)": [[6, "pedalboard.AudioUnitPlugin.raw_state"]], "raw_state (pedalboard.vst3plugin property)": [[6, "pedalboard.VST3Plugin.raw_state"]], "remove() (pedalboard.chain method)": [[6, "pedalboard.Chain.remove"]], "remove() (pedalboard.mix method)": [[6, "pedalboard.Mix.remove"]], "remove() (pedalboard.pedalboard method)": [[6, "pedalboard.Pedalboard.remove"]], "remove() (pedalboard.plugincontainer method)": [[6, "pedalboard.PluginContainer.remove"]], "reset() (pedalboard.audiounitplugin method)": [[6, "pedalboard.AudioUnitPlugin.reset"]], "reset() (pedalboard.bitcrush method)": [[6, "pedalboard.Bitcrush.reset"]], "reset() (pedalboard.chain method)": [[6, "pedalboard.Chain.reset"]], "reset() (pedalboard.chorus method)": [[6, "pedalboard.Chorus.reset"]], "reset() (pedalboard.clipping method)": [[6, "pedalboard.Clipping.reset"]], "reset() (pedalboard.compressor method)": [[6, "pedalboard.Compressor.reset"]], "reset() (pedalboard.convolution method)": [[6, "pedalboard.Convolution.reset"]], "reset() (pedalboard.delay method)": [[6, "pedalboard.Delay.reset"]], "reset() (pedalboard.distortion method)": [[6, "pedalboard.Distortion.reset"]], "reset() (pedalboard.externalplugin method)": [[6, "pedalboard.ExternalPlugin.reset"]], "reset() (pedalboard.gsmfullratecompressor method)": [[6, "pedalboard.GSMFullRateCompressor.reset"]], "reset() (pedalboard.gain method)": [[6, "pedalboard.Gain.reset"]], "reset() (pedalboard.highshelffilter method)": [[6, "pedalboard.HighShelfFilter.reset"]], "reset() (pedalboard.highpassfilter method)": [[6, "pedalboard.HighpassFilter.reset"]], "reset() (pedalboard.iirfilter method)": [[6, "pedalboard.IIRFilter.reset"]], "reset() (pedalboard.invert method)": [[6, "pedalboard.Invert.reset"]], "reset() (pedalboard.ladderfilter method)": [[6, "pedalboard.LadderFilter.reset"]], "reset() (pedalboard.limiter method)": [[6, "pedalboard.Limiter.reset"]], "reset() (pedalboard.lowshelffilter method)": [[6, "pedalboard.LowShelfFilter.reset"]], "reset() (pedalboard.lowpassfilter method)": [[6, "pedalboard.LowpassFilter.reset"]], "reset() (pedalboard.mp3compressor method)": [[6, "pedalboard.MP3Compressor.reset"]], "reset() (pedalboard.mix method)": [[6, "pedalboard.Mix.reset"]], "reset() (pedalboard.noisegate method)": [[6, "pedalboard.NoiseGate.reset"]], "reset() (pedalboard.peakfilter method)": [[6, "pedalboard.PeakFilter.reset"]], "reset() (pedalboard.pedalboard method)": [[6, "pedalboard.Pedalboard.reset"]], "reset() (pedalboard.phaser method)": [[6, "pedalboard.Phaser.reset"]], "reset() (pedalboard.pitchshift method)": [[6, "pedalboard.PitchShift.reset"]], "reset() (pedalboard.plugin method)": [[6, "pedalboard.Plugin.reset"]], "reset() (pedalboard.plugincontainer method)": [[6, "pedalboard.PluginContainer.reset"]], "reset() (pedalboard.resample method)": [[6, "pedalboard.Resample.reset"]], "reset() (pedalboard.reverb method)": [[6, "pedalboard.Reverb.reset"]], "reset() (pedalboard.vst3plugin method)": [[6, "pedalboard.VST3Plugin.reset"]], "show_editor() (pedalboard.audiounitplugin method)": [[6, "pedalboard.AudioUnitPlugin.show_editor"]], "show_editor() (pedalboard.vst3plugin method)": [[6, "pedalboard.VST3Plugin.show_editor"]], "target_sample_rate (pedalboard.resample property)": [[6, "pedalboard.Resample.target_sample_rate"]], "time_stretch() (in module pedalboard)": [[6, "pedalboard.time_stretch"]], "units (pedalboard.audioprocessorparameter property)": [[6, "pedalboard.AudioProcessorParameter.units"]], "version (pedalboard.audiounitplugin property)": [[6, "pedalboard.AudioUnitPlugin.version"]], "version (pedalboard.vst3plugin property)": [[6, "pedalboard.VST3Plugin.version"]], "audiofile (class in pedalboard.io)": [[7, "pedalboard.io.AudioFile"]], "audiostream (class in pedalboard.io)": [[7, "pedalboard.io.AudioStream"]], "readableaudiofile (class in pedalboard.io)": [[7, "pedalboard.io.ReadableAudioFile"]], "resampledreadableaudiofile (class in pedalboard.io)": [[7, "pedalboard.io.ResampledReadableAudioFile"]], "streamresampler (class in pedalboard.io)": [[7, "pedalboard.io.StreamResampler"]], "writeableaudiofile (class in pedalboard.io)": [[7, "pedalboard.io.WriteableAudioFile"]], "__enter__() (pedalboard.io.audiostream method)": [[7, "pedalboard.io.AudioStream.__enter__"]], "__enter__() (pedalboard.io.readableaudiofile method)": [[7, "pedalboard.io.ReadableAudioFile.__enter__"]], "__enter__() (pedalboard.io.resampledreadableaudiofile method)": [[7, "pedalboard.io.ResampledReadableAudioFile.__enter__"]], "__exit__() (pedalboard.io.audiostream method)": [[7, "pedalboard.io.AudioStream.__exit__"]], "__exit__() (pedalboard.io.readableaudiofile method)": [[7, "pedalboard.io.ReadableAudioFile.__exit__"]], "__exit__() (pedalboard.io.resampledreadableaudiofile method)": [[7, "pedalboard.io.ResampledReadableAudioFile.__exit__"]], "close() (pedalboard.io.readableaudiofile method)": [[7, "pedalboard.io.ReadableAudioFile.close"]], "close() (pedalboard.io.resampledreadableaudiofile method)": [[7, "pedalboard.io.ResampledReadableAudioFile.close"]], "close() (pedalboard.io.writeableaudiofile method)": [[7, "pedalboard.io.WriteableAudioFile.close"]], "closed (pedalboard.io.readableaudiofile property)": [[7, "pedalboard.io.ReadableAudioFile.closed"]], "closed (pedalboard.io.resampledreadableaudiofile property)": [[7, "pedalboard.io.ResampledReadableAudioFile.closed"]], "closed (pedalboard.io.writeableaudiofile property)": [[7, "pedalboard.io.WriteableAudioFile.closed"]], "duration (pedalboard.io.readableaudiofile property)": [[7, "pedalboard.io.ReadableAudioFile.duration"]], "duration (pedalboard.io.resampledreadableaudiofile property)": [[7, "pedalboard.io.ResampledReadableAudioFile.duration"]], "encode() (pedalboard.io.audiofile static method)": [[7, "pedalboard.io.AudioFile.encode"]], "exact_duration_known (pedalboard.io.readableaudiofile property)": [[7, "pedalboard.io.ReadableAudioFile.exact_duration_known"]], "exact_duration_known (pedalboard.io.resampledreadableaudiofile property)": [[7, "pedalboard.io.ResampledReadableAudioFile.exact_duration_known"]], "file_dtype (pedalboard.io.readableaudiofile property)": [[7, "pedalboard.io.ReadableAudioFile.file_dtype"]], "file_dtype (pedalboard.io.resampledreadableaudiofile property)": [[7, "pedalboard.io.ResampledReadableAudioFile.file_dtype"]], "file_dtype (pedalboard.io.writeableaudiofile property)": [[7, "pedalboard.io.WriteableAudioFile.file_dtype"]], "flush() (pedalboard.io.writeableaudiofile method)": [[7, "pedalboard.io.WriteableAudioFile.flush"]], "frames (pedalboard.io.readableaudiofile property)": [[7, "pedalboard.io.ReadableAudioFile.frames"]], "frames (pedalboard.io.resampledreadableaudiofile property)": [[7, "pedalboard.io.ResampledReadableAudioFile.frames"]], "frames (pedalboard.io.writeableaudiofile property)": [[7, "pedalboard.io.WriteableAudioFile.frames"]], "input_latency (pedalboard.io.streamresampler property)": [[7, "pedalboard.io.StreamResampler.input_latency"]], "name (pedalboard.io.readableaudiofile property)": [[7, "pedalboard.io.ReadableAudioFile.name"]], "name (pedalboard.io.resampledreadableaudiofile property)": [[7, "pedalboard.io.ResampledReadableAudioFile.name"]], "num_channels (pedalboard.io.readableaudiofile property)": [[7, "pedalboard.io.ReadableAudioFile.num_channels"]], "num_channels (pedalboard.io.resampledreadableaudiofile property)": [[7, "pedalboard.io.ResampledReadableAudioFile.num_channels"]], "num_channels (pedalboard.io.streamresampler property)": [[7, "pedalboard.io.StreamResampler.num_channels"]], "num_channels (pedalboard.io.writeableaudiofile property)": [[7, "pedalboard.io.WriteableAudioFile.num_channels"]], "pedalboard.io": [[7, "module-pedalboard.io"]], "plugins (pedalboard.io.audiostream property)": [[7, "pedalboard.io.AudioStream.plugins"]], "process() (pedalboard.io.streamresampler method)": [[7, "pedalboard.io.StreamResampler.process"]], "quality (pedalboard.io.streamresampler property)": [[7, "pedalboard.io.StreamResampler.quality"]], "quality (pedalboard.io.writeableaudiofile property)": [[7, "pedalboard.io.WriteableAudioFile.quality"]], "read() (pedalboard.io.readableaudiofile method)": [[7, "pedalboard.io.ReadableAudioFile.read"]], "read() (pedalboard.io.resampledreadableaudiofile method)": [[7, "pedalboard.io.ResampledReadableAudioFile.read"]], "read_raw() (pedalboard.io.readableaudiofile method)": [[7, "pedalboard.io.ReadableAudioFile.read_raw"]], "resampled_to() (pedalboard.io.readableaudiofile method)": [[7, "pedalboard.io.ReadableAudioFile.resampled_to"]], "resampling_quality (pedalboard.io.resampledreadableaudiofile property)": [[7, "pedalboard.io.ResampledReadableAudioFile.resampling_quality"]], "reset() (pedalboard.io.streamresampler method)": [[7, "pedalboard.io.StreamResampler.reset"]], "run() (pedalboard.io.audiostream method)": [[7, "pedalboard.io.AudioStream.run"]], "running (pedalboard.io.audiostream property)": [[7, "pedalboard.io.AudioStream.running"]], "samplerate (pedalboard.io.readableaudiofile property)": [[7, "pedalboard.io.ReadableAudioFile.samplerate"]], "samplerate (pedalboard.io.resampledreadableaudiofile property)": [[7, "pedalboard.io.ResampledReadableAudioFile.samplerate"]], "samplerate (pedalboard.io.writeableaudiofile property)": [[7, "pedalboard.io.WriteableAudioFile.samplerate"]], "seek() (pedalboard.io.readableaudiofile method)": [[7, "pedalboard.io.ReadableAudioFile.seek"]], "seek() (pedalboard.io.resampledreadableaudiofile method)": [[7, "pedalboard.io.ResampledReadableAudioFile.seek"]], "seekable() (pedalboard.io.readableaudiofile method)": [[7, "pedalboard.io.ReadableAudioFile.seekable"]], "seekable() (pedalboard.io.resampledreadableaudiofile method)": [[7, "pedalboard.io.ResampledReadableAudioFile.seekable"]], "source_sample_rate (pedalboard.io.streamresampler property)": [[7, "pedalboard.io.StreamResampler.source_sample_rate"]], "target_sample_rate (pedalboard.io.streamresampler property)": [[7, "pedalboard.io.StreamResampler.target_sample_rate"]], "tell() (pedalboard.io.readableaudiofile method)": [[7, "pedalboard.io.ReadableAudioFile.tell"]], "tell() (pedalboard.io.resampledreadableaudiofile method)": [[7, "pedalboard.io.ResampledReadableAudioFile.tell"]], "tell() (pedalboard.io.writeableaudiofile method)": [[7, "pedalboard.io.WriteableAudioFile.tell"]], "write() (pedalboard.io.writeableaudiofile method)": [[7, "pedalboard.io.WriteableAudioFile.write"]]}}) +Search.setIndex({"docnames": ["compatibility", "examples", "faq", "index", "internals", "license", "reference/pedalboard", "reference/pedalboard.io"], "filenames": ["compatibility.rst", "examples.rst", "faq.rst", "index.rst", "internals.rst", "license.rst", "reference/pedalboard.rst", "reference/pedalboard.io.rst"], "titles": ["Plugin Compatibility", "Examples", "Frequently Asked Questions", "Features", "Pedalboard Internals", "License", "The pedalboard API", "The pedalboard.io API"], "terms": {"pedalboard": [0, 3, 5], "allow": [0, 1, 3, 6, 7], "load": [0, 1, 3, 4, 6], "vst3": [0, 3, 4, 5, 6], "audio": [0, 3, 4, 5, 6, 7], "unit": [0, 2, 3, 4, 6], "which": [0, 5, 6, 7], "could": [0, 6, 7], "contain": [0, 1, 6, 7], "ani": [0, 2, 4, 6, 7], "code": [0, 2, 4, 5, 7], "most": [0, 3, 4, 6, 7], "have": [0, 4, 6, 7], "been": [0, 7], "test": [0, 3, 4], "work": [0, 1, 3, 6, 7], "just": [0, 1, 4, 6, 7], "fine": [0, 6], "some": [0, 1, 4, 6, 7], "mai": [0, 4, 6, 7], "worst": [0, 7], "even": [0, 3, 7], "crash": [0, 6, 7], "python": [0, 1, 3, 4, 6, 7], "interpret": [0, 3, 7], "without": [0, 3, 6, 7], "warn": 0, "abil": [0, 6], "catch": 0, "error": [0, 6], "ar": [0, 1, 3, 4, 5, 6, 7], "well": [0, 3, 4, 6, 7], "behav": [0, 1], "conform": 0, "set": [0, 1, 2, 6, 7], "convent": 0, "how": [0, 1, 6], "suppos": 0, "mani": [0, 3, 6, 7], "do": [0, 1, 6, 7], "specif": [0, 6], "attempt": [0, 7], "detect": [0, 6], "common": [0, 3], "program": [0, 1, 6, 7], "can": [0, 1, 3, 4, 6, 7], "around": [0, 4, 6], "issu": [0, 4, 6], "includ": [0, 1, 3, 4, 5, 6], "automat": [0, 3, 6, 7], "don": [0, 1, 6, 7], "t": [0, 1, 2, 6, 7], "clear": [0, 6], "intern": [0, 3, 6, 7], "state": [0, 6, 7], "when": [0, 3, 4, 6, 7], "ask": [0, 3], "so": [0, 1, 2, 6, 7], "misbehav": 0, "notic": 0, "If": [0, 1, 3, 6, 7], "i": [0, 1, 2, 3, 4, 5, 6, 7], "being": [0, 7], "render": [0, 1, 2, 3, 6, 7], "incorrectli": 0, "leak": [0, 7], "from": [0, 1, 2, 3, 5, 6, 7], "one": [0, 1, 3, 6, 7], "process": [0, 1, 2, 3, 4, 5, 6, 7], "call": [0, 6, 7], "next": 0, "an": [0, 1, 4, 6, 7], "undesir": 0, "fashion": 0, "try": [0, 6, 7], "pass": [0, 1, 2, 6, 7], "silenc": 0, "between": [0, 2, 6, 7], "ensur": [0, 2, 4, 6, 7], "reverb": [0, 1, 2, 3, 6, 7], "tail": [0, 2, 6], "other": [0, 1, 3, 6, 7], "ha": [0, 1, 6, 7], "time": [0, 1, 3, 6, 7], "fade": 0, "reload": 0, "everi": [0, 4, 6, 7], "load_plugin": [0, 1, 3, 4, 6], "note": [1, 6, 7], "you": [1, 3, 6, 7], "d": [1, 7], "rather": [1, 7], "watch": 1, "video": 1, "instead": [1, 3, 6, 7], "read": [1, 2, 3, 6, 7], "document": [1, 6, 7], "feat": 1, "youtub": 1, "import": [1, 2, 4, 6, 7], "choru": [1, 3, 6], "io": [1, 2, 3, 6], "audiofil": [1, 2, 6, 7], "object": [1, 6, 7], "multipl": [1, 3, 6, 7], "board": [1, 2], "room_siz": [1, 6], "0": [1, 2, 6, 7], "25": [1, 6], "open": [1, 2, 4, 6, 7], "file": [1, 2, 3, 4, 6, 7], "like": [1, 3, 6, 7], "regular": [1, 6, 7], "wav": [1, 2, 3, 6, 7], "f": [1, 6, 7], "write": [1, 2, 3, 6, 7], "output": [1, 2, 6, 7], "w": [1, 2, 6, 7], "sampler": [1, 2, 6, 7], "num_channel": [1, 2, 6, 7], "o": [1, 2, 3, 6, 7], "second": [1, 6, 7], "until": [1, 6, 7], "empti": [1, 6], "while": [1, 2, 6, 7], "tell": [1, 7], "frame": [1, 2, 7], "chunk": [1, 2, 6, 7], "int": [6, 7], "through": [1, 2, 6, 7], "our": [1, 2], "reset": [1, 2, 6, 7], "fals": [1, 2, 6, 7], "For": [1, 6, 7], "more": [1, 2, 3, 4, 6, 7], "inform": [1, 7], "about": [1, 6, 7], "paramet": [1, 3, 6, 7], "see": [1, 2, 6, 7], "http": 6, "spotifi": [3, 5], "github": [3, 6], "refer": [], "html": 6, "_": 6, "It": [1, 3], "thi": [1, 2, 5, 6, 7], "smaller": [1, 2, 6, 7], "whole": 1, "resampl": [1, 3, 6, 7], "desir": 1, "sampl": [1, 2, 6, 7], "rate": [1, 2, 6, 7], "44100": [1, 6, 7], "input": [1, 6, 7], "resampled_to": [1, 7], "pretti": 1, "interest": 1, "sound": [1, 6], "compressor": [1, 2, 3, 6], "threshold_db": [1, 6], "50": [1, 6], "ratio": [1, 6], "gain": [1, 3, 6], "gain_db": [1, 6], "30": [1, 7], "ladderfilt": [1, 3, 6], "mode": [1, 6, 7], "hpf12": [1, 6], "cutoff_hz": [1, 6], "900": 1, "phaser": [1, 3, 6], "convolut": [1, 3, 6], "guitar_amp": 1, "1": [1, 2, 3, 6, 7], "list": [1, 6, 7], "add": [1, 3, 4, 6, 7], "append": [1, 6, 7], "10": [1, 3, 6, 7], "limit": [1, 3, 6], "chang": [1, 3, 6, 7], "easili": 1, "40": 1, "back": [1, 6, 7], "shape": [1, 2, 7], "known": 1, "path": [1, 6, 7], "disk": [1, 7], "vst": [1, 3, 5], "roughrider3": 1, "print": [1, 6, 7], "kei": [1, 6], "dict_kei": 1, "sc_hpf_hz": 1, "input_lvl_db": 1, "sensitivity_db": 1, "attack_m": [1, 6], "release_m": [1, 6], "makeup_db": 1, "mix": [1, 6], "output_lvl_db": 1, "sc_activ": 1, "full_bandwidth": 1, "bypass": 1, "15": 1, "r": 7, "put": 1, "same": [1, 4, 6, 7], "instanc": [1, 4, 6, 7], "delai": [1, 3, 6], "pitch": [1, 3, 6], "shift": [1, 6], "themselv": [1, 6], "nest": [1, 6], "them": [1, 6], "much": [1, 6, 7], "distort": [1, 3, 6], "pitchshift": [1, 3, 5, 6], "passthrough": 1, "delay_and_pitch_shift": 1, "delay_second": [1, 6], "semiton": [1, 6], "7": [1, 2, 3, 6, 7], "3": [1, 3, 6, 7], "delay_longer_and_more_pitch_shift": 1, "5": [1, 6], "12": [1, 3, 6], "6": [1, 3, 5, 6, 7], "front": 1, "all": [1, 3, 4, 6, 7], "simultan": 1, "final": 1, "On": 1, "maco": [1, 3, 4, 6, 7], "window": [1, 3, 4, 6, 7], "support": [1, 3, 4, 6, 7], "stream": [1, 3, 6, 7], "audiostream": [1, 2, 3, 7], "real": [1, 3, 6, 7], "manipul": 1, "ad": [1, 3, 6, 7], "up": [1, 3, 5, 6], "input_device_nam": [1, 7], "apoge": 1, "jam": 1, "interfac": [1, 4, 6, 7], "output_device_nam": [1, 7], "macbook": 1, "pro": 1, "speaker": [1, 6, 7], "now": [1, 7], "out": [1, 3, 6, 7], "your": [1, 7], "press": [1, 6], "enter": [1, 7], "stop": [1, 7], "The": [1, 4, 5], "close": [1, 6, 7], "folder": 1, "repositori": [1, 4], "demo": 1, "colab": 1, "notebook": 1, "peter": 1, "sobot": 1, "europython": 1, "2022": 1, "interact": [1, 6, 7], "web": 1, "hug": 1, "face": 1, "space": 1, "gradio": 1, "via": [1, 3, 6, 7], "ak391": 1, "technic": [], "ye": 2, "pull": 5, "request": [], "98": [], "experiment": 3, "written": [4, 7], "c": [4, 6, 7], "stefanobazzi": [], "guitarboard": [], "project": 5, "exampl": [3, 4, 6, 7], "sounddevic": [], "librari": [3, 4, 5, 6, 7], "howev": [2, 6, 7], "coupl": [], "big": 2, "caveat": [], "talk": [], "context": 7, "languag": [], "garbag": [], "collect": [], "mean": [], "randomli": [], "paus": [], "interv": [], "clean": [], "unus": 7, "In": 7, "result": [6, 7], "random": [1, 7], "pop": [], "click": 6, "drop": [], "veri": [], "difficult": [], "prevent": 7, "global": [3, 7], "lock": [3, 7], "also": [3, 4, 5, 6, 7], "potenti": 7, "unbound": 7, "switch": [], "thread": [3, 4, 6, 7], "oper": [6, 7], "system": [6, 7], "separ": [], "high": [6, 7], "prioriti": [], "block": [6, 7], "caus": [6, 7], "stutter": [], "access": [6, 7], "mutat": [], "applic": 4, "larg": 7, "buffer": [6, 7], "size": [2, 4, 6, 7], "soft": 6, "requir": [3, 4, 6, 7], "case": [3, 4, 6, 7], "network": [], "data": [2, 3, 6, 7], "offlin": [], "built": [2, 3, 6], "function": [2, 4, 5, 6, 7], "possibl": [2, 3, 6, 7], "vari": [2, 6], "manual": [2, 3], "tqdm": 2, "step": 2, "would": [2, 4, 6, 7], "give": [2, 6], "smoother": [2, 6], "transit": 2, "expens": [2, 6, 7], "speed": [2, 3, 4, 5, 6, 7], "step_size_in_sampl": 2, "100": [2, 6, 7], "_n_": 2, "af": 2, "we": 2, "directli": [2, 6, 7], "save": [2, 6], "memori": [2, 3, 6, 7], "creat": [2, 3, 6, 7], "progress": 2, "bar": 2, "show": [2, 4, 6], "total": [2, 7], "pbar": 2, "rang": [2, 3, 6], "wet": [2, 6], "equal": [2, 3, 6, 7], "percentag": [2, 6], "track": [2, 6], "e": [2, 6, 7], "make": [2, 3, 7], "ramp": 2, "percentage_through_track": 2, "wet_level": [2, 6, 7], "updat": 2, "number": [2, 3, 5, 6, 7], "receiv": [2, 6, 7], "aren": 2, "cut": [2, 6], "off": [2, 6], "With": 2, "techniqu": [2, 6], "autom": 2, "usual": [2, 6, 7], "somewher": 2, "000": [2, 7], "2m": 2, "22m": 2, "44": [2, 6, 7], "1khz": [2, 6], "small": 2, "enough": [2, 7], "avoid": [2, 7], "hear": 2, "artifact": [2, 6], "slow": [2, 6], "down": [2, 6], "dramat": 2, "Not": [4, 6, 7], "yet": 2, "underli": [6, 7], "framework": [], "juce": [4, 5], "au": 7, "itself": [4, 6], "modifi": [], "either": [6, 7], "although": [6, 7], "effect": [3, 4, 6, 7], "popular": 3, "format": [3, 6, 7], "box": 3, "us": [3, 4, 5, 6, 7], "third": [3, 6], "parti": [3, 6], "plugin": [3, 5, 6, 7], "wa": [3, 6, 7], "": [1, 3, 4, 6, 7], "intellig": 3, "lab": 3, "enabl": [3, 6], "studio": 3, "qualiti": [3, 6, 7], "within": [3, 4, 6], "tensorflow": [1, 3], "augment": 3, "improv": 3, "machin": [3, 4], "learn": [3, 4], "model": [1, 3, 6], "help": 3, "power": [3, 6], "ai": 3, "dj": 3, "content": [3, 7], "creation": 3, "digit": [3, 4, 6], "workstat": 3, "util": [3, 6], "aiff": [3, 7], "flac": [3, 7], "mp3": [3, 6, 7], "ogg": [3, 7], "platform": [3, 4, 6, 7], "depend": [3, 4, 6, 7], "addit": [3, 4, 6, 7], "aac": [3, 7], "ac3": [3, 7], "wma": [3, 7], "fly": [3, 7], "usag": [3, 6], "live": [3, 7], "basic": [3, 6, 7], "transform": [3, 6], "guitar": [3, 6], "style": 3, "clip": [3, 6], "loud": [3, 6], "dynam": [3, 6], "filter": [3, 6], "highpassfilt": [3, 6], "lowpassfilt": [3, 6], "spatial": 3, "lossi": [3, 6], "compress": [3, 6, 7], "gsmfullratecompressor": [3, 5, 6], "mp3compressor": [3, 5, 6], "reduct": [3, 6], "bitcrush": [3, 6], "linux": [3, 4, 6, 7], "strong": 3, "safeti": [3, 7], "guarante": [3, 7], "releas": [3, 6, 7], "gil": [3, 7], "cpu": [3, 6], "core": [3, 5], "No": [3, 6], "need": [3, 4, 7], "multiprocess": 3, "onli": [3, 6, 7], "300x": 3, "faster": 3, "than": [3, 4, 6, 7], "pysox": 3, "singl": [3, 6], "2": [3, 6, 7], "5x": 3, "soxbind": 3, "icorv": 3, "4x": 3, "librosa": 3, "tf": 3, "pipelin": 3, "avail": [3, 4, 6, 7], "pypi": 3, "wheel": [3, 4], "pip": 3, "That": 3, "new": [3, 7], "follow": [3, 4, 5, 6, 7], "md": 3, "robust": 3, "guid": 3, "thoroughli": 3, "8": [3, 6], "9": [3, 6], "11": 3, "heavili": 3, "product": 3, "manylinux": 3, "x86_64": 3, "intel": 3, "amd": 3, "aarch64": 3, "arm": 3, "appl": [3, 6], "silicon": 3, "rel": 3, "modern": 3, "glibc": 3, "27": 3, "both": [2, 3, 6], "wide": [3, 6], "api": [3, 4], "quick": 3, "start": [3, 6, 7], "parallel": [3, 6], "chain": [3, 6, 7], "run": [3, 6, 7], "frequent": [3, 6], "question": 3, "doe": [3, 4, 6, 7], "over": [3, 6], "instrument": [3, 6], "accept": [3, 6, 7], "midi": [1, 3, 6], "design": [3, 6], "consider": 3, "licens": [3, 4], "cite": [], "repo": 3, "wrapper": [4, 6], "sourc": [4, 7], "cross": [4, 6], "develop": 4, "pybind11": 4, "bind": 4, "goal": [4, 7], "expos": [4, 6], "signal": [4, 6], "idiomat": 4, "wai": [4, 7], "provid": [4, 6, 7], "raw": [4, 6, 7], "perform": [4, 7], "dsp": 4, "hide": 4, "complex": 4, "programm": 4, "intuit": 4, "varieti": 4, "reason": 4, "wider": 4, "compat": [4, 5, 6], "notabl": 4, "rare": [4, 6], "fewer": [4, 6], "simpler": 4, "remov": [4, 6], "copi": 4, "associ": 4, "resourc": [4, 6, 7], "option": [4, 6, 7], "might": 4, "meant": 4, "music": 4, "appropri": [4, 6], "vice": 4, "versa": 4, "stabil": 4, "environ": 4, "where": [1, 4, 6, 7], "implement": [4, 6, 7], "logic": 4, "portabl": 4, "safe": [4, 7], "constraint": 4, "should": [4, 6, 7], "consid": [4, 6, 7], "gplv3": [4, 5], "static": [4, 5, 6, 7], "link": 4, "vendor": 4, "git": 4, "submodul": 4, "binari": [4, 6, 7], "distribut": 4, "Will": [4, 7], "increas": [4, 6, 7], "amount": [4, 6, 7], "compil": [1, 4, 5], "runtim": 4, "cannot": [2, 4, 6, 7], "user": 4, "instal": [4, 6, 7], "softwar": [3, 4], "complic": 4, "simplic": 4, "packag": [4, 6], "To": [6, 7], "academ": [], "its": [6, 7], "entri": [], "zenodo": [], "imag": [], "org": [], "badg": [], "doi": [], "5281": [], "7817838": [], "svg": [], "target": [6, 7], "alt": [], "bibtex": [], "tex": [], "sobot_peter_2023_7817838": [], "author": [], "titl": [], "modul": [6, 7], "class": [2, 6, 7], "subclass": 6, "each": [6, 7], "appli": [1, 6], "name": [6, 7], "after": [6, 7], "concept": 6, "musician": 6, "variou": 6, "pedal": 6, "togeth": 6, "complet": [6, 7], "control": 6, "main": 6, "my_pedalboard": 6, "treat": 6, "output_audio": 6, "input_audio": 6, "input_audio_sampler": 6, "zero": [6, 7], "composit": 6, "type": [6, 7], "none": [6, 7], "A": [6, 7], "seri": [6, 7], "act": 6, "come": [6, 7], "method": [6, 7], "alias": 6, "__call__": 6, "entir": [6, 7], "input_arrai": 6, "numpi": [6, 7], "ndarrai": [6, 7], "sample_r": [1, 6, 7], "float": [6, 7], "buffer_s": [6, 7], "8192": 6, "bool": [6, 7], "true": [6, 7], "dtype": [6, 7], "float32": [1, 6, 7], "alia": 6, "end": [6, 7], "insert": 6, "index": 6, "specifi": [6, 7], "properti": [6, 7], "is_effect": 6, "iff": [6, 7], "is_instru": 6, "32": [6, 7], "bit": [6, 7], "64": [3, 6], "point": [6, 7], "return": [6, 7], "arrai": [6, 7], "were": 6, "expect": [6, 7], "insid": 6, "remain": [6, 7], "anoth": 6, "datatyp": [6, 7], "convert": [6, 7], "argument": [6, 7], "higher": 6, "flag": 6, "determin": [6, 7], "befor": [6, 7], "begin": [6, 7], "previou": 6, "my_plugin": 6, "invok": 6, "valu": [6, 7], "store": [6, 7], "g": 6, "line": [6, 7], "lfo": 6, "etc": [6, 7], "unchang": 6, "path_to_plugin_fil": 6, "str": [6, 7], "parameter_valu": 6, "dict": 6, "union": [6, 7], "plugin_nam": 6, "externalplugin": 6, "two": 6, "bundl": [5, 6], "dictionari": 6, "initi": [6, 7], "match": [6, 7], "report": 6, "normal": 6, "string": [6, 7], "identifi": 6, "These": 6, "multi": [6, 7], "except": [6, 7], "thrown": [6, 7], "vst3plugin": [2, 6], "audiounitplugin": [2, 6], "throw": [6, 7], "importerror": 6, "found": [6, 7], "runtimeerror": [6, 7], "audioprocessorparamet": 6, "parameter_nam": 6, "search_step": 6, "1000": 6, "differ": [6, 7], "implicit": 6, "my": 6, "cool": 6, "delay_time_m": 6, "foobar": 6, "attribut": [6, 7], "400": 6, "tri": 6, "guess": 6, "valid": 6, "instanti": 6, "alwai": [6, 7], "accur": [6, 7], "had": 6, "raw_valu": 6, "bound": [6, 7], "label": 6, "hz": [6, 7], "db": 6, "fail": 6, "midi_messag": 6, "durat": [1, 6, 7], "messag": [1, 2, 6], "sequenc": [], "must": [6, 7], "byte": [6, 7], "mido": [1, 6], "tupl": 6, "look": 6, "midi_byt": 6, "timestamp_in_second": 6, "worth": 6, "sent": 6, "timestamp": 6, "indic": [6, 7], "whose": 6, "greater": 6, "ignor": 6, "held": [], "decai": [], "non": [6, 7], "unavail": 6, "loadabl": 6, "plug": [6, 7], "Ins": 6, "compon": 6, "helper": [], "overload": [], "rais": [6, 7], "get_plugin_names_for_fil": 6, "filenam": [6, 7], "given": [6, 7], "scan": [6, 7], "present": [6, 7], "what": 6, "show_editor": 6, "ui": 6, "nativ": [6, 7], "keyboardinterrupt": [6, 7], "bit_depth": [6, 7], "reduc": 6, "depth": [6, 7], "lo": 6, "fi": 6, "vertic": 6, "resolut": 6, "uniqu": 6, "repres": [6, 7], "horizont": 6, "per": [6, 7], "quantiz": 6, "integ": [6, 7], "decim": 6, "onto": 6, "pedalboard_n": 6, "rate_hz": 6, "centre_delay_m": 6, "feedback": 6, "frequenc": 6, "respons": 6, "centr": 6, "get": 6, "classic": 6, "m": 6, "low": 6, "feeback": 6, "volum": 6, "flanger": 6, "lower": 6, "lot": 6, "vibrato": 6, "oscil": 6, "hertz": 6, "hard": [6, 7], "threshold": 6, "decibel": 6, "algorithm": [6, 7], "introduc": [6, 7], "nois": [1, 6], "gsmcompressor": 6, "impulse_response_filenam": 6, "suitabl": 6, "thing": 6, "simul": 6, "dry": 6, "drive_db": 6, "linear": [6, 7], "tanh": 6, "hyperbol": 6, "tangent": 6, "waveshap": 6, "harmon": 6, "pleas": 6, "produc": [6, 7], "roughli": 6, "equival": 6, "def": 6, "x": 6, "db_to_gain": 6, "windowedsinc": [6, 7], "degrad": 6, "gsm": 6, "full": 6, "emul": 6, "2g": 6, "cellular": 6, "phone": 6, "connect": 6, "fix": 6, "8khz": 6, "codec": [6, 7], "decreas": [6, 7], "amplifi": 6, "attenu": 6, "think": 6, "highshelffilt": 6, "cutoff_frequency_hz": 6, "440": 6, "q": 6, "7071067690849304": 6, "shelf": 6, "variabl": [6, 7], "abov": [6, 7], "cutoff": 6, "boost": 6, "first": [6, 7], "order": 6, "roll": 6, "6db": 6, "octav": 6, "3db": 6, "frac": 6, "sqrt": 6, "express": 6, "factor": 6, "further": [6, 7], "iirfilt": 6, "abstract": 6, "kind": 6, "infinit": 6, "impuls": 6, "iir": 6, "lowshelffilt": 6, "peakfilt": 6, "invert": 6, "flip": 6, "polar": 6, "audibl": 6, "own": [5, 6], "take": 6, "mathemat": 6, "ident": [6, 7], "cancel": 6, "origin": [6, 7], "lpf12": 6, "200": 6, "reson": 6, "drive": 6, "base": [6, 7], "moog": 6, "synthes": 6, "ladder": 6, "invent": 6, "dr": 6, "bob": 6, "1968": 6, "below": [6, 7], "side": [6, 7], "peak": 6, "architectur": 6, "bpf12": 6, "band": [5, 6], "lpf24": 6, "24": 6, "hpf24": 6, "4": [2, 6], "bpf24": 6, "simpl": 6, "standard": 6, "featur": 6, "clipper": 6, "707x": 6, "vbr_qualiti": 6, "lame": [5, 6, 7], "encod": [6, 7], "current": [6, 7], "vbr": 6, "better": 6, "32khz": 6, "48khz": 6, "unsupport": [6, 7], "noiseg": 6, "gate": 6, "attack": 6, "expand": 6, "notch": 6, "centre_frequency_hz": 6, "1300": 6, "stage": 6, "sweep": 6, "magnitud": [6, 7], "affect": 6, "chri": 6, "cannam": 6, "wonder": 6, "rubber": [5, 6], "stretch": 6, "gener": [5, 6], "plugincontain": 6, "intend": 6, "direct": [6, 7], "target_sample_r": [6, 7], "8000": 6, "downsampl": 6, "upsampl": 6, "zeroorderhold": 6, "lowest": 6, "fastest": [6, 7], "slightli": 6, "less": [6, 7], "noisi": 6, "simplest": 6, "catmullrom": 6, "moder": 6, "good": 6, "fast": 6, "lagrang": 6, "highest": 6, "slowest": [6, 7], "still": [6, 7], "mere": 6, "damp": 6, "33": 6, "dry_level": 6, "width": 6, "freeze_mod": 6, "stereo": [6, 7], "tune": 6, "freeverb": 6, "ccrma": 6, "stanford": 6, "edu": 6, "jo": 6, "pasp": 6, "steinberg": [5, 6], "gmbh": [5, 6], "build": 6, "arg0": [6, 7], "load_preset": 6, "preset_file_path": 6, "preset": 6, "vstpreset": 6, "decod": [6, 7], "handl": 7, "behind": 7, "scene": 7, "my_filenam": 7, "441_000": 7, "necessari": 7, "accomplish": 7, "readableaudiofil": 7, "find": [6, 7], "yourself": 7, "writeableaudiofil": 7, "resampledreadableaudiofil": 7, "probabl": 7, "cover": 7, "file_lik": 7, "binaryio": 7, "liter": 7, "16": 7, "readabl": 7, "writeabl": 7, "default": [6, 7], "unlik": 7, "typic": 7, "trail": 7, "b": 7, "redund": 7, "exist": 7, "seekabl": 7, "stringio": 7, "my_fil": 7, "first_ten_second": 7, "ogg_buff": 7, "bytesio": 7, "get_audio_buff": 7, "22_050": 7, "white_nois": 7, "np": [1, 7], "rand": [1, 7], "wav_buff": 7, "getvalu": 7, "someth": [6, 7], "160": 7, "kilobit": 7, "re": 7, "four": 7, "1024": 7, "constructor": 7, "actual": 7, "those": [6, 7], "512": 7, "allow_feedback": 7, "devic": 7, "microphon": 7, "headphon": 7, "manag": 7, "delet": 7, "del": 7, "synchron": 7, "ctrl": [6, 7], "under": [5, 7], "hood": 7, "concern": 7, "never": 7, "left": 7, "dangl": 7, "background": [6, 7], "__enter__": 7, "nasti": 7, "longer": 7, "reachabl": 7, "scope": 7, "continu": 7, "plai": 7, "forev": 7, "won": 7, "exit": 7, "easier": 7, "cleanup": 7, "v0": [6, 7], "immedi": 7, "send": 7, "__exit__": 7, "arg1": 7, "arg2": 7, "onc": [6, 7], "otherwis": 7, "wrap": 7, "vorbi": 7, "3g2": 7, "3gp": 7, "adt": 7, "aif": 7, "aifc": 7, "amr": 7, "bwf": 7, "caf": 7, "ec3": 7, "latm": 7, "loa": 7, "m4a": 7, "m4b": 7, "m4r": 7, "mov": 7, "mp1": 7, "mp2": 7, "mp4": 7, "mpa": 7, "mpeg": 7, "qt": 7, "sd2": 7, "snd": 7, "w64": 7, "xhe": 7, "get_supported_read_format": 7, "extens": 7, "certain": 7, "want": [1, 7], "too": 7, "num_fram": 7, "channel": 7, "posit": 7, "decept": 7, "hour": 7, "long": 7, "hand": 7, "megabyt": 7, "decompress": 7, "nearli": 7, "gigabyt": 7, "debug": 7, "problem": 7, "dimension": 7, "length": [6, 7], "fill": 7, "exact_duration_known": 7, "situat": [6, 7], "occur": 7, "minimum": 7, "0f": 7, "maximum": 7, "read_raw": 7, "int8": 7, "int16": 7, "int32": 7, "constant": 7, "seek": 7, "locat": 7, "futur": 7, "pointer": 7, "usabl": 7, "divid": 7, "overestim": 7, "detail": [2, 7], "exact": 7, "estim": 7, "bitrat": 7, "ever": 7, "file_dtyp": 7, "regardless": 7, "441": 7, "discrep": 7, "due": 7, "fact": 7, "header": [6, 7], "xing": 7, "info": 7, "finish": 7, "forc": 7, "pars": 7, "correct": 7, "60": [1, 6, 7], "assert": [6, 7], "num_sampl": 7, "behaviour": 7, "later": 7, "prior": 7, "version": [2, 6, 7], "lack": 7, "audio_fil": 7, "resampling_qu": 7, "22050": 7, "fraction": 7, "streamresampl": 7, "obtain": 7, "benefit": 7, "respect": 7, "push": 7, "optim": 7, "retain": 7, "accuraci": 7, "22": 7, "050": 7, "source_sample_r": 7, "flush": 7, "input_lat": 7, "suppli": 7, "get_supported_write_format": 7, "filename_or_file_lik": 7, "assum": 7, "level": 7, "numer": 7, "128": 7, "256": 7, "advanc": 7, "v2": 7, "best": 7, "happen": [6, 7], "reliabl": 7, "float64": [6, 7], "typeerror": 7, "far": 7, "increment": 7, "kbp": 7, "v9": 7, "arg": [], "kwarg": [], "self": [], "kwd": [], "extern": 6, "part": [1, 6, 7], "conveni": [1, 6, 7], "note_on": [1, 6], "note_off": [1, 6], "magical8bitplug2": 1, "As": 2, "amd64": 3, "x86": 3, "contribut": [], "copyright": 5, "2021": 5, "2023": [], "ab": 5, "gnu": 5, "public": 5, "v3": 5, "carri": 5, "dual": 5, "commerci": 5, "sdk": 5, "media": 5, "technologi": 5, "gplv2": 5, "newer": 5, "libmp3lam": 5, "lgplv2": 5, "upgrad": 5, "inclus": 5, "permit": 5, "libgsm": 5, "isc": 5, "regist": 5, "trademark": 5, "e4m3t": [], "precis": 6, "expon": [], "e4m3": [], "from_char": [], "mantissa": [], "sign": [], "setview": [], "unord": [], "map": 1, "search": [], "member": [], "euclidean": [], "cosin": [], "innerproduct": [], "storagedatatyp": [], "vector": [], "float8": [], "448": [], "inspir": [], "paper": [], "fp8": [], "deep": [], "micikeviciu": [], "et": [], "al": [], "arxiv": [], "2209": [], "05433": [], "musllinux": 3, "initialization_timeout": 6, "spend": 6, "asynchron": 6, "startup": 6, "larger": 6, "properli": 6, "01": 7, "00": 7, "time_stretch": [5, 6], "stretch_factor": 6, "pitch_shift_in_semiton": 6, "shorten": 6, "doubl": 6, "_speed_": [], "halv": 6, "_length_": [], "fo": [], "dure": [6, 7], "independ": 6, "worri": 6, "thei": 6, "transient_mod": 6, "crisp": 6, "transient_detector": 6, "compound": 6, "retain_phase_continu": 6, "use_long_fft_window": 6, "use_time_domain_smooth": 6, "preserve_form": 6, "behavior": 6, "stretcher": 6, "transient": 6, "percuss": 6, "smooth": 6, "phase": 6, "adjac": 6, "bin": 6, "kept": 6, "similar": 6, "softer": 6, "phasier": 6, "fourier": 6, "clariti": 6, "crisper": 6, "sharp": 6, "substanti": 6, "profil": 6, "formant": 6, "voic": [3, 6], "grain": 6, "high_qual": 6, "translat": 3, "close_ev": 6, "event": 6, "editor": 6, "programmat": 6, "button": 6, "keyboard": 6, "shortcut": 6, "close_window_ev": 6, "other_thread": 6, "should_close_window_ev": [], "should_close_window": 6, "sr": [1, 7], "48000": 1, "welcom": [], "whatev": 1, "here": 1, "dataset": 1, "train": 1, "somehow": 1, "from_tensor_slic": 1, "lambda": 1, "numpy_funct": 1, "dummi": 1, "ml": 1, "kera": 1, "sequenti": 1, "layer": 1, "inputlay": 1, "input_shap": 1, "dens": 1, "loss": 1, "mse": 1, "fit": 1, "batch": 1, "epoch": 1, "hang": 6, "incorrect": 6, "outright": 6, "incompat": 6, "externalpluginreloadtyp": [], "unknown": [], "reinstanti": [], "clearsaudioonreset": [], "correctli": [], "persistsaudioonreset": [], "memoryview": 7, "py": [], "effici": 7, "consum": 7, "arbitrari": 7, "recommend": 7, "buf": 7, "mp3_buffer": 7, "flac_buff": 7, "categori": 6, "fall": 6, "descriptive_nam": 6, "descript": 6, "field": 6, "altern": 6, "has_shared_contain": 6, "again": 6, "manufacturer_nam": 6, "manufactur": 6, "auv3": 6, "appex": 6, "2024": 5, "raw_stat": 6, "plistlib": 6, "invalid": 6, "xml": 6, "prefix": 6, "suffix": 6, "null": 6, "squar": [], "abl": 7, "infer": 7, "dimens": 7, "correspond": 7, "layout": 7, "previous": [], "cach": 7, "writableaudiofil": 7, "recent": 7, "disambigu": 7, "But": 7, "And": 7, "hint": 7, "noth": 7, "anyth": 7, "slower": 6, "024": 6, "23": 6, "millisecond": 6, "fftw": 5, "11025hz": 6, "12khz": 6, "16khz": 6, "22050hz": 6, "24khz": 6}, "objects": {"": [[6, 0, 0, "-", "pedalboard"]], "pedalboard": [[6, 1, 1, "", "AudioProcessorParameter"], [6, 1, 1, "", "AudioUnitPlugin"], [6, 1, 1, "", "Bitcrush"], [6, 1, 1, "", "Chain"], [6, 1, 1, "", "Chorus"], [6, 1, 1, "", "Clipping"], [6, 1, 1, "", "Compressor"], [6, 1, 1, "", "Convolution"], [6, 1, 1, "", "Delay"], [6, 1, 1, "", "Distortion"], [6, 1, 1, "", "ExternalPlugin"], [6, 1, 1, "", "GSMFullRateCompressor"], [6, 1, 1, "", "Gain"], [6, 1, 1, "", "HighShelfFilter"], [6, 1, 1, "", "HighpassFilter"], [6, 1, 1, "", "IIRFilter"], [6, 1, 1, "", "Invert"], [6, 1, 1, "", "LadderFilter"], [6, 1, 1, "", "Limiter"], [6, 1, 1, "", "LowShelfFilter"], [6, 1, 1, "", "LowpassFilter"], [6, 1, 1, "", "MP3Compressor"], [6, 1, 1, "", "Mix"], [6, 1, 1, "", "NoiseGate"], [6, 1, 1, "", "PeakFilter"], [6, 1, 1, "", "Pedalboard"], [6, 1, 1, "", "Phaser"], [6, 1, 1, "", "PitchShift"], [6, 1, 1, "", "Plugin"], [6, 1, 1, "", "PluginContainer"], [6, 1, 1, "", "Resample"], [6, 1, 1, "", "Reverb"], [6, 1, 1, "", "VST3Plugin"], [7, 0, 0, "-", "io"], [6, 5, 1, "", "load_plugin"], [6, 5, 1, "", "time_stretch"]], "pedalboard.AudioProcessorParameter": [[6, 2, 1, "", "label"], [6, 2, 1, "", "units"]], "pedalboard.AudioUnitPlugin": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "category"], [6, 2, 1, "", "descriptive_name"], [6, 3, 1, "", "get_plugin_names_for_file"], [6, 2, 1, "", "has_shared_container"], [6, 2, 1, "", "identifier"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 2, 1, "", "manufacturer_name"], [6, 2, 1, "", "name"], [6, 3, 1, "", "process"], [6, 2, 1, "", "raw_state"], [6, 3, 1, "", "reset"], [6, 3, 1, "", "show_editor"], [6, 2, 1, "", "version"]], "pedalboard.Bitcrush": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "bit_depth"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.Chain": [[6, 3, 1, "", "__call__"], [6, 3, 1, "", "append"], [6, 3, 1, "", "insert"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "remove"], [6, 3, 1, "", "reset"]], "pedalboard.Chorus": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 2, 1, "", "rate_hz"], [6, 3, 1, "", "reset"]], "pedalboard.Clipping": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.Compressor": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.Convolution": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.Delay": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.Distortion": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.ExternalPlugin": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.GSMFullRateCompressor": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.Gain": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.HighShelfFilter": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.HighpassFilter": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.IIRFilter": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.Invert": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.LadderFilter": [[6, 1, 1, "", "Mode"], [6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.LadderFilter.Mode": [[6, 4, 1, "", "BPF12"], [6, 4, 1, "", "BPF24"], [6, 4, 1, "", "HPF12"], [6, 4, 1, "", "HPF24"], [6, 4, 1, "", "LPF12"], [6, 4, 1, "", "LPF24"]], "pedalboard.Limiter": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.LowShelfFilter": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.LowpassFilter": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.MP3Compressor": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.Mix": [[6, 3, 1, "", "__call__"], [6, 3, 1, "", "append"], [6, 3, 1, "", "insert"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "remove"], [6, 3, 1, "", "reset"]], "pedalboard.NoiseGate": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.PeakFilter": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.Pedalboard": [[6, 3, 1, "", "__call__"], [6, 3, 1, "", "append"], [6, 3, 1, "", "insert"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "remove"], [6, 3, 1, "", "reset"]], "pedalboard.Phaser": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.PitchShift": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.Plugin": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.PluginContainer": [[6, 3, 1, "", "__call__"], [6, 3, 1, "", "append"], [6, 3, 1, "", "insert"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "remove"], [6, 3, 1, "", "reset"]], "pedalboard.Resample": [[6, 1, 1, "", "Quality"], [6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 2, 1, "", "quality"], [6, 3, 1, "", "reset"], [6, 2, 1, "", "target_sample_rate"]], "pedalboard.Resample.Quality": [[6, 4, 1, "", "CatmullRom"], [6, 4, 1, "", "Lagrange"], [6, 4, 1, "", "Linear"], [6, 4, 1, "", "WindowedSinc"], [6, 4, 1, "", "ZeroOrderHold"]], "pedalboard.Reverb": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "process"], [6, 3, 1, "", "reset"]], "pedalboard.VST3Plugin": [[6, 3, 1, "", "__call__"], [6, 2, 1, "", "category"], [6, 2, 1, "", "descriptive_name"], [6, 3, 1, "", "get_plugin_names_for_file"], [6, 2, 1, "", "has_shared_container"], [6, 2, 1, "", "identifier"], [6, 2, 1, "", "is_effect"], [6, 2, 1, "", "is_instrument"], [6, 3, 1, "", "load_preset"], [6, 2, 1, "", "manufacturer_name"], [6, 2, 1, "", "name"], [6, 3, 1, "", "process"], [6, 2, 1, "", "raw_state"], [6, 3, 1, "", "reset"], [6, 3, 1, "", "show_editor"], [6, 2, 1, "", "version"]], "pedalboard.io": [[7, 1, 1, "", "AudioFile"], [7, 1, 1, "", "AudioStream"], [7, 1, 1, "", "ReadableAudioFile"], [7, 1, 1, "", "ResampledReadableAudioFile"], [7, 1, 1, "", "StreamResampler"], [7, 1, 1, "", "WriteableAudioFile"]], "pedalboard.io.AudioFile": [[7, 3, 1, "", "encode"]], "pedalboard.io.AudioStream": [[7, 3, 1, "", "__enter__"], [7, 3, 1, "", "__exit__"], [7, 2, 1, "", "plugins"], [7, 3, 1, "", "run"], [7, 2, 1, "", "running"]], "pedalboard.io.ReadableAudioFile": [[7, 3, 1, "", "__enter__"], [7, 3, 1, "", "__exit__"], [7, 3, 1, "", "close"], [7, 2, 1, "", "closed"], [7, 2, 1, "", "duration"], [7, 2, 1, "", "exact_duration_known"], [7, 2, 1, "", "file_dtype"], [7, 2, 1, "", "frames"], [7, 2, 1, "", "name"], [7, 2, 1, "", "num_channels"], [7, 3, 1, "", "read"], [7, 3, 1, "", "read_raw"], [7, 3, 1, "", "resampled_to"], [7, 2, 1, "", "samplerate"], [7, 3, 1, "", "seek"], [7, 3, 1, "", "seekable"], [7, 3, 1, "", "tell"]], "pedalboard.io.ResampledReadableAudioFile": [[7, 3, 1, "", "__enter__"], [7, 3, 1, "", "__exit__"], [7, 3, 1, "", "close"], [7, 2, 1, "", "closed"], [7, 2, 1, "", "duration"], [7, 2, 1, "", "exact_duration_known"], [7, 2, 1, "", "file_dtype"], [7, 2, 1, "", "frames"], [7, 2, 1, "", "name"], [7, 2, 1, "", "num_channels"], [7, 3, 1, "", "read"], [7, 2, 1, "", "resampling_quality"], [7, 2, 1, "", "samplerate"], [7, 3, 1, "", "seek"], [7, 3, 1, "", "seekable"], [7, 3, 1, "", "tell"]], "pedalboard.io.StreamResampler": [[7, 2, 1, "", "input_latency"], [7, 2, 1, "", "num_channels"], [7, 3, 1, "", "process"], [7, 2, 1, "", "quality"], [7, 3, 1, "", "reset"], [7, 2, 1, "", "source_sample_rate"], [7, 2, 1, "", "target_sample_rate"]], "pedalboard.io.WriteableAudioFile": [[7, 3, 1, "", "close"], [7, 2, 1, "", "closed"], [7, 2, 1, "", "file_dtype"], [7, 3, 1, "", "flush"], [7, 2, 1, "", "frames"], [7, 2, 1, "", "num_channels"], [7, 2, 1, "", "quality"], [7, 2, 1, "", "samplerate"], [7, 3, 1, "", "tell"], [7, 3, 1, "", "write"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:property", "3": "py:method", "4": "py:attribute", "5": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "property", "Python property"], "3": ["py", "method", "Python method"], "4": ["py", "attribute", "Python attribute"], "5": ["py", "function", "Python function"]}, "titleterms": {"plugin": [0, 1, 2, 4], "compat": [0, 3], "exampl": 1, "quick": 1, "start": 1, "make": 1, "guitar": 1, "style": 1, "pedalboard": [1, 2, 4, 6, 7], "us": [1, 2], "vst3": 1, "audio": [1, 2], "unit": 1, "creat": 1, "parallel": 1, "effect": [1, 2], "chain": 1, "run": 1, "live": [1, 2], "frequent": 2, "ask": 2, "question": 2, "can": 2, "real": 2, "time": 2, "doe": 2, "support": 2, "chang": 2, "": 2, "paramet": 2, "over": 2, "vst": 2, "instrument": [1, 2], "instead": 2, "accept": 2, "midi": 2, "featur": 3, "instal": 3, "refer": 3, "document": 3, "intern": 4, "ad": 4, "new": 4, "built": 4, "design": 4, "consider": 4, "licens": 5, "cite": [], "The": [6, 7], "api": [6, 7], "io": 7, "process": [], "other": [], "argument": [], "contribut": [], "voyag": [], "tf": 1, "data": 1, "pipelin": 1}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx": 57}, "alltitles": {"Plugin Compatibility": [[0, "plugin-compatibility"]], "Examples": [[1, "examples"]], "Quick start": [[1, "quick-start"]], "Making a guitar-style pedalboard": [[1, "making-a-guitar-style-pedalboard"]], "Using VST3\u00ae or Audio Unit instrument and effect plugins": [[1, "using-vst3-or-audio-unit-instrument-and-effect-plugins"]], "Creating parallel effects chains": [[1, "creating-parallel-effects-chains"]], "Running Pedalboard on Live Audio": [[1, "running-pedalboard-on-live-audio"]], "Using Pedalboard in tf.data Pipelines": [[1, "using-pedalboard-in-tf-data-pipelines"]], "Frequently Asked Questions": [[2, "frequently-asked-questions"]], "Can Pedalboard be used with live (real-time) audio?": [[2, "can-pedalboard-be-used-with-live-real-time-audio"]], "Does Pedalboard support changing a plugin\u2019s parameters over time?": [[2, "does-pedalboard-support-changing-a-plugin-s-parameters-over-time"]], "Can Pedalboard be used with VST instruments, instead of effects?": [[2, "can-pedalboard-be-used-with-vst-instruments-instead-of-effects"]], "Can Pedalboard plugins accept MIDI?": [[2, "can-pedalboard-plugins-accept-midi"]], "Features": [[3, "features"]], "Installation": [[3, "installation"]], "Compatibility": [[3, "compatibility"]], "Reference": [[3, "reference"]], "Documentation": [[3, "documentation"]], "Pedalboard Internals": [[4, "pedalboard-internals"]], "Adding new built-in Pedalboard plugins": [[4, "adding-new-built-in-pedalboard-plugins"]], "Design considerations": [[4, "design-considerations"]], "License": [[5, "license"]], "The pedalboard API": [[6, "the-pedalboard-api"]], "The pedalboard.io API": [[7, "the-pedalboard-io-api"]]}, "indexentries": {"audioprocessorparameter (class in pedalboard)": [[6, "pedalboard.AudioProcessorParameter"]], "audiounitplugin (class in pedalboard)": [[6, "pedalboard.AudioUnitPlugin"]], "bpf12 (pedalboard.ladderfilter.mode attribute)": [[6, "pedalboard.LadderFilter.Mode.BPF12"]], "bpf24 (pedalboard.ladderfilter.mode attribute)": [[6, "pedalboard.LadderFilter.Mode.BPF24"]], "bitcrush (class in pedalboard)": [[6, "pedalboard.Bitcrush"]], "catmullrom (pedalboard.resample.quality attribute)": [[6, "pedalboard.Resample.Quality.CatmullRom"]], "chain (class in pedalboard)": [[6, "pedalboard.Chain"]], "chorus (class in pedalboard)": [[6, "pedalboard.Chorus"]], "clipping (class in pedalboard)": [[6, "pedalboard.Clipping"]], "compressor (class in pedalboard)": [[6, "pedalboard.Compressor"]], "convolution (class in pedalboard)": [[6, "pedalboard.Convolution"]], "delay (class in pedalboard)": [[6, "pedalboard.Delay"]], "distortion (class in pedalboard)": [[6, "pedalboard.Distortion"]], "externalplugin (class in pedalboard)": [[6, "pedalboard.ExternalPlugin"]], "gsmfullratecompressor (class in pedalboard)": [[6, "pedalboard.GSMFullRateCompressor"]], "gain (class in pedalboard)": [[6, "pedalboard.Gain"]], "hpf12 (pedalboard.ladderfilter.mode attribute)": [[6, "pedalboard.LadderFilter.Mode.HPF12"]], "hpf24 (pedalboard.ladderfilter.mode attribute)": [[6, "pedalboard.LadderFilter.Mode.HPF24"]], "highshelffilter (class in pedalboard)": [[6, "pedalboard.HighShelfFilter"]], "highpassfilter (class in pedalboard)": [[6, "pedalboard.HighpassFilter"]], "iirfilter (class in pedalboard)": [[6, "pedalboard.IIRFilter"]], "invert (class in pedalboard)": [[6, "pedalboard.Invert"]], "lpf12 (pedalboard.ladderfilter.mode attribute)": [[6, "pedalboard.LadderFilter.Mode.LPF12"]], "lpf24 (pedalboard.ladderfilter.mode attribute)": [[6, "pedalboard.LadderFilter.Mode.LPF24"]], "ladderfilter (class in pedalboard)": [[6, "pedalboard.LadderFilter"]], "ladderfilter.mode (class in pedalboard)": [[6, "pedalboard.LadderFilter.Mode"]], "lagrange (pedalboard.resample.quality attribute)": [[6, "pedalboard.Resample.Quality.Lagrange"]], "limiter (class in pedalboard)": [[6, "pedalboard.Limiter"]], "linear (pedalboard.resample.quality attribute)": [[6, "pedalboard.Resample.Quality.Linear"]], "lowshelffilter (class in pedalboard)": [[6, "pedalboard.LowShelfFilter"]], "lowpassfilter (class in pedalboard)": [[6, "pedalboard.LowpassFilter"]], "mp3compressor (class in pedalboard)": [[6, "pedalboard.MP3Compressor"]], "mix (class in pedalboard)": [[6, "pedalboard.Mix"]], "noisegate (class in pedalboard)": [[6, "pedalboard.NoiseGate"]], "peakfilter (class in pedalboard)": [[6, "pedalboard.PeakFilter"]], "pedalboard (class in pedalboard)": [[6, "pedalboard.Pedalboard"]], "phaser (class in pedalboard)": [[6, "pedalboard.Phaser"]], "pitchshift (class in pedalboard)": [[6, "pedalboard.PitchShift"]], "plugin (class in pedalboard)": [[6, "pedalboard.Plugin"]], "plugincontainer (class in pedalboard)": [[6, "pedalboard.PluginContainer"]], "resample (class in pedalboard)": [[6, "pedalboard.Resample"]], "resample.quality (class in pedalboard)": [[6, "pedalboard.Resample.Quality"]], "reverb (class in pedalboard)": [[6, "pedalboard.Reverb"]], "vst3plugin (class in pedalboard)": [[6, "pedalboard.VST3Plugin"]], "windowedsinc (pedalboard.resample.quality attribute)": [[6, "pedalboard.Resample.Quality.WindowedSinc"]], "zeroorderhold (pedalboard.resample.quality attribute)": [[6, "pedalboard.Resample.Quality.ZeroOrderHold"]], "__call__() (pedalboard.audiounitplugin method)": [[6, "pedalboard.AudioUnitPlugin.__call__"]], "__call__() (pedalboard.bitcrush method)": [[6, "pedalboard.Bitcrush.__call__"]], "__call__() (pedalboard.chain method)": [[6, "pedalboard.Chain.__call__"]], "__call__() (pedalboard.chorus method)": [[6, "pedalboard.Chorus.__call__"]], "__call__() (pedalboard.clipping method)": [[6, "pedalboard.Clipping.__call__"]], "__call__() (pedalboard.compressor method)": [[6, "pedalboard.Compressor.__call__"]], "__call__() (pedalboard.convolution method)": [[6, "pedalboard.Convolution.__call__"]], "__call__() (pedalboard.delay method)": [[6, "pedalboard.Delay.__call__"]], "__call__() (pedalboard.distortion method)": [[6, "pedalboard.Distortion.__call__"]], "__call__() (pedalboard.externalplugin method)": [[6, "pedalboard.ExternalPlugin.__call__"]], "__call__() (pedalboard.gsmfullratecompressor method)": [[6, "pedalboard.GSMFullRateCompressor.__call__"]], "__call__() (pedalboard.gain method)": [[6, "pedalboard.Gain.__call__"]], "__call__() (pedalboard.highshelffilter method)": [[6, "pedalboard.HighShelfFilter.__call__"]], "__call__() (pedalboard.highpassfilter method)": [[6, "pedalboard.HighpassFilter.__call__"]], "__call__() (pedalboard.iirfilter method)": [[6, "pedalboard.IIRFilter.__call__"]], "__call__() (pedalboard.invert method)": [[6, "pedalboard.Invert.__call__"]], "__call__() (pedalboard.ladderfilter method)": [[6, "pedalboard.LadderFilter.__call__"]], "__call__() (pedalboard.limiter method)": [[6, "pedalboard.Limiter.__call__"]], "__call__() (pedalboard.lowshelffilter method)": [[6, "pedalboard.LowShelfFilter.__call__"]], "__call__() (pedalboard.lowpassfilter method)": [[6, "pedalboard.LowpassFilter.__call__"]], "__call__() (pedalboard.mp3compressor method)": [[6, "pedalboard.MP3Compressor.__call__"]], "__call__() (pedalboard.mix method)": [[6, "pedalboard.Mix.__call__"]], "__call__() (pedalboard.noisegate method)": [[6, "pedalboard.NoiseGate.__call__"]], "__call__() (pedalboard.peakfilter method)": [[6, "pedalboard.PeakFilter.__call__"]], "__call__() (pedalboard.pedalboard method)": [[6, "pedalboard.Pedalboard.__call__"]], "__call__() (pedalboard.phaser method)": [[6, "pedalboard.Phaser.__call__"]], "__call__() (pedalboard.pitchshift method)": [[6, "pedalboard.PitchShift.__call__"]], "__call__() (pedalboard.plugin method)": [[6, "pedalboard.Plugin.__call__"]], "__call__() (pedalboard.plugincontainer method)": [[6, "pedalboard.PluginContainer.__call__"]], "__call__() (pedalboard.resample method)": [[6, "pedalboard.Resample.__call__"]], "__call__() (pedalboard.reverb method)": [[6, "pedalboard.Reverb.__call__"]], "__call__() (pedalboard.vst3plugin method)": [[6, "pedalboard.VST3Plugin.__call__"]], "append() (pedalboard.chain method)": [[6, "pedalboard.Chain.append"]], "append() (pedalboard.mix method)": [[6, "pedalboard.Mix.append"]], "append() (pedalboard.pedalboard method)": [[6, "pedalboard.Pedalboard.append"]], "append() (pedalboard.plugincontainer method)": [[6, "pedalboard.PluginContainer.append"]], "bit_depth (pedalboard.bitcrush property)": [[6, "pedalboard.Bitcrush.bit_depth"]], "category (pedalboard.audiounitplugin property)": [[6, "pedalboard.AudioUnitPlugin.category"]], "category (pedalboard.vst3plugin property)": [[6, "pedalboard.VST3Plugin.category"]], "descriptive_name (pedalboard.audiounitplugin property)": [[6, "pedalboard.AudioUnitPlugin.descriptive_name"]], "descriptive_name (pedalboard.vst3plugin property)": [[6, "pedalboard.VST3Plugin.descriptive_name"]], "get_plugin_names_for_file() (pedalboard.audiounitplugin static method)": [[6, "pedalboard.AudioUnitPlugin.get_plugin_names_for_file"]], "get_plugin_names_for_file() (pedalboard.vst3plugin static method)": [[6, "pedalboard.VST3Plugin.get_plugin_names_for_file"]], "has_shared_container (pedalboard.audiounitplugin property)": [[6, "pedalboard.AudioUnitPlugin.has_shared_container"]], "has_shared_container (pedalboard.vst3plugin property)": [[6, "pedalboard.VST3Plugin.has_shared_container"]], "identifier (pedalboard.audiounitplugin property)": [[6, "pedalboard.AudioUnitPlugin.identifier"]], "identifier (pedalboard.vst3plugin property)": [[6, "pedalboard.VST3Plugin.identifier"]], "insert() (pedalboard.chain method)": [[6, "pedalboard.Chain.insert"]], "insert() (pedalboard.mix method)": [[6, "pedalboard.Mix.insert"]], "insert() (pedalboard.pedalboard method)": [[6, "pedalboard.Pedalboard.insert"]], "insert() (pedalboard.plugincontainer method)": [[6, "pedalboard.PluginContainer.insert"]], "is_effect (pedalboard.audiounitplugin property)": [[6, "pedalboard.AudioUnitPlugin.is_effect"]], "is_effect (pedalboard.bitcrush property)": [[6, "pedalboard.Bitcrush.is_effect"]], "is_effect (pedalboard.chain property)": [[6, "pedalboard.Chain.is_effect"]], "is_effect (pedalboard.chorus property)": [[6, "pedalboard.Chorus.is_effect"]], "is_effect (pedalboard.clipping property)": [[6, "pedalboard.Clipping.is_effect"]], "is_effect (pedalboard.compressor property)": [[6, "pedalboard.Compressor.is_effect"]], "is_effect (pedalboard.convolution property)": [[6, "pedalboard.Convolution.is_effect"]], "is_effect (pedalboard.delay property)": [[6, "pedalboard.Delay.is_effect"]], "is_effect (pedalboard.distortion property)": [[6, "pedalboard.Distortion.is_effect"]], "is_effect (pedalboard.externalplugin property)": [[6, "pedalboard.ExternalPlugin.is_effect"]], "is_effect (pedalboard.gsmfullratecompressor property)": [[6, "pedalboard.GSMFullRateCompressor.is_effect"]], "is_effect (pedalboard.gain property)": [[6, "pedalboard.Gain.is_effect"]], "is_effect (pedalboard.highshelffilter property)": [[6, "pedalboard.HighShelfFilter.is_effect"]], "is_effect (pedalboard.highpassfilter property)": [[6, "pedalboard.HighpassFilter.is_effect"]], "is_effect (pedalboard.iirfilter property)": [[6, "pedalboard.IIRFilter.is_effect"]], "is_effect (pedalboard.invert property)": [[6, "pedalboard.Invert.is_effect"]], "is_effect (pedalboard.ladderfilter property)": [[6, "pedalboard.LadderFilter.is_effect"]], "is_effect (pedalboard.limiter property)": [[6, "pedalboard.Limiter.is_effect"]], "is_effect (pedalboard.lowshelffilter property)": [[6, "pedalboard.LowShelfFilter.is_effect"]], "is_effect (pedalboard.lowpassfilter property)": [[6, "pedalboard.LowpassFilter.is_effect"]], "is_effect (pedalboard.mp3compressor property)": [[6, "pedalboard.MP3Compressor.is_effect"]], "is_effect (pedalboard.mix property)": [[6, "pedalboard.Mix.is_effect"]], "is_effect (pedalboard.noisegate property)": [[6, "pedalboard.NoiseGate.is_effect"]], "is_effect (pedalboard.peakfilter property)": [[6, "pedalboard.PeakFilter.is_effect"]], "is_effect (pedalboard.pedalboard property)": [[6, "pedalboard.Pedalboard.is_effect"]], "is_effect (pedalboard.phaser property)": [[6, "pedalboard.Phaser.is_effect"]], "is_effect (pedalboard.pitchshift property)": [[6, "pedalboard.PitchShift.is_effect"]], "is_effect (pedalboard.plugin property)": [[6, "pedalboard.Plugin.is_effect"]], "is_effect (pedalboard.plugincontainer property)": [[6, "pedalboard.PluginContainer.is_effect"]], "is_effect (pedalboard.resample property)": [[6, "pedalboard.Resample.is_effect"]], "is_effect (pedalboard.reverb property)": [[6, "pedalboard.Reverb.is_effect"]], "is_effect (pedalboard.vst3plugin property)": [[6, "pedalboard.VST3Plugin.is_effect"]], "is_instrument (pedalboard.audiounitplugin property)": [[6, "pedalboard.AudioUnitPlugin.is_instrument"]], "is_instrument (pedalboard.bitcrush property)": [[6, "pedalboard.Bitcrush.is_instrument"]], "is_instrument (pedalboard.chain property)": [[6, "pedalboard.Chain.is_instrument"]], "is_instrument (pedalboard.chorus property)": [[6, "pedalboard.Chorus.is_instrument"]], "is_instrument (pedalboard.clipping property)": [[6, "pedalboard.Clipping.is_instrument"]], "is_instrument (pedalboard.compressor property)": [[6, "pedalboard.Compressor.is_instrument"]], "is_instrument (pedalboard.convolution property)": [[6, "pedalboard.Convolution.is_instrument"]], "is_instrument (pedalboard.delay property)": [[6, "pedalboard.Delay.is_instrument"]], "is_instrument (pedalboard.distortion property)": [[6, "pedalboard.Distortion.is_instrument"]], "is_instrument (pedalboard.externalplugin property)": [[6, "pedalboard.ExternalPlugin.is_instrument"]], "is_instrument (pedalboard.gsmfullratecompressor property)": [[6, "pedalboard.GSMFullRateCompressor.is_instrument"]], "is_instrument (pedalboard.gain property)": [[6, "pedalboard.Gain.is_instrument"]], "is_instrument (pedalboard.highshelffilter property)": [[6, "pedalboard.HighShelfFilter.is_instrument"]], "is_instrument (pedalboard.highpassfilter property)": [[6, "pedalboard.HighpassFilter.is_instrument"]], "is_instrument (pedalboard.iirfilter property)": [[6, "pedalboard.IIRFilter.is_instrument"]], "is_instrument (pedalboard.invert property)": [[6, "pedalboard.Invert.is_instrument"]], "is_instrument (pedalboard.ladderfilter property)": [[6, "pedalboard.LadderFilter.is_instrument"]], "is_instrument (pedalboard.limiter property)": [[6, "pedalboard.Limiter.is_instrument"]], "is_instrument (pedalboard.lowshelffilter property)": [[6, "pedalboard.LowShelfFilter.is_instrument"]], "is_instrument (pedalboard.lowpassfilter property)": [[6, "pedalboard.LowpassFilter.is_instrument"]], "is_instrument (pedalboard.mp3compressor property)": [[6, "pedalboard.MP3Compressor.is_instrument"]], "is_instrument (pedalboard.mix property)": [[6, "pedalboard.Mix.is_instrument"]], "is_instrument (pedalboard.noisegate property)": [[6, "pedalboard.NoiseGate.is_instrument"]], "is_instrument (pedalboard.peakfilter property)": [[6, "pedalboard.PeakFilter.is_instrument"]], "is_instrument (pedalboard.pedalboard property)": [[6, "pedalboard.Pedalboard.is_instrument"]], "is_instrument (pedalboard.phaser property)": [[6, "pedalboard.Phaser.is_instrument"]], "is_instrument (pedalboard.pitchshift property)": [[6, "pedalboard.PitchShift.is_instrument"]], "is_instrument (pedalboard.plugin property)": [[6, "pedalboard.Plugin.is_instrument"]], "is_instrument (pedalboard.plugincontainer property)": [[6, "pedalboard.PluginContainer.is_instrument"]], "is_instrument (pedalboard.resample property)": [[6, "pedalboard.Resample.is_instrument"]], "is_instrument (pedalboard.reverb property)": [[6, "pedalboard.Reverb.is_instrument"]], "is_instrument (pedalboard.vst3plugin property)": [[6, "pedalboard.VST3Plugin.is_instrument"]], "label (pedalboard.audioprocessorparameter property)": [[6, "pedalboard.AudioProcessorParameter.label"]], "load_plugin() (in module pedalboard)": [[6, "pedalboard.load_plugin"]], "load_preset() (pedalboard.vst3plugin method)": [[6, "pedalboard.VST3Plugin.load_preset"]], "manufacturer_name (pedalboard.audiounitplugin property)": [[6, "pedalboard.AudioUnitPlugin.manufacturer_name"]], "manufacturer_name (pedalboard.vst3plugin property)": [[6, "pedalboard.VST3Plugin.manufacturer_name"]], "module": [[6, "module-pedalboard"], [7, "module-pedalboard.io"]], "name (pedalboard.audiounitplugin property)": [[6, "pedalboard.AudioUnitPlugin.name"]], "name (pedalboard.vst3plugin property)": [[6, "pedalboard.VST3Plugin.name"]], "pedalboard": [[6, "module-pedalboard"]], "process() (pedalboard.audiounitplugin method)": [[6, "pedalboard.AudioUnitPlugin.process"]], "process() (pedalboard.bitcrush method)": [[6, "pedalboard.Bitcrush.process"]], "process() (pedalboard.chain method)": [[6, "pedalboard.Chain.process"]], "process() (pedalboard.chorus method)": [[6, "pedalboard.Chorus.process"]], "process() (pedalboard.clipping method)": [[6, "pedalboard.Clipping.process"]], "process() (pedalboard.compressor method)": [[6, "pedalboard.Compressor.process"]], "process() (pedalboard.convolution method)": [[6, "pedalboard.Convolution.process"]], "process() (pedalboard.delay method)": [[6, "pedalboard.Delay.process"]], "process() (pedalboard.distortion method)": [[6, "pedalboard.Distortion.process"]], "process() (pedalboard.externalplugin method)": [[6, "pedalboard.ExternalPlugin.process"]], "process() (pedalboard.gsmfullratecompressor method)": [[6, "pedalboard.GSMFullRateCompressor.process"]], "process() (pedalboard.gain method)": [[6, "pedalboard.Gain.process"]], "process() (pedalboard.highshelffilter method)": [[6, "pedalboard.HighShelfFilter.process"]], "process() (pedalboard.highpassfilter method)": [[6, "pedalboard.HighpassFilter.process"]], "process() (pedalboard.iirfilter method)": [[6, "pedalboard.IIRFilter.process"]], "process() (pedalboard.invert method)": [[6, "pedalboard.Invert.process"]], "process() (pedalboard.ladderfilter method)": [[6, "pedalboard.LadderFilter.process"]], "process() (pedalboard.limiter method)": [[6, "pedalboard.Limiter.process"]], "process() (pedalboard.lowshelffilter method)": [[6, "pedalboard.LowShelfFilter.process"]], "process() (pedalboard.lowpassfilter method)": [[6, "pedalboard.LowpassFilter.process"]], "process() (pedalboard.mp3compressor method)": [[6, "pedalboard.MP3Compressor.process"]], "process() (pedalboard.mix method)": [[6, "pedalboard.Mix.process"]], "process() (pedalboard.noisegate method)": [[6, "pedalboard.NoiseGate.process"]], "process() (pedalboard.peakfilter method)": [[6, "pedalboard.PeakFilter.process"]], "process() (pedalboard.pedalboard method)": [[6, "pedalboard.Pedalboard.process"]], "process() (pedalboard.phaser method)": [[6, "pedalboard.Phaser.process"]], "process() (pedalboard.pitchshift method)": [[6, "pedalboard.PitchShift.process"]], "process() (pedalboard.plugin method)": [[6, "pedalboard.Plugin.process"]], "process() (pedalboard.plugincontainer method)": [[6, "pedalboard.PluginContainer.process"]], "process() (pedalboard.resample method)": [[6, "pedalboard.Resample.process"]], "process() (pedalboard.reverb method)": [[6, "pedalboard.Reverb.process"]], "process() (pedalboard.vst3plugin method)": [[6, "pedalboard.VST3Plugin.process"]], "quality (pedalboard.resample property)": [[6, "pedalboard.Resample.quality"]], "rate_hz (pedalboard.chorus property)": [[6, "pedalboard.Chorus.rate_hz"]], "raw_state (pedalboard.audiounitplugin property)": [[6, "pedalboard.AudioUnitPlugin.raw_state"]], "raw_state (pedalboard.vst3plugin property)": [[6, "pedalboard.VST3Plugin.raw_state"]], "remove() (pedalboard.chain method)": [[6, "pedalboard.Chain.remove"]], "remove() (pedalboard.mix method)": [[6, "pedalboard.Mix.remove"]], "remove() (pedalboard.pedalboard method)": [[6, "pedalboard.Pedalboard.remove"]], "remove() (pedalboard.plugincontainer method)": [[6, "pedalboard.PluginContainer.remove"]], "reset() (pedalboard.audiounitplugin method)": [[6, "pedalboard.AudioUnitPlugin.reset"]], "reset() (pedalboard.bitcrush method)": [[6, "pedalboard.Bitcrush.reset"]], "reset() (pedalboard.chain method)": [[6, "pedalboard.Chain.reset"]], "reset() (pedalboard.chorus method)": [[6, "pedalboard.Chorus.reset"]], "reset() (pedalboard.clipping method)": [[6, "pedalboard.Clipping.reset"]], "reset() (pedalboard.compressor method)": [[6, "pedalboard.Compressor.reset"]], "reset() (pedalboard.convolution method)": [[6, "pedalboard.Convolution.reset"]], "reset() (pedalboard.delay method)": [[6, "pedalboard.Delay.reset"]], "reset() (pedalboard.distortion method)": [[6, "pedalboard.Distortion.reset"]], "reset() (pedalboard.externalplugin method)": [[6, "pedalboard.ExternalPlugin.reset"]], "reset() (pedalboard.gsmfullratecompressor method)": [[6, "pedalboard.GSMFullRateCompressor.reset"]], "reset() (pedalboard.gain method)": [[6, "pedalboard.Gain.reset"]], "reset() (pedalboard.highshelffilter method)": [[6, "pedalboard.HighShelfFilter.reset"]], "reset() (pedalboard.highpassfilter method)": [[6, "pedalboard.HighpassFilter.reset"]], "reset() (pedalboard.iirfilter method)": [[6, "pedalboard.IIRFilter.reset"]], "reset() (pedalboard.invert method)": [[6, "pedalboard.Invert.reset"]], "reset() (pedalboard.ladderfilter method)": [[6, "pedalboard.LadderFilter.reset"]], "reset() (pedalboard.limiter method)": [[6, "pedalboard.Limiter.reset"]], "reset() (pedalboard.lowshelffilter method)": [[6, "pedalboard.LowShelfFilter.reset"]], "reset() (pedalboard.lowpassfilter method)": [[6, "pedalboard.LowpassFilter.reset"]], "reset() (pedalboard.mp3compressor method)": [[6, "pedalboard.MP3Compressor.reset"]], "reset() (pedalboard.mix method)": [[6, "pedalboard.Mix.reset"]], "reset() (pedalboard.noisegate method)": [[6, "pedalboard.NoiseGate.reset"]], "reset() (pedalboard.peakfilter method)": [[6, "pedalboard.PeakFilter.reset"]], "reset() (pedalboard.pedalboard method)": [[6, "pedalboard.Pedalboard.reset"]], "reset() (pedalboard.phaser method)": [[6, "pedalboard.Phaser.reset"]], "reset() (pedalboard.pitchshift method)": [[6, "pedalboard.PitchShift.reset"]], "reset() (pedalboard.plugin method)": [[6, "pedalboard.Plugin.reset"]], "reset() (pedalboard.plugincontainer method)": [[6, "pedalboard.PluginContainer.reset"]], "reset() (pedalboard.resample method)": [[6, "pedalboard.Resample.reset"]], "reset() (pedalboard.reverb method)": [[6, "pedalboard.Reverb.reset"]], "reset() (pedalboard.vst3plugin method)": [[6, "pedalboard.VST3Plugin.reset"]], "show_editor() (pedalboard.audiounitplugin method)": [[6, "pedalboard.AudioUnitPlugin.show_editor"]], "show_editor() (pedalboard.vst3plugin method)": [[6, "pedalboard.VST3Plugin.show_editor"]], "target_sample_rate (pedalboard.resample property)": [[6, "pedalboard.Resample.target_sample_rate"]], "time_stretch() (in module pedalboard)": [[6, "pedalboard.time_stretch"]], "units (pedalboard.audioprocessorparameter property)": [[6, "pedalboard.AudioProcessorParameter.units"]], "version (pedalboard.audiounitplugin property)": [[6, "pedalboard.AudioUnitPlugin.version"]], "version (pedalboard.vst3plugin property)": [[6, "pedalboard.VST3Plugin.version"]], "audiofile (class in pedalboard.io)": [[7, "pedalboard.io.AudioFile"]], "audiostream (class in pedalboard.io)": [[7, "pedalboard.io.AudioStream"]], "readableaudiofile (class in pedalboard.io)": [[7, "pedalboard.io.ReadableAudioFile"]], "resampledreadableaudiofile (class in pedalboard.io)": [[7, "pedalboard.io.ResampledReadableAudioFile"]], "streamresampler (class in pedalboard.io)": [[7, "pedalboard.io.StreamResampler"]], "writeableaudiofile (class in pedalboard.io)": [[7, "pedalboard.io.WriteableAudioFile"]], "__enter__() (pedalboard.io.audiostream method)": [[7, "pedalboard.io.AudioStream.__enter__"]], "__enter__() (pedalboard.io.readableaudiofile method)": [[7, "pedalboard.io.ReadableAudioFile.__enter__"]], "__enter__() (pedalboard.io.resampledreadableaudiofile method)": [[7, "pedalboard.io.ResampledReadableAudioFile.__enter__"]], "__exit__() (pedalboard.io.audiostream method)": [[7, "pedalboard.io.AudioStream.__exit__"]], "__exit__() (pedalboard.io.readableaudiofile method)": [[7, "pedalboard.io.ReadableAudioFile.__exit__"]], "__exit__() (pedalboard.io.resampledreadableaudiofile method)": [[7, "pedalboard.io.ResampledReadableAudioFile.__exit__"]], "close() (pedalboard.io.readableaudiofile method)": [[7, "pedalboard.io.ReadableAudioFile.close"]], "close() (pedalboard.io.resampledreadableaudiofile method)": [[7, "pedalboard.io.ResampledReadableAudioFile.close"]], "close() (pedalboard.io.writeableaudiofile method)": [[7, "pedalboard.io.WriteableAudioFile.close"]], "closed (pedalboard.io.readableaudiofile property)": [[7, "pedalboard.io.ReadableAudioFile.closed"]], "closed (pedalboard.io.resampledreadableaudiofile property)": [[7, "pedalboard.io.ResampledReadableAudioFile.closed"]], "closed (pedalboard.io.writeableaudiofile property)": [[7, "pedalboard.io.WriteableAudioFile.closed"]], "duration (pedalboard.io.readableaudiofile property)": [[7, "pedalboard.io.ReadableAudioFile.duration"]], "duration (pedalboard.io.resampledreadableaudiofile property)": [[7, "pedalboard.io.ResampledReadableAudioFile.duration"]], "encode() (pedalboard.io.audiofile static method)": [[7, "pedalboard.io.AudioFile.encode"]], "exact_duration_known (pedalboard.io.readableaudiofile property)": [[7, "pedalboard.io.ReadableAudioFile.exact_duration_known"]], "exact_duration_known (pedalboard.io.resampledreadableaudiofile property)": [[7, "pedalboard.io.ResampledReadableAudioFile.exact_duration_known"]], "file_dtype (pedalboard.io.readableaudiofile property)": [[7, "pedalboard.io.ReadableAudioFile.file_dtype"]], "file_dtype (pedalboard.io.resampledreadableaudiofile property)": [[7, "pedalboard.io.ResampledReadableAudioFile.file_dtype"]], "file_dtype (pedalboard.io.writeableaudiofile property)": [[7, "pedalboard.io.WriteableAudioFile.file_dtype"]], "flush() (pedalboard.io.writeableaudiofile method)": [[7, "pedalboard.io.WriteableAudioFile.flush"]], "frames (pedalboard.io.readableaudiofile property)": [[7, "pedalboard.io.ReadableAudioFile.frames"]], "frames (pedalboard.io.resampledreadableaudiofile property)": [[7, "pedalboard.io.ResampledReadableAudioFile.frames"]], "frames (pedalboard.io.writeableaudiofile property)": [[7, "pedalboard.io.WriteableAudioFile.frames"]], "input_latency (pedalboard.io.streamresampler property)": [[7, "pedalboard.io.StreamResampler.input_latency"]], "name (pedalboard.io.readableaudiofile property)": [[7, "pedalboard.io.ReadableAudioFile.name"]], "name (pedalboard.io.resampledreadableaudiofile property)": [[7, "pedalboard.io.ResampledReadableAudioFile.name"]], "num_channels (pedalboard.io.readableaudiofile property)": [[7, "pedalboard.io.ReadableAudioFile.num_channels"]], "num_channels (pedalboard.io.resampledreadableaudiofile property)": [[7, "pedalboard.io.ResampledReadableAudioFile.num_channels"]], "num_channels (pedalboard.io.streamresampler property)": [[7, "pedalboard.io.StreamResampler.num_channels"]], "num_channels (pedalboard.io.writeableaudiofile property)": [[7, "pedalboard.io.WriteableAudioFile.num_channels"]], "pedalboard.io": [[7, "module-pedalboard.io"]], "plugins (pedalboard.io.audiostream property)": [[7, "pedalboard.io.AudioStream.plugins"]], "process() (pedalboard.io.streamresampler method)": [[7, "pedalboard.io.StreamResampler.process"]], "quality (pedalboard.io.streamresampler property)": [[7, "pedalboard.io.StreamResampler.quality"]], "quality (pedalboard.io.writeableaudiofile property)": [[7, "pedalboard.io.WriteableAudioFile.quality"]], "read() (pedalboard.io.readableaudiofile method)": [[7, "pedalboard.io.ReadableAudioFile.read"]], "read() (pedalboard.io.resampledreadableaudiofile method)": [[7, "pedalboard.io.ResampledReadableAudioFile.read"]], "read_raw() (pedalboard.io.readableaudiofile method)": [[7, "pedalboard.io.ReadableAudioFile.read_raw"]], "resampled_to() (pedalboard.io.readableaudiofile method)": [[7, "pedalboard.io.ReadableAudioFile.resampled_to"]], "resampling_quality (pedalboard.io.resampledreadableaudiofile property)": [[7, "pedalboard.io.ResampledReadableAudioFile.resampling_quality"]], "reset() (pedalboard.io.streamresampler method)": [[7, "pedalboard.io.StreamResampler.reset"]], "run() (pedalboard.io.audiostream method)": [[7, "pedalboard.io.AudioStream.run"]], "running (pedalboard.io.audiostream property)": [[7, "pedalboard.io.AudioStream.running"]], "samplerate (pedalboard.io.readableaudiofile property)": [[7, "pedalboard.io.ReadableAudioFile.samplerate"]], "samplerate (pedalboard.io.resampledreadableaudiofile property)": [[7, "pedalboard.io.ResampledReadableAudioFile.samplerate"]], "samplerate (pedalboard.io.writeableaudiofile property)": [[7, "pedalboard.io.WriteableAudioFile.samplerate"]], "seek() (pedalboard.io.readableaudiofile method)": [[7, "pedalboard.io.ReadableAudioFile.seek"]], "seek() (pedalboard.io.resampledreadableaudiofile method)": [[7, "pedalboard.io.ResampledReadableAudioFile.seek"]], "seekable() (pedalboard.io.readableaudiofile method)": [[7, "pedalboard.io.ReadableAudioFile.seekable"]], "seekable() (pedalboard.io.resampledreadableaudiofile method)": [[7, "pedalboard.io.ResampledReadableAudioFile.seekable"]], "source_sample_rate (pedalboard.io.streamresampler property)": [[7, "pedalboard.io.StreamResampler.source_sample_rate"]], "target_sample_rate (pedalboard.io.streamresampler property)": [[7, "pedalboard.io.StreamResampler.target_sample_rate"]], "tell() (pedalboard.io.readableaudiofile method)": [[7, "pedalboard.io.ReadableAudioFile.tell"]], "tell() (pedalboard.io.resampledreadableaudiofile method)": [[7, "pedalboard.io.ResampledReadableAudioFile.tell"]], "tell() (pedalboard.io.writeableaudiofile method)": [[7, "pedalboard.io.WriteableAudioFile.tell"]], "write() (pedalboard.io.writeableaudiofile method)": [[7, "pedalboard.io.WriteableAudioFile.write"]]}}) \ No newline at end of file diff --git a/pedalboard/BufferUtils.h b/pedalboard/BufferUtils.h index 13f708586..1ab0075a7 100644 --- a/pedalboard/BufferUtils.h +++ b/pedalboard/BufferUtils.h @@ -47,17 +47,15 @@ detectChannelLayout(const py::array_t inputArray, } else if (inputInfo.shape[1] == *channelCountHint) { return ChannelLayout::Interleaved; } else { - // The hint was not used; fall through to the next case. + throw std::runtime_error( + "Unable to determine channel layout from shape: (" + + std::to_string(inputInfo.shape[0]) + ", " + + std::to_string(inputInfo.shape[1]) + ")."); } } // Try to auto-detect the channel layout from the shape - if (inputInfo.shape[0] == 0 && inputInfo.shape[1] > 0) { - // Zero channels doesn't make sense; but zero samples does. - return ChannelLayout::Interleaved; - } else if (inputInfo.shape[1] == 0 && inputInfo.shape[0] > 0) { - return ChannelLayout::NotInterleaved; - } else if (inputInfo.shape[1] < inputInfo.shape[0]) { + if (inputInfo.shape[1] < inputInfo.shape[0]) { return ChannelLayout::Interleaved; } else if (inputInfo.shape[0] < inputInfo.shape[1]) { return ChannelLayout::NotInterleaved; @@ -115,6 +113,12 @@ juce::AudioBuffer copyPyArrayIntoJuceBuffer( std::to_string(inputInfo.ndim) + ")."); } + if (numChannels == 0) { + throw std::runtime_error("No channels passed!"); + } else if (numChannels > 2) { + throw std::runtime_error("More than two channels received!"); + } + juce::AudioBuffer ioBuffer(numChannels, numSamples); // Depending on the input channel layout, we need to copy data @@ -191,6 +195,12 @@ const juce::AudioBuffer convertPyArrayIntoJuceBuffer( std::to_string(inputInfo.ndim) + ")."); } + if (numChannels == 0) { + throw std::runtime_error("No channels passed!"); + } else if (numChannels > 2) { + throw std::runtime_error("More than two channels received!"); + } + T **channelPointers = (T **)alloca(numChannels * sizeof(T *)); for (int c = 0; c < numChannels; c++) { channelPointers[c] = static_cast(inputInfo.ptr) + (c * numSamples); diff --git a/pedalboard/Plugin.h b/pedalboard/Plugin.h index 10a80b7ab..dfe6c855e 100644 --- a/pedalboard/Plugin.h +++ b/pedalboard/Plugin.h @@ -17,7 +17,6 @@ #pragma once -#include "BufferUtils.h" #include "JuceHeader.h" #include @@ -54,15 +53,6 @@ class Plugin { */ virtual void reset() = 0; - /** - * Reset this plugin's memory of the last channel layout and/or last channel - * count. This should usually not be called directly. - */ - void resetLastChannelLayout() { - lastSpec = {0}; - lastChannelLayout = {}; - }; - /** * Get the number of samples of latency introduced by this plugin. * This is the number of samples that must be provided to the plugin @@ -92,39 +82,7 @@ class Plugin { // plugins to avoid deadlocking. std::mutex mutex; - template - ChannelLayout parseAndCacheChannelLayout( - const py::array_t inputArray, - std::optional channelCountHint = {}) { - - if (!channelCountHint && lastSpec.numChannels != 0) { - channelCountHint = {lastSpec.numChannels}; - } - - if (lastChannelLayout) { - try { - lastChannelLayout = detectChannelLayout(inputArray, channelCountHint); - } catch (...) { - // Use the last cached layout. - } - } else { - // We have no cached layout; detect it now and raise if necessary: - try { - lastChannelLayout = detectChannelLayout(inputArray, channelCountHint); - } catch (const std::exception &e) { - throw std::runtime_error( - std::string(e.what()) + - " Provide a non-square array first to allow Pedalboard to " - "determine which dimension corresponds with the number of channels " - "and which dimension corresponds with the number of samples."); - } - } - - return *lastChannelLayout; - } - protected: juce::dsp::ProcessSpec lastSpec = {0}; - std::optional lastChannelLayout = {}; }; } // namespace Pedalboard \ No newline at end of file diff --git a/pedalboard/plugin_templates/PrimeWithSilence.h b/pedalboard/plugin_templates/PrimeWithSilence.h index c8f96e5dc..603d5293d 100644 --- a/pedalboard/plugin_templates/PrimeWithSilence.h +++ b/pedalboard/plugin_templates/PrimeWithSilence.h @@ -46,8 +46,6 @@ class PrimeWithSilence } virtual void reset() override { - JucePlugin>::reset(); this->getDSP().reset(); this->getDSP().setMaximumDelayInSamples(silenceLengthSamples); this->getDSP().setDelay(silenceLengthSamples); @@ -75,13 +73,11 @@ class PrimeWithSilence T &getNestedPlugin() { return plugin; } void setSilenceLengthSamples(int newSilenceLengthSamples) { - if (silenceLengthSamples != newSilenceLengthSamples) { - this->getDSP().setMaximumDelayInSamples(newSilenceLengthSamples); - this->getDSP().setDelay(newSilenceLengthSamples); - silenceLengthSamples = newSilenceLengthSamples; + this->getDSP().setMaximumDelayInSamples(newSilenceLengthSamples); + this->getDSP().setDelay(newSilenceLengthSamples); + silenceLengthSamples = newSilenceLengthSamples; - reset(); - } + reset(); } int getSilenceLengthSamples() const { return silenceLengthSamples; } diff --git a/pedalboard/plugins/AddLatency.h b/pedalboard/plugins/AddLatency.h index 960e59ed0..86bf71992 100644 --- a/pedalboard/plugins/AddLatency.h +++ b/pedalboard/plugins/AddLatency.h @@ -32,8 +32,6 @@ class AddLatency : public JucePlugin>::reset(); getDSP().reset(); samplesProvided = 0; } diff --git a/pedalboard/plugins/Delay.h b/pedalboard/plugins/Delay.h index 893c3be98..f8010d73b 100644 --- a/pedalboard/plugins/Delay.h +++ b/pedalboard/plugins/Delay.h @@ -58,11 +58,7 @@ class Delay : public JucePlugingetDSP().setDelay((int)(delaySeconds * spec.sampleRate)); } - virtual void reset() override { - JucePlugin>::reset(); - this->getDSP().reset(); - } + virtual void reset() override { this->getDSP().reset(); } virtual int process( const juce::dsp::ProcessContextReplacing &context) override { diff --git a/pedalboard/process.h b/pedalboard/process.h index 22e0e2653..52e88339e 100644 --- a/pedalboard/process.h +++ b/pedalboard/process.h @@ -163,42 +163,8 @@ py::array_t processFloat32(const py::array_t inputArray, double sampleRate, std::vector> plugins, unsigned int bufferSize, bool reset) { - - ChannelLayout inputChannelLayout; - if (!plugins.empty()) { - inputChannelLayout = plugins[0]->parseAndCacheChannelLayout(inputArray); - } else { - inputChannelLayout = detectChannelLayout(inputArray); - } - - juce::AudioBuffer ioBuffer = - copyPyArrayIntoJuceBuffer(inputArray, {inputChannelLayout}); - - if (ioBuffer.getNumChannels() == 0) { - unsigned int numChannels = 0; - unsigned int numSamples = ioBuffer.getNumSamples(); - // We have no channels to process; just return an empty output array with - // the same shape. Passing zero channels into JUCE breaks some assumptions - // all over the place. - py::array_t outputArray; - if (inputArray.request().ndim == 2) { - switch (inputChannelLayout) { - case ChannelLayout::Interleaved: - outputArray = py::array_t({numSamples, numChannels}); - break; - case ChannelLayout::NotInterleaved: - outputArray = py::array_t({numChannels, numSamples}); - break; - default: - throw std::runtime_error( - "Internal error: got unexpected channel layout."); - } - } else { - outputArray = py::array_t(0); - } - return outputArray; - } - + const ChannelLayout inputChannelLayout = detectChannelLayout(inputArray); + juce::AudioBuffer ioBuffer = copyPyArrayIntoJuceBuffer(inputArray); int totalOutputLatencySamples; { diff --git a/pedalboard/python_bindings.cpp b/pedalboard/python_bindings.cpp index 8ebd2a57f..6e3366368 100644 --- a/pedalboard/python_bindings.cpp +++ b/pedalboard/python_bindings.cpp @@ -121,17 +121,10 @@ or buffer, set ``reset`` to ``False``. // type inference. return nullptr; })) - .def( - "reset", - [](std::shared_ptr self) { - self->reset(); - // Only reset the last channel layout if the user explicitly calls - // reset from the Python side: - self->resetLastChannelLayout(); - }, - "Clear any internal state stored by this plugin (e.g.: reverb " - "tails, delay lines, LFO state, etc). The values of plugin " - "parameters will remain unchanged. ") + .def("reset", &Plugin::reset, + "Clear any internal state stored by this plugin (e.g.: reverb " + "tails, delay lines, LFO state, etc). The values of plugin " + "parameters will remain unchanged. ") .def( "process", [](std::shared_ptr self, const py::array inputArray, @@ -161,17 +154,12 @@ processing begins, clearing any state from previous calls to ``process``. If calling ``process`` multiple times while processing the same audio file or buffer, set ``reset`` to ``False``. -The layout of the provided ``input_array`` will be automatically detected, -assuming that the smaller dimension corresponds with the number of channels. -If the number of samples and the number of channels are the same, each -:py:class:`Plugin` object will use the last-detected channel layout until -:py:meth:`reset` is explicitly called (as of v0.9.9). - .. note:: The :py:meth:`process` method can also be used via :py:meth:`__call__`; i.e.: just calling this object like a function (``my_plugin(...)``) will automatically invoke :py:meth:`process` with the same arguments. -)", + + )", py::arg("input_array"), py::arg("sample_rate"), py::arg("buffer_size") = DEFAULT_BUFFER_SIZE, py::arg("reset") = true) .def( diff --git a/pedalboard_native/__init__.pyi b/pedalboard_native/__init__.pyi index 8d64f9f38..ce6e8c794 100644 --- a/pedalboard_native/__init__.pyi +++ b/pedalboard_native/__init__.pyi @@ -114,16 +114,12 @@ class Plugin: If calling ``process`` multiple times while processing the same audio file or buffer, set ``reset`` to ``False``. - The layout of the provided ``input_array`` will be automatically detected, - assuming that the smaller dimension corresponds with the number of channels. - If the number of samples and the number of channels are the same, each - :py:class:`Plugin` object will use the last-detected channel layout until - :py:meth:`reset` is explicitly called (as of v0.9.9). - .. note:: The :py:meth:`process` method can also be used via :py:meth:`__call__`; i.e.: just calling this object like a function (``my_plugin(...)``) will automatically invoke :py:meth:`process` with the same arguments. + + """ def reset(self) -> None: diff --git a/tests/test_native_module.py b/tests/test_native_module.py index 162b76721..1823b270a 100644 --- a/tests/test_native_module.py +++ b/tests/test_native_module.py @@ -21,26 +21,12 @@ import pytest from pedalboard import ( - Bitcrush, - Chorus, - Clipping, Compressor, Convolution, Delay, Distortion, Gain, - GSMFullRateCompressor, - HighpassFilter, - HighShelfFilter, Invert, - LowpassFilter, - LowShelfFilter, - MP3Compressor, - NoiseGate, - PeakFilter, - Phaser, - PitchShift, - Resample, Reverb, process, ) @@ -49,31 +35,6 @@ IMPULSE_RESPONSE_PATH = os.path.join(os.path.dirname(__file__), "impulse_response.wav") -ALL_BUILTIN_PLUGINS = [ - Compressor, - Delay, - Distortion, - Gain, - Invert, - Reverb, - Bitcrush, - Chorus, - Clipping, - # Convolution, # Not instantiable with zero arguments - HighpassFilter, - LowpassFilter, - HighShelfFilter, - LowShelfFilter, - PeakFilter, - NoiseGate, - Phaser, - PitchShift, - MP3Compressor, - GSMFullRateCompressor, - Resample, -] - - @pytest.mark.parametrize("shape", [(44100,), (44100, 1), (44100, 2), (1, 44100), (2, 44100)]) def test_no_transforms(shape, sr=44100): _input = np.random.rand(*shape).astype(np.float32) @@ -247,67 +208,3 @@ def test_plugin_state_not_cleared_if_passed_smaller_buffer(): effected_silence_noise_floor = np.amax(np.abs(effected_silence)) assert effected_silence_noise_floor > 0.25 - - -@pytest.mark.parametrize("plugin_class", ALL_BUILTIN_PLUGINS) -def test_process_differently_shaped_empty_buffers(plugin_class): - plugin = plugin_class() - sr = 44100 - assert plugin(np.zeros((0, 1), dtype=np.float32), sr).shape == (0, 1) - assert plugin(np.zeros((1, 0), dtype=np.float32), sr).shape == (1, 0) - assert plugin(np.zeros((0,), dtype=np.float32), sr).shape == (0,) - - -@pytest.mark.parametrize("plugin_class", ALL_BUILTIN_PLUGINS) -def test_process_one_by_one_buffer(plugin_class): - plugin = plugin_class() - sr = 44100 - # Processing a single sample at a time should work: - assert plugin(np.zeros((1, 1), dtype=np.float32), sr).shape == (1, 1) - # Processing that same sample as a flat 1D array should work too: - assert plugin(np.zeros((1,), dtype=np.float32), sr).shape == (1,) - - -@pytest.mark.parametrize("plugin_class", ALL_BUILTIN_PLUGINS) -def test_process_two_by_two_buffer(plugin_class): - plugin = plugin_class() - sr = 44100 - - # Writing a 2x2 buffer should not work right off the bat, as we - # can't tell which dimension is channels and which dimension is - # samples: - with pytest.raises(RuntimeError) as e: - plugin(np.zeros((2, 2), dtype=np.float32), sr).shape - assert "Provide a non-square array first" in str(e) - - # ...but if we write a non-square buffer, it should work: - output = plugin(np.zeros((2, 1024), dtype=np.float32), sr) - assert output.shape[0] == 2 - # ...and now square buffers are interpreted as having the same channel layout: - assert plugin(np.zeros((2, 2), dtype=np.float32), sr).shape[0] == 2 - - -@pytest.mark.parametrize("channel_dimension", [0, 1]) -@pytest.mark.parametrize("plugin_class", ALL_BUILTIN_PLUGINS) -def test_process_two_by_two_buffer_with_hint(plugin_class, channel_dimension: int): - plugin = plugin_class() - sr = 44100 - - empty_shape = (2, 0) if channel_dimension == 0 else (0, 2) - - # ...if we pass an empty array of the right shape, that shape hint should be saved: - assert plugin(np.zeros(empty_shape, dtype=np.float32), sr).shape == empty_shape - # ...and now square buffers are interpreted as having the same channel layout: - output = plugin(np.zeros((2, 2), dtype=np.float32), sr) - assert output.shape[channel_dimension] == 2 - - # Some plugins buffer their output, so make sure we eventually do get something out in the right shape: - while output.shape[1 if channel_dimension == 0 else 0] == 0: - output = plugin(np.zeros((2, 2), dtype=np.float32), sr, reset=False) - assert output.shape[channel_dimension] == 2 - - # ...but not if we call reset(): - plugin.reset() - with pytest.raises(RuntimeError) as e: - plugin(np.zeros((2, 2), dtype=np.float32), sr).shape - assert "Provide a non-square array first" in str(e) diff --git a/tests/test_small_buffers.py b/tests/test_small_buffers.py deleted file mode 100644 index dd7e4c486..000000000 --- a/tests/test_small_buffers.py +++ /dev/null @@ -1,28 +0,0 @@ -import io - -import numpy as np -import pytest - -from pedalboard import Gain, Pedalboard, Reverb -from pedalboard.io import AudioFile - - -@pytest.mark.parametrize("transpose", [False, True]) -def test_small_buffers(transpose: bool): - """ - Ensure that if we're processing a stream of audio, we don't get stuck - with a square buffer that confuses our automatic shape detection. - """ - board = Pedalboard([Reverb(), Gain()]) - buf = io.BytesIO(AudioFile.encode(np.zeros((2, 17)), 44100, "wav", 2)) - num_output_frames = 0 - with AudioFile(buf) as f: - while f.tell() < f.frames: - # Read three frames at a time; but the last frame will - # end up with only two samples in it. - _input = f.read(3) - if transpose: - _input = _input.T - output = board(_input, f.samplerate) - num_output_frames += output.shape[0 if transpose else 1] - assert num_output_frames == 17