New Free Open Source Synth, Terrain, By Aaron Anderson

VST, AU, AAX, CLAP, etc. Plugin Virtual Instruments Discussion
Post Reply New Topic
RELATED
PRODUCTS
Terrain

Post

Everything seems fine in Reaper on Windows 11.
Running at 4x oversample and it's no worse than a lot of other synths.

Is there (or is it planned for) a way to map the controls to MIDI CC?
Would it be hard coded? Or maybe RH click to map a control?

Or are we getting ahead of ourselves? ;)
John Braner
http://johnbraner.bandcamp.com
http://www.soundclick.com/johnbraner
and all the major streaming/download sites.

Post

OK - I found something. If you save a Reaper preset with settings that you like, then play around - if you then load the Reaper preset, then none of the controls work anymore. In other words, Terrain is frozen at the settings of th eReaper preset (and works fine) but you can't change anything.
John Braner
http://johnbraner.bandcamp.com
http://www.soundclick.com/johnbraner
and all the major streaming/download sites.

Post

aaron_anderson wrote: Tue Oct 22, 2024 12:49 am This is really helpful, thank you!

I'm unable to find the Surge Synth Team server; I think it may be private. Are you able to send me an invite? I'm "aaron_anderson." on Discord (I don't know much about discord; let me know if I need to provide more information than that).

It seems straight-forward enough to implement! I have a few items on the roadmap before it, but plan to tackle this for version 1.1.0.
Yeah it's indeed designed to be easy to implement. I sent you a friend request on Discord and I see you found the server links, we can continue there.

Post

tested and now, finally works well on an old mac mini 2012 intel i7,
under mojave in logic 10.5.1

first it did not work in logic and crashed validation
crashlogs saved in case of interest (PM)

was working fine in hostingAU though

after a restart also no problems (aka validation) in logic

notes:
wonderful
kind of reminds me strongly to newfangled Generate/pendulate
because of its morphing/bending osc

nice GUI imho
easily understandable imho
good colors

some ideas/notes aka wishlist:
a RND button for randomnly generating patches
(love it in Generate, Filterscape etc etc)
best with a strength slider

a bunch of LFOs, ENVs
for modulation all kind of sliders
(terrain a/b, all of those trajectory sliders/parameters...)

stereo oscillator distribution
SUMU has quite an interesting one...
Generate also...

Post

El°HYM wrote: Tue Oct 22, 2024 6:04 pm
aaron_anderson wrote: Tue Oct 22, 2024 5:28 pm
You're very welcome! Fortunately 16x is pretty overkill. I tried the worst-case scenario (the butterfly trajectory on a fully saturated terrain, with the highest note on the keyboard) and 8x oversampling was enough to remove any audible aliasing. For nearly all use cases I would recommend 2x.

Thank you for testing!
88 or 61 Keys, because a lot of digital ones start get really ugly above C5.
I just tested again and you're right; it is easy to get aliasing with the sinusoidal terrain with maximum harmonics, the scale of the trajectory large, and the butterfly trajectory even at 16x oversampling.

Post

Its a problematic Area in the Digital Domain with no final solution (yet). One could go higher and higher with OS as processors are becoming more powerful. Then we are also dealing with the Filters and such, which can introduce other problems. Some older Papers suggested above 500 kHz to push Aliasing back into the inaudible range; yet also in slightly different context than internal processing. So 768 kHz, which would be 16 x 48 kHz again seems pretty realistic.
You can be creative in any right place on Earth, and not only in the wealthiest cities. Bring the world feelings from everywhere, and not only feelings of capitalistic or jail environment.
― Aleksey Vaneev


https://linuxdaw.org

Post

jbraner wrote: Tue Oct 22, 2024 6:15 pm Everything seems fine in Reaper on Windows 11.
Running at 4x oversample and it's no worse than a lot of other synths.

Is there (or is it planned for) a way to map the controls to MIDI CC?
Would it be hard coded? Or maybe RH click to map a control?

Or are we getting ahead of ourselves? ;)
There are plans for midi-learn to control parameters (also separate envelopes/LFOs to control parameters). This is going to be more of a 2.0.0 thing; it's a ways off unfortunately.

Post

jbraner wrote: Tue Oct 22, 2024 6:27 pm OK - I found something. If you save a Reaper preset with settings that you like, then play around - if you then load the Reaper preset, then none of the controls work anymore. In other words, Terrain is frozen at the settings of th eReaper preset (and works fine) but you can't change anything.
Thank you for finding this! The good news is I was able to reproduce the issue and am fairly confident on the reason this is happening. The bad news is that if I'm right then the fix will be quite involved. I'll add this fix to my 1.0.3 roadmap (it will take a week or two to get around to this).

Post

muki wrote: Tue Oct 22, 2024 6:44 pm tested and now, finally works well on an old mac mini 2012 intel i7,
under mojave in logic 10.5.1

first it did not work in logic and crashed validation
crashlogs saved in case of interest (PM)

was working fine in hostingAU though

after a restart also no problems (aka validation) in logic

notes:
wonderful
kind of reminds me strongly to newfangled Generate/pendulate
because of its morphing/bending osc

nice GUI imho
easily understandable imho
good colors

some ideas/notes aka wishlist:
a RND button for randomnly generating patches
(love it in Generate, Filterscape etc etc)
best with a strength slider

a bunch of LFOs, ENVs
for modulation all kind of sliders
(terrain a/b, all of those trajectory sliders/parameters...)

stereo oscillator distribution
SUMU has quite an interesting one...
Generate also...
Unfortunately I don't have Logic to test this in. I am interested in your crash log though; maybe it will have useful information. Please send that in a PM if you still have it.

I really like your idea of randomly generated presets. I will be adding a preset feature in version 1.0.4; I added randomly generated presets to the development roadmap.

Adding LFO/Envelopes is a far off feature, something like 2.0.0. I did implement this in another version of the synth but the interface for such a feature is one of the hold-ups; I'm trying as best as I can to make things obvious enough that one wouldn't need a manual. My solution in the other version was to drag-drop the controller onto the parameter to be controlled. The other hold-up is that the code I created to do this was near impossible to follow; I need to find a better way to handle this - it's important to me that my code also doesn't require a manual. At any rate, more pressing features (in my mind) will come before this, like microtonality support and MPE support.

Thank you for your input!

Post

aaron_anderson wrote: Tue Oct 22, 2024 10:24 pm Unfortunately I don't have Logic to test this in. I am interested in your crash log though;
sent
unfortunately i'm too blind to see how to attach files, i.e. a zip of 2 crashlogs
so i put it into a codebox - should be fine i hope

but:
how does one attach files into a PM ?

Post

Booleaning Moving/Interacting Terrains/Waves/Fluid Surfaces/Materials

Edit: @ Devs (and others); what do you think of two separate moving landscapes interacting through realtime CAD-type solid modeling functions, like Subtract, Add and Union, etc. (and/or including wave-propagation rules options, such as cancel-outs and amplifications?), whose results/interplays net the sound?
Seems that would be a next step after the 2d laser-light projection onto the surface, yes?

Perhaps wireframe/phong-shading/etc. options like they have in CAD/animation/game-creation apps would make sense for computation manageability.

A 'video synth' 'code element', as per the one linked in this comment (Lumen) might be able to continuously generate height-maps/fractal height-maps on the fly for those moving, wavey landscapes. Maybe this code element already exists in Terrain. (The video is of CSound, yes?)

---

Possibilities for Dynamical Wave Terrain Synthesis

"...For the most part, the application of dynamical systems to WT synthesis was a response to observing trajectory complexity in real-world signals when represented in discrete phase space and pseudo-phase space. By effectively recreating and waveshaping real-world samples within the WT synthesis model – using two-dimensional discrete phase space and pseudo-phase space plots as trajectory orbits – it has become clear to what extent WT synthesis may have remained in the realms of simple structural types due to the use of Euclidean functional archetypes. As a result, elements of complexity have largely not been fully tried and tested in the WT synthesis model. Even though WT synthesis is not that different from waveshaping synthesis, it is potentially more adaptable. Due to its multi-parameter flexibility, the technique can be modified and adapted in terms of methodological approach. This multi-parameter and multi-faceted flexibility needs to be explored to achieve a further understanding of the WT synthesis paradigm.

It seems that the introduction of dynamical systems theory may complement the WT synthesis model. Dynamics will allow for more organic control over the sound synthesis technique by providing more flexibility over the phase state of the system at any given time, and may serve to interface with the many control parameters already inherent within the existing WT synthesis model. It seems earlier approaches may be too restrictive for expressive control. The introduction of dynamical systems has been discussed at various stages of the terrain function model, and various issues pertinent to both the terrain and trajectory systems have been addressed, including those relating to multi-dimensional signal processing and computational efficiency. Further research may involve thoroughly testing dynamical systems within the WT synthesis model. Other avenues of investigation might include a thorough assessment regarding the use of vector bundles as a means of developing control over the form of a passive periodic element within the dynamical framework of a trajectory orbit. Another possibility may be the introduction of a system for the dynamic modeling of system attractors (Röbel 2001), involving various stages of analysis of successive representations of embedded plots in pseudo-phase space. These structures have great potential for application within this synthesis paradigm.

There are many options for future investigation, and dynamical systems theory – an immense area alone – may only be the start of further investigation. It is certain that a great deal of work is still necessary to make any particularly useful and conclusive judgments based on the extended practical use of WT synthesis. It is also clear that this work is still a long way from drawing any comprehensive conclusions concerning the applications of dynamics to WT synthesis."

~ Stuart James, January 2003, Conference: Australasian Computer Music Conference, Edith Cowan University

---



---

Lumen Video Synthesizer

[Wave Terrain Synthesis Leveraging Video Synthesis In Reverse?]
Last edited by Borbolactic on Wed Oct 23, 2024 5:16 pm, edited 4 times in total.

Post

aaron_anderson wrote: Tue Oct 22, 2024 10:11 pm
jbraner wrote: Tue Oct 22, 2024 6:27 pm OK - I found something. If you save a Reaper preset with settings that you like, then play around - if you then load the Reaper preset, then none of the controls work anymore. In other words, Terrain is frozen at the settings of th eReaper preset (and works fine) but you can't change anything.
Thank you for finding this! The good news is I was able to reproduce the issue and am fairly confident on the reason this is happening. The bad news is that if I'm right then the fix will be quite involved. I'll add this fix to my 1.0.3 roadmap (it will take a week or two to get around to this).
That's OK - just keep us informed here, so we can test new versions.
We *do* need some kind of way to store presets ;)

There are plans for midi-learn to control parameters (also separate envelopes/LFOs to control parameters). This is going to be more of a 2.0.0 thing; it's a ways off unfortunately.
Well, we'll just have to keep following then... ;)
The meandering will help with some of this.
John Braner
http://johnbraner.bandcamp.com
http://www.soundclick.com/johnbraner
and all the major streaming/download sites.

Post

Borbolactic wrote: Wed Oct 23, 2024 5:55 am Booleaning Moving/Interacting Terrains/Waves/Fluid Surfaces/Materials

Edit: @ Devs (and others); what do you think of two separate moving landscapes interacting through realtime CAD-type solid modeling functions, like Subtract, Add and Union, etc. (and/or including wave-propagation rules options, such as cancel-outs and amplifications?), whose results/interplays net the sound?
Seems that would be a next step after the 2d laser-light projection onto the surface, yes?

Perhaps wireframe/phong-shading/etc. options like they have in CAD/animation/game-creation apps would make sense for computation manageability.

A 'video synth' 'code element', as per the one linked in this comment (Lumen) might be able to continuously generate height-maps/fractal height-maps on the fly for those moving, wavey landscapes. Maybe this code element already exists in Terrain. (The video is of CSound, yes?)

---

Possibilities for Dynamical Wave Terrain Synthesis

"...For the most part, the application of dynamical systems to WT synthesis was a response to observing trajectory complexity in real-world signals when represented in discrete phase space and pseudo-phase space. By effectively recreating and waveshaping real-world samples within the WT synthesis model – using two-dimensional discrete phase space and pseudo-phase space plots as trajectory orbits – it has become clear to what extent WT synthesis may have remained in the realms of simple structural types due to the use of Euclidean functional archetypes. As a result, elements of complexity have largely not been fully tried and tested in the WT synthesis model. Even though WT synthesis is not that different from waveshaping synthesis, it is potentially more adaptable. Due to its multi-parameter flexibility, the technique can be modified and adapted in terms of methodological approach. This multi-parameter and multi-faceted flexibility needs to be explored to achieve a further understanding of the WT synthesis paradigm.

It seems that the introduction of dynamical systems theory may complement the WT synthesis model. Dynamics will allow for more organic control over the sound synthesis technique by providing more flexibility over the phase state of the system at any given time, and may serve to interface with the many control parameters already inherent within the existing WT synthesis model. It seems earlier approaches may be too restrictive for expressive control. The introduction of dynamical systems has been discussed at various stages of the terrain function model, and various issues pertinent to both the terrain and trajectory systems have been addressed, including those relating to multi-dimensional signal processing and computational efficiency. Further research may involve thoroughly testing dynamical systems within the WT synthesis model. Other avenues of investigation might include a thorough assessment regarding the use of vector bundles as a means of developing control over the form of a passive periodic element within the dynamical framework of a trajectory orbit. Another possibility may be the introduction of a system for the dynamic modeling of system attractors (Röbel 2001), involving various stages of analysis of successive representations of embedded plots in pseudo-phase space. These structures have great potential for application within this synthesis paradigm.

There are many options for future investigation, and dynamical systems theory – an immense area alone – may only be the start of further investigation. It is certain that a great deal of work is still necessary to make any particularly useful and conclusive judgments based on the extended practical use of WT synthesis. It is also clear that this work is still a long way from drawing any comprehensive conclusions concerning the applications of dynamics to WT synthesis."

~ Stuart James, January 2003, Conference: Australasian Computer Music Conference, Edith Cowan University

---



---

Lumen Video Synthesizer

[Wave Terrain Synthesis Leveraging Video Synthesis In Reverse?]
Regarding multiple landscapes - I actually started implementing this exactly as you have mentioned! In fact, the Terrain variable is terrainA in anticipation of the second terrainB. That's also what the extra space is for under the terrain selection/modifiers. I decided it wasn't going to be a 1.0.0 feature; my last attempt at this project failed because I got carried away with adding everything I thought of (the idea you mentioned, Granular/Particle Terrain algorithms, Drag and Drop LFO/Envelope controllers, etc). I have not yet decided when I will implement this feature but you will see it in the future.

Regarding graphics rendering methods - the default (only) method I have implemented is extremely lightweight and processes on it's own thread on the CPU, and rendered entirely on the GPU. I tested this on a potato of a macbook; if it works there it will work anywhere. That being said I would like to add Visualization options. The unfortunate reality is that whenever I work on that, I'm not working on DSP improvements, audio feature requests, and Interface improvements which by all rights should take priority.

I'm not quite sure how Lumen is doing what it is doing, but I wouldn't necessarily need to. If I added a web-cam to terrain feature, syphon could be plugged in to Terrain. Web-cam to terrain and/or video terrain is a feature that I may never implement; It would be quite complicated to turn a 30FPS matrix into a per-sample interpolated 3D wavetable. Certainly possible, but that is very high-hanging fruit.

Thanks for the links. I nearly have that Stuart James paper memorized at this point. I discovered WTS while reading the Computer Music Tutorial by Curtis Roads, which pointed me to Stuart James.

Post

