Page 1 of 1

more modularity

Posted: 06 Oct 2021 03:39
by autumncheney
so i'm coming to radium from a program called sunvox, which is actually quite similar to radium in that it is a modular-style synth with a tracker sequencer. radium, of course, has a lot of features that sunvox doesn't, like vst plugin support and hard drive audio playback. however, i think radium also lacks some essential features that, if it had them, would allow it to blow sunvox out of the water

along with sample editing of course, what i'm mainly concerned about here is more modularity. not just module plugins, but also a framework that would allow connecting plugins and other modular mixer objects in a more modular way. the pd and faust integration are nice, but not many people would want to bother learning either of these two advanced things if they just want to do some wiring, and they shouldn't

quick note, when i say "object", i mean the container for instruments, plugins, and other things in the modular mixer

first off, the framework for connecting objects should be adjusted a little: it should expose all of an object's possible inputs and outputs, and an object should be able to accept and output not only audio but also midi and control data. this would allow you to control all aspects of an object and to send any needed data to it

secondly, what there should be is some kind of subpatch object. basically, it should let you contain an enitre modular mixer patch within a single object. this would be analogous to sunvox's metamodule. it should have a configurable, unlimited number of inputs and outputs, and it should also be able to contain subpatches within itself. whether it's simply an extra modular mixer canvas or possibly even an enitre instance of radium with the included sequencer is up to you. in the subpatch, the system output would be replaced with a patch output, or possibly multiple outputs

lastly, there should be some other new objects intended to be used for patches. i think the bare minimum would be:
  • an oscillator. it should have all the basic waveforms (saw, pulse, triangle, and sine), pulse width modulation, input for fm/rm, sync, and the ability to set the starting phase of the oscillator. additional waveforms are optional
  • an object to send midi data. it should be able to accept midi input from an external keyboard or from radium's sequencer and output pitch, velocity, and phase. it should also be able to output to multiple objects at once
  • an object to convert midi data to control data. for example, it could accept pitch data and output a control value to be used in, say, a pitch tracking filter. it should have an adjustable minimum and maximum output
  • an envelope follower, which converts audio to control data. this would basically allow you to turn any audio generator into a modulator
  • an envelope generator. whether this is adsr or something else is up to you
  • an object to convert control data to a pitch. along with being an alternative to using midi data, this would also allow a dc signal or something else to control pitch when paired with an aforementioned envelope follower
  • a filter. what type of architecture it implements is up to you
  • a feedback object, which would allow data or audio from an object or set of objects to be sent back into itself. a controller for latency is optional and would probably be helpful
other things that would be nice:
  • a sample/wavetable oscillator. the sample player already exists, and it could be upgraded to fit within the framework. it could also have the same controls as the regular oscillator, but this is up to you
  • an oscillator that implements paul nasca's padsynth algorithm
  • a compressor
  • an eq
  • a delay, which could delay the input by a set amount of time
  • a waveshaper
  • a frequency/pitch shifter
this is all i have to say. let me know if you found any of this confusing, and i hope you take these ideas into consideration!

Re: more modularity

Posted: 06 Oct 2021 15:05
by kjetil
autumncheney wrote: 06 Oct 2021 03:39 so i'm coming to radium from a program called sunvox, which is actually quite similar to radium in that it is a modular-style synth with a tracker sequencer. radium, of course, has a lot of features that sunvox doesn't, like vst plugin support and hard drive audio playback. however, i think radium also lacks some essential features that, if it had them, would allow it to blow sunvox out of the water

along with sample editing of course, what i'm mainly concerned about here is more modularity. not just module plugins, but also a framework that would allow connecting plugins and other modular mixer objects in a more modular way. the pd and faust integration are nice, but not many people would want to bother learning either of these two advanced things if they just want to do some wiring, and they shouldn't

quick note, when i say "object", i mean the container for instruments, plugins, and other things in the modular mixer

first off, the framework for connecting objects should be adjusted a little: it should expose all of an object's possible inputs and outputs,
Definitely. How to do this have been spinning around in my head for a while. The "PatchBay" objects were made for this specific purpose though, but they are not that intuitive to use.
and an object should be able to accept and output not only audio but also midi and control data. this would allow you to control all aspects of an object and to send any needed data to it
That's what the event connections are for:
mixer_connect_notes.png
mixer_connect_notes.png (35.84 KiB) Viewed 3841 times
(The green line in that old picture is an event connection (today the color is red by default). You create event connections by dragging lines between the "squares" (the ones placed to the left of the names) in the objects in the modular mixer,

But maybe you thought of something more general?
secondly, what there should be is some kind of subpatch object. basically, it should let you contain an enitre modular mixer patch within a single object. this would be analogous to sunvox's metamodule. it should have a configurable, unlimited number of inputs and outputs, and it should also be able to contain subpatches within itself. whether it's simply an extra modular mixer canvas or possibly even an enitre instance of radium with the included sequencer is up to you. in the subpatch, the system output would be replaced with a patch output, or possibly multiple outputs
Yes, that would definitely have been a nice feature.
lastly, there should be some other new objects intended to be used for patches. i think the bare minimum would be:

an oscillator. it should have all the basic waveforms (saw, pulse, triangle, and sine), pulse width modulation, input for fm/rm, sync, and the ability to set the starting phase of the oscillator. additional waveforms are optional
Isn't there a lot of third party plugin you can use for this?

an object to send midi data. it should be able to accept midi input from an external keyboard or from radium's sequencer and output pitch, velocity, and phase. it should also be able to output to multiple objects at once
Perhaps you can use the "MIDI Messages" object? You can send MIDI messages from the "MIDI Messages" to any effect in any instrument by first event-connecting the two objects and then using MIDI learn on the effect you want to control. I think you can do most of the these things already.
an object to convert midi data to control data. for example, it could accept pitch data and output a control value to be used in, say, a pitch tracking filter. it should have an adjustable minimum and maximum output
Yes, that would be nice. Maybe a good idea would be to add pitch-tracker as an input type to the modulator.
an envelope follower, which converts audio to control data. this would basically allow you to turn any audio generator into a modulator
You should be able to do that with the Modulator object. Select "Envelope follower" as Type.

an envelope generator. whether this is adsr or something else is up to you
Yes, another thing I've been meaning to add to the modulator.

an object to convert control data to a pitch. along with being an alternative to using midi data, this would also allow a dc signal or something else to control pitch when paired with an aforementioned envelope follower
Interesting.

a filter. what type of architecture it implements is up to you
All instruments have 6 filters easily available though (the equalizer): https://users.notam02.no/~kjetism/radiu ... widget.png

a feedback object, which would allow data or audio from an object or set of objects to be sent back into itself. a controller for latency is optional and would probably be helpful
You can use the Send/Receive objects to create feedback loops for audio.
other things that would be nice:
  • a sample/wavetable oscillator. the sample player already exists, and it could be upgraded to fit within the framework. it could also have the same controls as the regular oscillator, but this is up to you
  • an oscillator that implements paul nasca's padsynth algorithm
  • a compressor
  • an eq
  • a delay, which could delay the input by a set amount of time
  • a waveshaper
  • a frequency/pitch shifter
this is all i have to say. let me know if you found any of this confusing, and i hope you take these ideas into consideration!
Thanks for all the ideas! Great to know what people miss, or can't find, in the program.

Regarding Compressor, Eq, and Pitch Shfiter, these are all built into the instrument widget.

Regarding the Delay, perhaps look at the "TimeSkew" object.

Re: more modularity

Posted: 07 Oct 2021 01:49
by autumncheney
kjetil wrote: 06 Oct 2021 15:05 Definitely. How to do this have been spinning around in my head for a while. The "PatchBay" objects were made for this specific purpose though, but they are not that intuitive to use.
i agree, the patchbay objects aren't that intuitive. i suggest having more of those little nubs on the side, where one nub could represent a stereo input (or possibly two nubs, each a mono input)
That's what the event connections are for:

But maybe you thought of something more general?
perhaps those little squares could also be replaced by nubs in a different color?
Yes, that would definitely have been a nice feature.
forgot to mention, there should be configurable parameters for these subpatch objects so that you can control certain parameters from outside the patch
Isn't there a lot of third party plugin you can use for this?
the ams-lv2 plugins exist at https://github.com/blablack/ams-lv2, and i suppose i could use those. but those are only available as lv2, and i don't know how to port them to vst or ladspa. i suppose lv2vst is what i'm looking for in this case
Perhaps you can use the "MIDI Messages" object? You can send MIDI messages from the "MIDI Messages" to any effect in any instrument by first event-connecting the two objects and then using MIDI learn on the effect you want to control. I think you can do most of the these things already.
oh, i guess i'm mistaken
Yes, that would be nice. Maybe a good idea would be to add pitch-tracker as an input type to the modulator.
you mean a midi pitch tracker? or an audio pitch tracker using autocorrelation or something similar? or both possibly?
You should be able to do that with the Modulator object. Select "Envelope follower" as Type.
ah ok
Yes, another thing I've been meaning to add to the modulator.
the ams-lv2 plugins do have a vca to use, so this may be unnecessary.

All instruments have 6 filters easily available though (the equalizer): https://users.notam02.no/~kjetism/radiu ... widget.png
true, but i think having these as separate plugins would make things more consistent
Regarding Compressor, Eq, and Pitch Shfiter, these are all built into the instrument widget.
again, having these as separate plugins would be great
Regarding the Delay, perhaps look at the "TimeSkew" object.
i'll take a look!

Re: more modularity

Posted: 07 Oct 2021 06:40
by autumncheney
alright, so after some searching around i found a bunch of lv2 plugins that fulfill pretty much everything i really need to build a modular synth. i can live with the way the patchbay works too, though i still do wish that all of the inputs and outputs of a plugin are exposed in the mixer

now all i need is a subpatch object so that storing patches is much easier and doesn't clutter up the mixer