philburk / hmsl

Hierarchical Music Specification Language, Forth tools for experimental music from the 1980's
Apache License 2.0
98 stars 9 forks source link

Can the JUCE version be built on Linux? On Windows? #133

Open znmeb opened 3 years ago

znmeb commented 3 years ago

It looks like the JUCE version is only for Macs. I don't have a Mac but I have several Linux systems and a high-end Windows gaming desktop. Is there some way I can build the latest JUCE port on these systems, or am I constrained to the older versions?

philburk commented 3 years ago

JUCE is supposed to provide cross platform support on Linux, Mac, Windows, Android, etc. So I decided to try it.

I installed JUCE on Ubuntu 18.04 I then loaded the file "hmsl/native/juce/JuceHMSL.jucer" and added an Export Target for LinuxMakefile.

git submodule update --init  # to load pforth
cd native/juce/Builds/LinuxMakefile
make

I got a missing "GL/gl.h" include file. So I entered:

sudo apt install mesa-common-dev

Now I am getting an error with assert and import. There are also a lot of JUCE files that need updating.

I would love to get this running on Linux but it may not happen today. Stay tuned.

znmeb commented 3 years ago

@philburk Thanks! If you do get it running on 18.04 I'll take a shot at porting it to arm64 / NVIDIA Jetson.

znmeb commented 3 years ago

Another thought / question: does the pForth implementation of HMSL still run without the JUCE GUI framework? I took a look at the JUCE license page and it's confusing / not something I have the energy or funding to deal with.

philburk commented 3 years ago

I have not tried to build the Windows version of HMSL in a long time. But it might work. I think Microsoft will still run WIn32 apps.

not something I have the energy or funding to deal with.

JUCE is free for personal use and open source projects.

znmeb commented 3 years ago

I'd be building on Linux, not Windows.

marclava commented 3 years ago

Hi Phil,

I used HMSL at the beginning of the 90's on a Mac Plus; this is how I learned a bit about Forth (and OOP)... I'd love to try HSML again, but I'm also a converted Linux user. I added a Linux Makefile target using Projucer (self-compiled 6.0.5 GPL version), but HMSL does not compile on Linux because support for Me2000 is missing. Is it possible to compile HMSL without Me2000?

Thanks

philburk commented 3 weeks ago

Is it possible to compile HMSL without Me2000?

The ME2000 is a portable General MIDI synth originally written for polyphonic ringtones. It provides a built-in synth for HMSL for consistent output. It should be able to build an ME2000 library for Linux. Source is here: https://github.com/philburk/mobileer-synth

If you want to remove the use of the ME2000 you would need to disable it from LocalSynth.cpp. I just added conditional compilation. Build with -DHMSL_DISABLE_ME2000 as a compiler switch.

https://github.com/philburk/hmsl/commit/cf49471aee4543ae4dd045e5bae4693a7629b08e

If the ME2000 is removed then HMSL could be used with just the external MIDI:

midi_port_external midi-port !

Now your HMSL MIDI will be sent out from HMSL and can be used as Input to Logic Pro or other apps.