aaron_anderson wrote: Wed Oct 23, 2024 5:37 pm
Borbolactic wrote: Wed Oct 23, 2024 5:55 am Booleaning Moving/Interacting Terrains/Waves/Fluid Surfaces/Materials

Edit: @ Devs (and others); what do you think of two separate moving landscapes interacting through realtime CAD-type solid modeling functions, like Subtract, Add and Union, etc. (and/or including wave-propagation rules options, such as cancel-outs and amplifications?), whose results/interplays net the sound?
Seems that would be a next step after the 2d laser-light projection onto the surface, yes?

Perhaps wireframe/phong-shading/etc. options like they have in CAD/animation/game-creation apps would make sense for computation manageability.

A 'video synth' 'code element', as per the one linked in this comment (Lumen) might be able to continuously generate height-maps/fractal height-maps on the fly for those moving, wavey landscapes. Maybe this code element already exists in Terrain. (The video is of CSound, yes?)

---

Possibilities for Dynamical Wave Terrain Synthesis
[...]
"...For the most part, the application of dynamical systems to WT synthesis was a response to
There are many options for future investigation, and dynamical systems theory – an immense area alone – may only be the start of further investigation. It is certain that a great deal of work is still necessary to make any particularly useful and conclusive judgments based on the extended practical use of WT synthesis. It is also clear that this work is still a long way from drawing any comprehensive conclusions concerning the applications of dynamics to WT synthesis."

~ Stuart James, January 2003, Conference: Australasian Computer Music Conference, Edith Cowan University

---



---

Lumen Video Synthesizer

[Wave Terrain Synthesis Leveraging Video Synthesis In Reverse?]
Regarding multiple landscapes - I actually started implementing this exactly as you have mentioned! In fact, the Terrain variable is terrainA in anticipation of the second terrainB. That's also what the extra space is for under the terrain selection/modifiers. I decided it wasn't going to be a 1.0.0 feature; my last attempt at this project failed because I got carried away with adding everything I thought of (the idea you mentioned, Granular/Particle Terrain algorithms, Drag and Drop LFO/Envelope controllers, etc). I have not yet decided when I will implement this feature but you will see it in the future.

Regarding graphics rendering methods - the default (only) method I have implemented is extremely lightweight and processes on it's own thread on the CPU, and rendered entirely on the GPU. I tested this on a potato of a macbook; if it works there it will work anywhere. That being said I would like to add Visualization options. The unfortunate reality is that whenever I work on that, I'm not working on DSP improvements, audio feature requests, and Interface improvements which by all rights should take priority.

I'm not quite sure how Lumen is doing what it is doing, but I wouldn't necessarily need to. If I added a web-cam to terrain feature, syphon could be plugged in to Terrain. Web-cam to terrain and/or video terrain is a feature that I may never implement; It would be quite complicated to turn a 30FPS matrix into a per-sample interpolated 3D wavetable. Certainly possible, but that is very high-hanging fruit.

Thanks for the links. I nearly have that Stuart James paper memorized at this point. I discovered WTS while reading the Computer Music Tutorial by Curtis Roads, which pointed me to Stuart James.
Cool to know, Aaron, and understood...
I suppose once we excitedly start going down some paths, even if only in theory/conjecture, they inevitably branch out to infinity-- a luxury of course none of us have. :D

Post

@Aaron - I know Andreya has been in touch and would be great to see you in the surge tuning channel, but also the way I often share the simplest MTS onboarding is to share the single diff I did to take monique from 440 * 2^((key-69)/12) to that or MTS-ESP client.

https://github.com/surge-synthesizer/mo ... 52cb9e30ff

It's three years old but is basically the same today. I introduced a tuning handler with that in case I wanted to do direct SCL/KBM but never got around to it in monique. Hope that helps!

Peking at your code, you probably want to just replace

```
setFrequency (static_cast<float> (juce::MidiMessage::getMidiNoteInHertz (midiNoteNumber)));
```

with an if-client-bound-client-frequency-else-that.

Post Reply

Return to “Instruments”