PedalPi - PluginsManager - Host¶
PedalPi - PluginsManager - HostObserver¶
HostObserver¶
-
class
pluginsmanager.observer.host_observer.host_observer.
HostObserver
[source]¶ HostObserver
contains the basis for Host implementations, likeModHost
orCarla
.It is an
UpdatesObserver
. With it, can be apply the current pedalboard changes transparently.HostObserver contains an algorithm for improve the change of the current pedalboard. Also, HostObserver process the updates and define abstract methods that hosts needs to implements, usually only with the important part.
-
__del__
()[source]¶ Calls
close()
method for remove the audio plugins loaded and closes connection with the host.
-
pedalboard
¶ Currently managed pedalboard (current pedalboard)
Getter: Current pedalboard - Pedalboard loaded by mod-host Setter: Set the pedalboard that will be loaded by mod-host Type: Pedalboard
-
PedalPi - PluginsManager - ModHost¶
About mod-host¶
mod-host is a LV2 host for Jack controllable via socket or command line. With it you can load audio plugins, connect, manage plugins.
For your use, is necessary download it
git clone https://github.com/moddevices/mod-host
cd mod-host
make
make install
Then boot the JACK process and start the mod-host. Details about “JACK” can be found at https://help.ubuntu.com/community/What%20is%20JACK
# In this example, is starting a Zoom g3 series audio interface
jackd -R -P70 -t2000 -dalsa -dhw:Series -p256 -n3 -r44100 -s &
mod-host
You can now connect to the mod-host through the Plugins Manager API. Create a ModHost object with the address that is running the mod-host process. Being in the same machine, it should be ‘localhost’
mod_host = ModHost('localhost')
mod_host.connect()
Finally, register the mod-host in your BanksManager. Changes made to the current pedalboard will be applied to mod-host
manager = BanksManager()
# ...
manager.register(mod_host)
To change the current pedalboard, change the pedalboard parameter to mod_host. Remember that for changes to occur in mod-host, the pedalboard must belong to some bank of banks_manager.
mod_host.pedalboard = my_awesome_pedalboard
ModHost¶
-
class
pluginsmanager.observer.mod_host.mod_host.
ModHost
(address='localhost', port=5555)[source]¶ -
This class offers the mod-host control in a python API:
# Create a mod-host, connect and register it in banks_manager mod_host = ModHost('localhost') mod_host.connect() banks_manager.register(mod_host) # Set the mod_host pedalboard for a pedalboard that the bank # has added in banks_manager mod_host.pedalboard = my_awesome_pedalboard
The changes in current pedalboard (
pedalboard
attribute of mod_host) will also result in mod-host:driver = my_awesome_pedalboard.effects[0] driver.active = False
Note
For use, is necessary that the mod-host is running, for use, access
For more JACK information, access Demystifying JACK – A Beginners Guide to Getting Started with JACK
Example:
In this example, is starting a Zoom G3 series audio interface. Others interfaces maybe needs others configurations.# Starting jackdump process via console jackd -R -P70 -t2000 -dalsa -dhw:Series -p256 -n3 -r44100 -s & # Starting mod-host mod-host &
Parameters: -
__del__
()[source]¶ Calls
close()
method for remove the audio plugins loaded and closes connection with mod-host.>>> mod_host = ModHost() >>> del mod_host
Note
If the mod-host process has been created with
start()
method, it will be finished.
-
close
()[source]¶ Remove the audio plugins loaded and closes connection with mod-host.
Note
If the mod-host process has been created with
start()
method, it will be finished.
-
ModHost internal¶
The classes below are for internal use of mod-host
Connection¶
-
class
pluginsmanager.observer.mod_host.connection.
Connection
(socket_port=5555, address='localhost')[source]¶ Class responsible for managing an API connection to the mod-host process via socket
-
send
(message)[source]¶ Sends message to mod-host.
Note
Uses
ProtocolParser
for a high-level management. As example, viewHost
Parameters: message (string) – Message that will be sent for mod-host
-
Host¶
-
class
pluginsmanager.observer.mod_host.host.
Host
(address='localhost', port=5555)[source]¶ Bridge between mod-host API and mod-host process
-
add
(effect)[source]¶ Add an LV2 plugin encapsulated as a jack client
Parameters: effect (Lv2Effect) – Effect that will be loaded as LV2 plugin encapsulated
-
connect
(connection)[source]¶ Connect two effect audio ports
Parameters: connection (pluginsmanager.model.connection.Connection) – Connection with the two effect audio ports (output and input)
-
disconnect
(connection)[source]¶ Disconnect two effect audio ports
Parameters: connection (pluginsmanager.model.connection.Connection) – Connection with the two effect audio ports (output and input)
-
remove
(effect)[source]¶ Remove an LV2 plugin instance (and also the jack client)
Parameters: effect (Lv2Effect) – Effect that your jack client encapsulated will removed
-
ProtocolParser¶
-
class
pluginsmanager.observer.mod_host.protocol_parser.
ProtocolParser
[source]¶ Prepare the objects to mod-host string command
-
static
add
(effect)[source]¶ add <lv2_uri> <instance_number>
add a LV2 plugin encapsulated as a jack client
e.g.:
add http://lv2plug.in/plugins/eg-amp 0
instance_number must be any value between 0 ~ 9999, inclusively
Parameters: effect (Lv2Effect) – Effect will be added
-
static
bypass
(effect)[source]¶ bypass <instance_number> <bypass_value>
toggle plugin processing
e.g.:
bypass 0 1
- if
bypass_value = 1
bypass plugin - if
bypass_value = 0
process plugin
Parameters: effect (Lv2Effect) – Effect that will be active the bypass or disable the bypass - if
-
static
connect
(connection)[source]¶ connect <origin_port> <destination_port>
connect two plugin audio ports
e.g.:
connect system:capture_1 plugin_0:in
Parameters: connection (pluginsmanager.model.connection.Connection) – Connection with a valid Output
andInput
-
static
disconnect
(connection)[source]¶ disconnect <origin_port> <destination_port>
disconnect two plugin audio ports
e.g.:
disconnect system:capture_1 plugin_0:in
Parameters: connection (pluginsmanager.model.connection.Connection) – Connection with a valid Output
andInput
-
static
load
(filename)[source]¶ load <file_name>
load a history command file dummy way to save/load workspace state
e.g.:
load my_setup
Note
Not implemented yet
-
static
midi_learn
(plugin, param)[source]¶ midi_learn <instance_number> <param_symbol>
This command maps starts MIDI learn for a parameter
e.g.:
midi_learn 0 gain
Note
Not implemented yet
-
static
midi_map
(plugin, param, midi_chanel, midi_cc)[source]¶ midi_map <instance_number> <param_symbol> <midi_channel> <midi_cc>
This command maps a MIDI controller to a parameter
e.g.:
midi_map 0 gain 0 7
Note
Not implemented yet
-
static
midi_unmap
(plugin, param)[source]¶ midi_unmap <instance_number> <param_symbol>
This command unmaps the MIDI controller from a parameter
e.g.:
unmap 0 gain
Note
Not implemented yet
-
static
monitor
()[source]¶ monitor <addr> <port> <status>
open a socket port to monitoring parameters
e.g.:
monitor localhost 12345 1
- if
status = 1
start monitoring - if
status = 0
stop monitoring
Note
Not implemented yet
- if
-
static
param_get
(param)[source]¶ param_get <instance_number> <param_symbol>
get the value of the request control
e.g.:
param_get 0 gain
Parameters: param (Lv2Param) – Parameter that will be get your current value
-
static
param_monitor
()[source]¶ param_monitor <instance_number> <param_symbol> <cond_op> <value>
do monitoring a plugin instance control port according given condition
e.g.:
param_monitor 0 gain > 2.50
Note
Not implemented yet
-
static
param_set
(param)[source]¶ param_set <instance_number> <param_symbol> <param_value>
set a value to given control
e.g.:
param_set 0 gain 2.50
Parameters: param (Lv2Param) – Parameter that will be updated your value
-
static
preset_load
()[source]¶ preset_load <instance_number> <preset_uri>
load a preset state to given plugin instance
e.g.:
preset_load 0 "http://drobilla.net/plugins/mda/presets#JX10-moogcury-lite"
Note
Not implemented yet
-
static
preset_save
()[source]¶ preset_save <instance_number> <preset_name> <dir> <file_name>
save a preset state from given plugin instance
e.g.:
preset_save 0 "My Preset" /home/user/.lv2/my-presets.lv2 mypreset.ttl
Note
Not implemented yet
-
static
preset_show
()[source]¶ preset_show <instance_number> <preset_uri>
show the preset information of requested instance / URI
e.g.:
preset_show 0 http://drobilla.net/plugins/mda/presets#EPiano-bright
Note
Not implemented yet
-
static
PedalPi - PluginsManager - Carla¶
It is in alpha, some methods aren’t implemented, as effects connection and disconnection.
About Carla¶
In development
Carla¶
-
class
pluginsmanager.observer.carla.carla.
Carla
(path)[source]¶ - Python port for carla
- Carla is a fully-featured audio plugin host, with support for many audio drivers and plugin formats. It’s open source and licensed under the GNU General Public License, version 2 or later.
This class offers the Carla control in a python API:
# Create a carla, connect and register it in banks_manager host = Carla('localhost') host.connect() banks_manager.register(host) # Set the carla.pedalboard for a pedalboard that the bank # has added in banks_manager host.pedalboard = my_awesome_pedalboard
The changes in current pedalboard (
pedalboard
attribute of carla) will also result in carla host:driver = my_awesome_pedalboard.effects[0] driver.active = False
Note
For use, is necessary that the carla is running, for use, access
- Install dependencies
- Building Carla
- Running Carla
For more JACK information, access Demystifying JACK – A Beginners Guide to Getting Started with JACK
Example:
In this example, is starting a Zoom G3 series audio interface. Others interfaces maybe needs others configurations.# Starting jackdump process via console jackd -R -P70 -t2000 -dalsa -dhw:Series -p256 -n3 -r44100 -s & # Starting carla host # FIXME
Parameters: path (Path) – Path that carla are persisted.