Run Commands option


#1

The main idea is to define a way that users could place their own scripts or tools into a discoverable location on the device and then run them via a Menu option.

For example, I want to run a Python script that will generate MIDI events or play an audio file. As a power user, I can ssh into the Duo, copy my files over and run the script via a terminal on my laptop. That’s great for hacking and in-home experimentation, but if I want to take my successful results on the road, I’ll need to bring an external computer.

My idea is to add the ability to run any executable scripts that reside within a designated directory. On the Duo menu, a Run Command option would be added, and when selected it would display any commands that are available in the directory:

play_audio_file
black_midi_sequence
randomly_play_scream_sample
...

If a command is selected, the Duo would execute the command

Why?

With the Duo being a Linux box running open source software, the opportunities for hacking and extending the functionality are wide. This would allow power users and innovators to utilize the Duo in ways that the current UI and/or pedalboard paradigm would hinder. Examples?

  • Play audio files or samples
  • Play MIDI files, generate MIDI sequences
  • Custom MIDI event handling/routing, MIDI macros
  • Automation - alter plugin parameters in realtime based on patterns, time, or other inputs (who wants a filter sweep? :wink:)
  • Activate global presets or overrides
  • Capture audio to file
  • Run other synths

X42 midi generator
#2

Actually, most of (I think all) of these tasks could be performed by lv2 plugins, the hard part being file management on the DUO. I thought about writing a simple file playback/looping plugin and an accompanying bash script that you’d run on your computer. The script would scp an audio file you select from your computer to the DUO, and generate a preset file for the plugin that points to that file. This makes the file accessible by just loading the new preset in the modUI. Add that to a mod pedalboard and your backing track is ready for the road.

While this may seem like more work, its totally doable without any changes to the MOD software, and then the plugins could be available to other platforms than MOD. While I like hackability, I also like re-useability so the plugin thing seems to me like the way to do it.

Long term I think MOD will add a file managament UI that allows you to copy the files you need to the DUO and allow plugins to open a file selection dialog to load IRs, samples, midi files, configurations, whatever.

EDIT: actually, after a moments thought: you could probably write an lv2 plugin called “bash runner” that does exactly what you want. Just copy the script, write a .ttl preset, and load the preset in the modUI.


X42 midi generator
#3

as a follow on, the technology for lv2 plugins to load files is already existing and used. I used the preset pattern on my plugin reMID.lv2 because at its release some desktop lv2 plugin hosts did not provide a file browser. You can see the how the presets are written: https://github.com/ssj71/reMID.lv2/blob/master/src/remid.ttl#L103

The files in this example are already in the same directory as the plugin, but these could be absolute paths for the mod. I’d be happy to advise someone who has a little more time to tinker to help them get this working.


#4

I imagine that the bash-runner plugin could easily be controlled via midi-events as well…

That makes me think of that idea I wrote somewhere on the forum of having a midi plugin able to act as a new jack midi client, so that one can translate midi events from the midi port on the pedalboard into events capable of controlling other plugins (it could also work the other way around).

I have started writing such a plugin but did not go very far as I lack time.

But it could also be merged with the bash-runner idea somehow…


#5

As a hint, the guitarix livelooper plugin could already record and play files on the MOD. :space_invader:


#6

thats great. Does it use lv2 states to save the current file playing back’s path?


#7

No. :alien:
Like I usually do this stuff, it’s a hack. :rofl: