Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Mod-host] Add midi (plugins connections) support #57

Closed
18 of 20 tasks
SrMouraSilva opened this issue Sep 17, 2017 · 0 comments
Closed
18 of 20 tasks

[Mod-host] Add midi (plugins connections) support #57

SrMouraSilva opened this issue Sep 17, 2017 · 0 comments

Comments

@SrMouraSilva
Copy link
Member

SrMouraSilva commented Sep 17, 2017

Mod-host contains some commands for audio plugins. Mod-ui enables connect midi to pedal:

How connect a midi in effect?

./mod-host -i
mod-host> add http://gareus.org/oss/lv2/midifilter#cctonote 1 
mod-host> add http://guitarix.sourceforge.net/plugins/gx_redeye#chump 2 
mod-host> add http://gareus.org/oss/lv2/midifilter#cctonote 3
mod-host> connect effect_1:midiout effect_3:midiin
mod-host> connect effect_1:midiout effect_2:in

Mod-host uses the same command for connect audio in/out ports and connect midi in/out ports.

Implementation

Example midi effect: uri: http://gareus.org/oss/lv2/midifilter#cctonote (contains midiin and midiout)

  • Create MidiPort
  • Create MidiInput
  • Update MidiInput docs
  • Create MidiOutput
  • Update MidiOutput docs

#67

  • [ ] Create ConnectableMixing
  • [ ] Update MidiOutput to use ConnectableMixing
  • [ ] Update Output to use ConnectableMixing

  • Create effect.midi_inputs list
  • Create effect.midi_outputs list
  • Create Lv2MidiInput
  • Create Lv2MidiOutput
  • [ ] Create MidiConnection?
  • [ ] Doesn't enable connection between (audio) input and midi_output or (audio) output and midi_input ConnectableMixing
  • Adapt PersistenceDecoder to make midi connection
  • Add mod-host support

  • Create SystemMidiInput
  • Create SystemMidiOutput
  • Adapt SystemEffect for receive midi ports in constructor
    def __init__(self, representation, outputs, inputs):
    super(SystemEffect, self).__init__()
  • Change JackClient for obtains audio inputs, audio outputs, midi inputs and mid outputs.
    self.client.activate()
    def close(self):
  • Adapt SystemEffectBuilder for create SystemEffect with midi ports
    class SystemEffectBuilder(object):
    """
    Automatic system physical ports detection
    :param JackClient jack_client: :class:`.JackClient` instance that will get the information to
    generate :class:`.SystemEffect`
    """
    def __init__(self, jack_client):
    self.client = jack_client
    def build(self):
    inputs = []
    outputs = []
    for port in self.client.client.get_ports(is_audio=True, is_physical=True):
    if port.is_input:
    inputs.append(port.shortname)
    else:
    outputs.append(port.shortname)
    return SystemEffect('system', tuple(outputs), tuple(inputs))

How to test

How will works

pedalboard.connect(effect2.midi_outputs[0], effect.midi_inputs[0])
or 
pedalboard.connections.append(MidiConnection(effect2.midi_outputs[0], effect.midi_inputs[0]))
@SrMouraSilva SrMouraSilva added this to the v0.6.0 milestone Sep 17, 2017
@SrMouraSilva SrMouraSilva changed the title [Mod-host] Add midi support [Mod-host] Add midi plugins support Sep 23, 2017
@SrMouraSilva SrMouraSilva changed the title [Mod-host] Add midi plugins support [Mod-host] Add midi (plugins connections) support Sep 23, 2017
SrMouraSilva added a commit that referenced this issue Oct 15, 2017
SrMouraSilva added a commit that referenced this issue Oct 19, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant