Open jiDOK opened 4 years ago
There are a few plugins out there that allow you to send MIDI from the host to physical or virtual devices. So it is already possible to do this, it is just not integrated directly into helio.
Agreed, the project seems great, but I've also been puzzled as to why this wouldn't be integrated into the app. I will search out plugins to handle this as you suggest.
What are these mysterious plugins?
The only thing I've found so far is https://github.com/RomanKubiak/ctrlr
But both helio and carla don't seem to recognise it on my system.
OMG OMG..! I FINALLY Found Something That Works!!!
https://github.com/falkTX/JackAss
(its only for Jack Audio soo...) ¯\_(ツ)_\/¯
Native MIDI out of Helio would be great!
How can midi out be obtained on iPad and MacOS? MIDI in is found by usb but out not. It would allow me to use my Synth, Helio would then be perfekt for me
After I finally found out a microtonal piano roll, it turned out that is has no MIDI out. But it's there where the microtonality is implemented in my case. This app looks great but useless for me because of such a trivial detail.
There is a VST called Ctrlr but Helio refuses to recognize it under Ubuntu.
I guess that the built-in instrument could be a good base for a new one which would simply forward to a system port the MIDI ON/OFF messages.
There are two source files BuiltInSynthAudioPlugin.cpp
and BuiltInSynth.cpp
which look like an interface and an implementation, respectively. The first one calls renderNextBlock(AudioSampleBuffer&, MidiBuffer&, int, int)
. The called method is a part of JUCE/Synthesizer. The built-in instrument does not override it, but instead renderNextBlock(AudioBuffer
, possibly called via the first mentioned method in order to obtain audio samples.
Maybe, it would be enough to override renderNextBlock(AudioSampleBuffer&, MidiBuffer&, int, int)
instead and make it write to a hardware port. Which in turn seems easy enough: JUCE/handling midi events.
Please check the development build, I've added this option in the audio settings section:
If you want to forward MIDI messages to the device without using any audio plugins inside the app, you'll need to set up an instrument, which acts as a proxy: first, create an instrument from any available plugin (e.g. the "Helio Default" one), go to routing page, remove the central node and connect the "Mini In" node directly to "Midi Out" node. Then assign this instrument to your track(s).
Not super convenient (hopefully I'll come up with some simpler approach someday), but this way you'll be able to map the MIDI keyboard in any way you want, or create several instruments with different MIDI mappings to be used in different tracks.
If I'm missing anything here, let me know.
I had problems compiling on Ubuntu 20.04.
Apart from the dependencies listed in Basic build instructions, also the packages juce-modules-source
and libtsl-hopscotch-map-dev
are required. This still produces ../../Source/Common.h:56:10: fatal error: ../../ThirdParty/HopscotchMap/include/tsl/hopscotch_set.h: No such file or directory
so the respective include statements should be changed to #include <tsl/hopscotch*.h>
. But then, a lot errors which looked like version mismatches were produced, for example
Compiling UnityBuild.cpp
In file included from ../Projucer/JuceLibraryCode/UnityBuild.cpp:11:
../../Source/Core/../../Source/Core/Audio/BuiltIn/BuiltInSynthAudioPlugin.cpp: In member function ‘virtual void BuiltInSynthAudioPlugin::fillInPluginDescription(juce::PluginDescription&) const’:
../../Source/Core/../../Source/Core/Audio/BuiltIn/BuiltInSynthAudioPlugin.cpp:36:17: error: ‘class juce::PluginDescription’ has no member named ‘uniqueId’
36 | description.uniqueId = description.name.hashCode();
| ^~~~~~~~
So for now, I cannot check if the upgrade works in Ubuntu, but I guess it does and as of me, it probably solves the problem.
@d01010101, the repo has a couple of submodules, which you need to initialize/update first (or just clone it with --recursive
flag).
Also fwiw, here are pre-built binaries of the development branch:
https://ci.helio.fm/helio-dev-x64.AppImage
https://ci.helio.fm/helio-dev-x64.tar.gz
Hi, awesome project! I really would like to use Helio as a way to sequence external synths. Is it possible to send the note and velocity data out a normal midi jack of an external sound card? I found the "MIDI Output" in the settings of a loaded VST plugin, but no way to configure the port etc. Thank you! J