PedalPi - PluginsManager - Model - System

SystemEffectBuilder

class pluginsmanager.model.system.system_effect_builder.SystemEffectBuilder(jack_client)[source]

Automatic system physical ports detection.

Maybe the midi ports not will recognize. In these cases, you need to start a2jmidid to get MIDI-ALSA ports automatically mapped to JACK-MIDI ports.

Parameters:jack_client (JackClient) – JackClient instance that will get the information to generate SystemEffect
__init__(jack_client)[source]

Initialize self. See help(type(self)) for accurate signature.

SystemEffect

class pluginsmanager.model.system.system_effect.SystemEffect(representation, outputs=None, inputs=None, midi_outputs=None, midi_inputs=None)[source]

Representation of the system instance: audio and/or midi interfaces.

System output is equivalent with audio input: You connect the instrument in the audio card input and it captures and send the audio to SystemOutput for you connect in a input plugins.

System input is equivalent with audio output: The audio card receives the audio processed in your SystemInput and send it to audio card output for you connects in amplifier, headset.

Because no autodetection of existing ports in audio card has been implemented, you must explicitly inform in the creation of the SystemEffect object:

>>> sys_effect = SystemEffect('system', ('capture_1', 'capture_2'), ('playback_1', 'playback_2'))

Unlike effects that should be added in the pedalboard, SystemEffects MUST NOT:

>>> builder = Lv2EffectBuilder()
>>> pedalboard = Pedalboard('Rocksmith')
>>> reverb = builder.build('http://calf.sourceforge.net/plugins/Reverb')
>>> pedalboard.append(reverb)

However the pedalboard must have the connections:

>>> pedalboard.connect(sys_effect.outputs[0], reverb.inputs[0])

An bypass example:

>>> pedalboard = Pedalboard('Bypass example')
>>> sys_effect = SystemEffect('system', ('capture_1', 'capture_2'), ('playback_1', 'playback_2'))
>>> pedalboard.connect(sys_effect.outputs[0], sys_effect.inputs[0])
>>> pedalboard.connect(sys_effect.outputs[1], sys_effect.inputs[1])

You can create multiple SystemEffect for multiple audio/midi interfaces. In the following example, exists Jack provides audio system ports and two midi ports are added by I/O ports:

>>> audio_system = SystemEffect('system', inputs=['playback_1', 'playback_2'])
>>> midi_system = SystemEffect('ttymidi', midi_outputs=['MIDI_in'], midi_inputs=['MIDI_out'])
>>> pedalboard = Pedalboard('MDA-EP')
>>> ep = builder.build('http://moddevices.com/plugins/mda/EPiano')
>>> pedalboard.connect(ep.outputs[0], audio_system.inputs[0])
>>> pedalboard.connect(ep.outputs[1], audio_system.inputs[1])
>>> pedalboard.connect(audio_system.midi_outputs[0], ep.midi_inputs[0])

You can check the audio/midi ports defined in your environment using jack_lsp:

root@zynthian:~ # As example in Zynthian project: http://zynthian.org
root@zynthian:~ jack_lsp -A
system:playback_1
   alsa_pcm:hw:0:in1
system:playback_2
   alsa_pcm:hw:0:in2
ttymidi:MIDI_in
ttymidi:MIDI_out
Zyncoder:output
Zyncoder:input

If you prefer, you can use a unique SystemEffect if alias the ports:

localhost@localdomain:~ jack_alias system:midi_capture1 ttymidi:MIDI_in
localhost@localdomain:~ jack_alias system:midi_playback1 ttymidi:MIDI_out
>>> sys_effect = SystemEffect(
...     'system',
...     inputs=['playback_1', 'playback_2'],
...     midi_outputs=['midi_capture1'],
...     midi_inputs=['midi_playback1']
... )
>>> pedalboard = Pedalboard('MDA-EP')
>>> ep = builder.build('http://moddevices.com/plugins/mda/EPiano')
>>> pedalboard.connect(ep.outputs[0], sys_effect.inputs[0])
>>> pedalboard.connect(ep.outputs[1], sys_effect.inputs[1])
>>> pedalboard.connect(sys_effect.midi_outputs[0], ep.midi_inputs[0])
Parameters:
  • representation (string) – Audio card representation. Usually ‘system’
  • outputs (tuple(string)) – Tuple of outputs representation. Usually a output representation starts with capture_
  • inputs (tuple(string)) – Tuple of inputs representation. Usually a input representation starts with playback_
  • midi_outputs (tuple(string)) – Tuple of midi outputs representation.
  • midi_inputs (tuple(string)) – Tuple of midi inputs representation.
__init__(representation, outputs=None, inputs=None, midi_outputs=None, midi_inputs=None)[source]

Initialize self. See help(type(self)) for accurate signature.

__str__()[source]

Return str(self).

is_possible_connect_itself

return bool: Is possible connect the with it self?

is_unique_for_all_pedalboards
return bool: Is unique for all pedalboards?
Example: SystemEffect is unique for all pedalboards
use_real_identifier

return bool: For this audio plugin, is necessary use the real effect identifier?

SystemInput

class pluginsmanager.model.system.system_input.SystemInput(effect, symbol)[source]

Representation of a System input audio port instance.

For general input use, see Input class documentation.

Parameters:
  • effect (SystemEffect) – Effect that contains the input
  • symbol (string) – input audio port symbol identifier
__init__(effect, symbol)[source]

Initialize self. See help(type(self)) for accurate signature.

symbol
Returns:Identifier for this port

SystemOutput

class pluginsmanager.model.system.system_output.SystemOutput(effect, symbol)[source]

Representation of a System output audio port instance.

For general input use, see Output class documentation.

Parameters:
  • effect (SystemEffect) – Effect that contains the input
  • symbol (string) – output audio port symbol identifier
__init__(effect, symbol)[source]

Initialize self. See help(type(self)) for accurate signature.

symbol
Returns:Identifier for this port

SystemMidiInput

class pluginsmanager.model.system.system_midi_input.SystemMidiInput(effect, symbol)[source]

Representation of a System midi input port instance.

For general input use, see Input and MidiInput classes documentation.

Parameters:
  • effect (SystemEffect) – Effect that contains the input
  • symbol (string) – midi input port symbol identifier
__init__(effect, symbol)[source]

Initialize self. See help(type(self)) for accurate signature.

symbol
Returns:Identifier for this port

SystemMidiOutput

class pluginsmanager.model.system.system_midi_output.SystemMidiOutput(effect, symbol)[source]

Representation of a System midi output port instance.

For general input use, see Output and MidiOutput classes documentation.

Parameters:
  • effect (SystemEffect) – Effect that contains the input
  • symbol (string) – midi output port symbol identifier
__init__(effect, symbol)[source]

Initialize self. See help(type(self)) for accurate signature.

symbol
Returns:Identifier for this port

SystemPortMixing

class pluginsmanager.model.system.system_port_mixing.SystemPortMixing(*args, **kwargs)[source]

Contains the default implementation of System ports: SystemInput, SystemOutput, SystemMidiInput and SystemMidiInput

__init__(*args, **kwargs)[source]

Initialize self. See help(type(self)) for accurate signature.

__str__()[source]

Return str(self).