scripting fruityloops or propellerheads reason from VB or Python?

I have both Fruityloops and Propellerheads Reason software synths on my Windows PC.

Any way I can get at and script these from either Visual Basic or Python? Or at least send Midi messages to the synths from code?

Update : attempts to use something like a "midi-mapper" (thanks for link MusiGenesis) don't seem to work. I don't think Reason or FL Studio act like standard GM Midi synths.

Update 2 : If you're interested in this question, check out this too.

Asked by: Marcus705 | Posted: 06-10-2021

Answer 1

Both applications support MIDI. It's just that they don't see each other.

In order to send messages via MIDI between applications, you need to install a virtual midi port.

There are several freely available, but this one works:

You'll get a virtual MIDI output port that you can write to as if it's a normal MIDI device. In Fruity Loops or Rebirth you choose that port as the input. That's all you need to do to connect the programs.

It'll work like this:

Your Application --> Virtual MIDI Port --> FruityLoops

Answered by: Chelsea539 | Posted: 07-11-2021

Answer 2

Note: This answer doesn't exactly answer the question you asked but it might achieve the result you want :)

You can author a VST plugin in Java using jVSTWrapper ( If you really wanted to use Python you could use Jython to interface to java and do it that way. Alternatively you could just write the plugin in Java or another scripting language for the JVM like Groovy.

Answered by: Briony967 | Posted: 07-11-2021

Answer 3

I think both FL Studio and Reason can be configured as the default MIDI playback device. To send MIDI messages to either from VB.NET, you'll need to PInvoke the midiOutOpen, midiOutShortMsg and midiOutClose API calls. Here's a link to code samples:

They're for VB6, but they should be easy to translate to VB.NET.

I know FL Studio can be "driven" from a plugin authored for FL (or a VSTx plugin), but I think these are always written in C or C++.

Edit: I just learned that Windows Vista dropped the MIDI Mapper (which would have made setting up FL or Reason as the default MIDI device simple). Amazing. Here is a link I found with an alternative solution:

I just tried it out (it's just a *.CPL file that you double-click to run) and it appears to work (although the GM Synth is the only option available on my laptop, so I'm not sure if it will pick up FL or Reason as choices).

Answered by: Victoria829 | Posted: 07-11-2021

Answer 4

What you need is a VST MIDI scripter / scripting plugin to create a logic of MIDI events that can be sent to any MIDI channel. You would need to set a MIDI channel in FL for the VST instrument/effect you need to tweak its values. Google for it there are some plugins around and please share them back here if you find anything useful :)

Answered by: Ada257 | Posted: 07-11-2021

Answer 5

You could write a Rewire host. Though, you will have to get a license (the license is free, but your application must be proprietary, so no open source).

Alternatively, you could interface through MIDI messages.

Finally, you could implement a dummy audio device which would route the audio to/from wherever you want or process it in some way. I imagine all of these would be reasonably difficult. MIDI is probably the easiest of the three (I have no idea how easy or hard the Rewire protocol is to use).

Answered by: Arthur759 | Posted: 07-11-2021

Answer 6

When it comes to Reason, you can do with it to much because of it's closed architecture - you can use VST plugins (or any other type like DirectX ones) - your only option is to use MIDI.

Regarding Fruity Loops, you could write a VST plugin that can take an input from a scripting language (VB, Python or whatever) but in order to write such thing you would have to use Delphi or C++.

Alternatively, you can check out MAX made by Cycling74 - it's something like a IDE for music ;-) - and I'm pretty sure you can use Python with it.

Answered by: Brad651 | Posted: 07-11-2021

Answer 7

There's an opensource music workstation, called Frinika, and you can script that in Javascript. (Insert / delete notes , change midi effects like pitch wheel etc.) It can import / export regular midi files, so it will work with Fruity loops or whatever else you have.

// Insert New

song.newLane("MyMidiLane", type("Midi"));
lane = song.getLane("MyMidiLane");

part = lane.newPart( time("10.0:000"), time("4.0:000") );

part.insertNote(note("c#3"), time("11.2:000"), time("2:0"), 120 );
part.insertNote(note("f3"), time("11.3:000"), time("1:0"), 100 );
part.insertNote(note("g#3"), time("11.3:000"), time("1:0"), 100 );
part.insertNote(note("b3"), time("11.3:000"), time("0:64"), 100 );
part.removeNote(note("f3"), time("11.3:000"));

part = song.newLane("MyTextLane",
type("Text")).newPart(time("24.0:000"), time("10.0:000"));
part.text = "This is the test text to be inserted.";[0].remove(); // remove initially inserted text-part 

Another example for reading/changing notes:

lane = song.getLane("MyMidiLane");
// a lane has a fixed instrument assigned[0].notes[0].duration=64[0].notes[1].duration=32[0].notes[1].startTick=120
// Parts are blocks of notes that you can drag around together in the Frinika GUI.
// They're like patterns in trackers.
for (i in[0].notes){
  println("i: "+i+", n: "+noteName([0].notes[i].note));
  println("i: "+i+", dur: "[0].notes[i].duration);
  println("i: "+i+", startT: "[0].notes[i].startTick);
} It has a Java Webstart launcher as well, so you don't even have to install.

It used to bundle the Javadoc documentation as well, but for some reason their latest downloads don't include that. It's a pity, because that's where the Javascript bindings are documented. So, now you have to browse the source or build the Javadoc yourself. (It has some built-in examples that are accessible from the scripting window, you should check them out first. My first example is from there.)

Here is the sourcefile where you'll find the Javascript docs:

frinika Javascript doc/source

But there are other options as well. You can check out mingus too, which is a Python library for music theory and midi file handling. It requires Fluidsynth, and the demo apps require GamePython too, so it's a bit more complicated to setup than Frinika.

P.S.: Frinika has a particular bug: when dragging around neighbouring notes, some might not sound the right length. You can help that by transposing forth and back the consecutive notes (fairly fast in piano roll view), or dragging the part that contains the notes forth and back. Restarting Frinika will also help, but that's the slower way. So this bug won't affect saved files, neither midi export.

Answered by: Ted605 | Posted: 07-11-2021

Similar questions

Still can't find your answer? Check out these communities...

PySlackers | Full Stack Python | NHS Python | Pythonist Cafe | Hacker Earth | Discord Python