The repo contains a syntax highlighter for VSCode, which is what we use. One of our to-do-list items is to publish a proper VSCode extension to make it easy to instal, and also eventually to write a LSP (language server) for it, but those sorts of non-core tasks will probably not get done until we have more people on the team!haslo wrote: Sat Jan 02, 2021 12:17 am What remains is the question of dev tools. I've seen you use an editor in the keynote, but the only way I found to get syntax highlighting is using the online lab. Is there other support for the language in IDEs?
Once I tried to start a fair discussion... :)
-
- Chief Tracktioneer
- 532 posts since 14 Nov, 2002 from London
-
- KVRist
- 82 posts since 5 Dec, 2019
Thanks, that's a great start!jules wrote: Sat Jan 02, 2021 8:39 amThe repo contains a syntax highlighter for VSCode, which is what we use. One of our to-do-list items is to publish a proper VSCode extension to make it easy to instal, and also eventually to write a LSP (language server) for it, but those sorts of non-core tasks will probably not get done until we have more people on the team!
-
- KVRAF
- 1602 posts since 14 Oct, 2002
Thanks Jules. Is there any example/tutorial on how to do it?
thanks
-
- Chief Tracktioneer
- 532 posts since 14 Nov, 2002 from London
We don't have a tutorial, as it's pretty simple - you just use the `soul generate --juce` option and it'll spit out the code:
https://github.com/soul-lang/SOUL/blob/ ... Command.md
-
- KVRAF
- 1602 posts since 14 Oct, 2002
Oh thanks. So does it spit out a Projucer project?...well yes...i've just read the link you wrote. Thanks a lot.jules wrote: Sat Jan 02, 2021 7:17 pm
We don't have a tutorial, as it's pretty simple - you just use the `soul generate --juce` option and it'll spit out the code:
https://github.com/soul-lang/SOUL/blob/ ... Command.md
- KVRian
- Topic Starter
- 1241 posts since 17 Feb, 2010
-
- KVRAF
- 1602 posts since 14 Oct, 2002
Yeah! Great news! I just tried a quick export from command line and got a Juce file then flawlessy compiled to VST3. Perfect! I guess that SOUL libraries will grow a lot in the future. I've just seen that doesn't seems to be available a mechanism taking account of sustain pedal in the voice allocation functions in the library. Am i right?
- KVRist
- 481 posts since 30 May, 2018
How do you get it to compile to a VST3? I tried it in the Browser and them compiled it and then downloaded it but all it gave me were .Soul files.lalo wrote: Mon Jan 25, 2021 10:22 am Yeah! Great news! I just tried a quick export from command line and got a Juce file then flawlessy compiled to VST3. Perfect! I guess that SOUL libraries will grow a lot in the future. I've just seen that doesn't seems to be available a mechanism taking account of sustain pedal in the voice allocation functions in the library. Am i right?
How do you get these .soul files to compile into a VST3?
Reaper (win), i7-7700k, 16GB
-
- KVRAF
- 1602 posts since 14 Oct, 2002
I downloaded the soul.exe command tool, added its path to system wide environment variables then open a cmd instance and then made a "soul generate mypatch.soulpatch - - juce - - output=mypath". Then i open the generated .jucer file with Projucer and set all the relevant options (to tell the compiler if the resulting VST3 is an instrument or not, receives MIDI in or not etc.). Then from Projucer open the resulting project with VS2019 and build the solution.MasterTuner wrote: Mon Jan 25, 2021 1:58 pm How do you get it to compile to a VST3? I tried it in the Browser and them compiled it and then downloaded it but all it gave me were .Soul files.
How do you get these .soul files to compile into a VST3?
- KVRist
- 481 posts since 30 May, 2018
thanks, appreciate that.lalo wrote: Mon Jan 25, 2021 2:19 pmI downloaded the soul.exe command tool, added its path to system wide environment variables then open a cmd instance and then made a "soul generate mypatch.soulpatch - - juce - - output=mypath". Then i open the generated .jucer file with Projucer and set all the relevant options (to tell the compiler if the resulting VST3 is an instrument or not, receives MIDI in or not etc.). Then from Projucer open the resulting project with VS2019 and build the solution.MasterTuner wrote: Mon Jan 25, 2021 1:58 pm How do you get it to compile to a VST3? I tried it in the Browser and them compiled it and then downloaded it but all it gave me were .Soul files.
How do you get these .soul files to compile into a VST3?
At the present moment I am getting into Juce. My knowledge of C++ is limited that why Soul appeals. However, I just looked at the Soul libraries and at the moment there are not many. Specifically I'd like to do a midi plugin and the Soul documentation says it wants to avoid midi as much as possible.
I think I'll concentrate on Juce for the moment but keep an eye on Soul.
Reaper (win), i7-7700k, 16GB
-
- KVRAF
- 1602 posts since 14 Oct, 2002
I guess that the "event" type of data would be a good candidate for dealing with MIDI I/O but probably exporting to a Juce project is still to be figured out as for MIDI output is concerned.
-
- Chief Tracktioneer
- 532 posts since 14 Nov, 2002 from London
SOUL will happily work with (short) MIDI messages, so you could write any kind of MIDI effect you want using it.MasterTuner wrote: Mon Jan 25, 2021 2:42 pm Specifically I'd like to do a midi plugin and the Soul documentation says it wants to avoid midi as much as possible.
However, we do think that MIDI's a pretty terrible API and not something to encourage, so for the main use-case, e.g. writing a synth, we've provided some converters and event classes that should do everything you need for a full MPE synth without needing to get down to the MIDI byte level.
If you're planning on some kind of very MIDI-specific tool then you could still do that, and use the `soul::midi::Message` objects that you receive, which let you see the 3 midi bytes. We could add more utility functions for those if there's demand for them, but most likely if you're a MIDI-head writing some kind of MIDI utility, you'll be happy to do that sort of thing yourself.
-
- KVRAF
- 1602 posts since 14 Oct, 2002
Hi Jules, i'm trying to understand if in the core library voice management there's some support for sustain pedal. But at a first glance it doesn't seem so. If i am right is there any plan to add it? Or if i try to add it myself, where can i look at for all the core library implementation? thanksjules wrote: Mon Jan 25, 2021 4:52 pm
SOUL will happily work with (short) MIDI messages, so you could write any kind of MIDI effect you want using it.
- KVRist
- 481 posts since 30 May, 2018
Thanks, I was thinking of making a plugin that tries to discern what scale you're in, and what chord is currently being played.jules wrote: Mon Jan 25, 2021 4:52 pm If you're planning on some kind of very MIDI-specific tool then you could still do that, and use the `soul::midi::Message` objects that you receive, which let you see the 3 midi bytes. We could add more utility functions for those if there's demand for them, but most likely if you're a MIDI-head writing some kind of MIDI utility, you'll be happy to do that sort of thing yourself.
While the creator of Juce is here : ), would you mind if I asked a newb question about the ...AudioProcessor::processBlock() ?
How much audio is the processBlock() taking in at at time ? Is it one second of audio?
Also, my final newb question:
I want to start processing the audio buffer when the audio starts on a boundary of a measure, or beat. Is there any tips you can give (or docs I can read) that will help me knowing if the playhead audio lines up with a beat or measure boundary?
i.e.:
Start processing here:

