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 generateSystemEffect
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.
-
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
-
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
-
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
andMidiInput
classes documentation.Parameters: - effect (SystemEffect) – Effect that contains the input
- symbol (string) – midi input port symbol identifier
-
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
andMidiOutput
classes documentation.Parameters: - effect (SystemEffect) – Effect that contains the input
- symbol (string) – midi output port symbol identifier
-
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
andSystemMidiInput