Not here, don't process until the playhead reached the bar boundary:

Reaper (win), i7-7700k, 16GB
-
- Chief Tracktioneer
- 532 posts since 14 Nov, 2002 from London
Yeah, good point, we've not done that yet. The place to add it would be in here:lalo wrote: Mon Jan 25, 2021 5:43 pm Hi Jules, i'm trying to understand if in the core library voice management there's some support for sustain pedal. But at a first glance it doesn't seem so. If i am right is there any plan to add it? Or if i try to add it myself, where can i look at for all the core library implementation? thanks
https://github.com/soul-lang/SOUL/blob/ ... s.soul#L96
If you want to have a go at sketching something out that works, we'd be happy to take a look and see if it's something we can get into the library.
Nice try, but I've not got time to do the whole "how buffers work" explanationMasterTuner wrote: Mon Jan 25, 2021 6:08 pm While the creator of Juce is here : ), would you mind if I asked a newb question about the ...AudioProcessor::processBlock() ?
How much audio is the processBlock() taking in at at time ? Is it one second of audio?
Also, my final newb question:
I want to start processing the audio buffer when the audio starts on a boundary of a measure, or beat. Is there any tips you can give (or docs I can read) that will help me knowing if the playhead audio lines up with a beat or measure boundary?
i.e.:
Start processing here:
Not here, don't process until the playhead reached the bar boundary:
![]()
But the TL:DR; for any question that involves the size of a block in a process callback is "no, you have no control and you can't assume anything about its size, so just deal with it."

