MyCo ·
Hi!
Here are some additional Oscilators. That's just my first step with SM.
http://music-spy.de/osc_list.osm
The 3 on the right are phase shifted, to avoid clicks when using fast attacks.
Nothing else to say 🙂
Bye Maik
From the original SynthMaker forum (2004–2014), with its members’ names and dates.
MyCo ·
Hi!
Here are some additional Oscilators. That's just my first step with SM.
http://music-spy.de/osc_list.osm
The 3 on the right are phase shifted, to avoid clicks when using fast attacks.
Nothing else to say 🙂
Bye Maik
The Sound Scientist ·
Hello MyCo... =).. Cool Stuff here.. i dig the Oscs'... Very Nice Work!! Can't wait to see more!! Have Fun with SM.. Much Love 😍 Peace and Science 🙂 😀 😉
infuzion ·
Welcome to SM land MyCo. Some nifty ideas!
I'm trying to understand why you do this:
Also, I think it's better CPU-wise to have everything in one Code block, rather than 3-5 code blocks per OSC like you have now. Though your technique is great for prototyping.
djaram ·
Hey Myco,
Great Stuff. I learned a lot from this example.
Regards,
MyCo ·
infuzion wrote: I'm trying to understand why you do this:
That returns the fractional part of a float value. So the phase input of the code module gets only values from -0.9999 to 0.9999. I haven't found another solution for this problem, something like a float modulus.
Those "analogue" titled oscilator are just some tests, it is possible to do it in one code module by raising the output signal to the power of 3.
Shifrin ·
Hi Maik,
These look interesting, I'm looking forward to trying them out (and hearing them)!
With respect to CPU usage and 'multiple' code modules -vs- 'all in one' code modules - I don't think there should be much change in CPU usage, perhaps only slightly more for the multiple code module version, devs?!
Also, the 'float' thing you have for the phase input looks odd indeed, like infuzion says. You have the 'phase' input as a sample-rate signal feeding a float math component - this shouldn't work AFAIK (although it must do something or it wouldn't work!). Very strange indeed! And I think there is float modulus support in the code component with the '%' operator 😉
Shif.
stefan ·
or you could use the rndint() to get the fractional part of a float value.
streamin val; streamout frac; float temp;
temp = val - 0.5; fraq = rndint(temp);
I think....
Shifrin ·
stefan wrote: or you could use the rndint() to get the fractional part of a float value.
That's how I do it 😉
Shif.
MyCo ·
I haven't test it with a poly signal at the moment. But if you connect a knob to phase input of the whole module, it does what it should do.
But how can I convert a poly signal into a float ?
stefan ·
MyCo wrote: I haven't test it with a poly signal at the moment. But if you connect a knob to phase input of the whole module, it does what it should do.
But how can I convert a poly signal into a float ?
You can only SAMPLE a poly signal into a float. Or no, not even that, since floats are "monophonic" and poly signals are not.
Floats are message driven, and "slow" data. poly/mono/mono4 are streamed data, working at audio rate. There is no decent way to use the float stuff for stream signals and I don't see how there could be.
Shifrin ·
MyCo wrote: I haven't test it with a poly signal at the moment. But if you connect a knob to phase input of the whole module, it does what it should do.
Well, if you can move the float code into the code module then this willl not be needed 😉 I'm pretty sure if you tried to modulate the phase with a poly singal it wouldn't work - if it does something fundamental has changed in SM!
MyCo wrote: But how can I convert a poly signal into a float ?
You can do this using an 'Analyser' component, but there are limitations to it - you will loose information from the poly signal as you have to 'sample' it's output every so often using a Timer for example.
[edit]As stefan just said poly->float is kind of meaningless, although I still use the analyser with poly signals when I want to run some code to produce, for example, a graph of an oscillator.[/edit]
Shif.
MyCo ·
streamin val; streamout frac; float temp;
temp = val - 0.5; frac = rndint(temp);
I want to try this, but as soon as I connect a graph analyser to the frac output, SM crashes.
But I don't think that this code does what I mean. I guess it should look like this:
streamin val; streamout frac; float temp;
temp = val - 0.5; frac = val - rndint(temp);
stefan ·
Yes, you're right, sorry about that 🙂
stefan ·
Shifrin wrote: [edit]As stefan just said poly->float is kind of meaningless, although I still use the analyser with poly signals when I want to run some code to produce, for example, a graph of an oscillator.[/edit]
Shif.
But that's not really using the poly AS a poly 🙂 You only use the first channel for instance 🙂
Shifrin ·
stefan wrote: Shifrin wrote: [edit]As stefan just said poly->float is kind of meaningless, although I still use the analyser with poly signals when I want to run some code to produce, for example, a graph of an oscillator.[/edit]
Shif.
But that's not really using the poly AS a poly 🙂 You only use the first channel for instance 🙂
Indeed 😊 😉
Shif.
MyCo ·
Thanks for your help
polyin in; polyin phase; polyout out;
float tmp; float a; float ftemp; float phtemp;
stage(0) { tmp = 0; }
stage(1) { ftemp = phase - 0.5; phtemp = phase - rndint(ftemp);
tmp = tmp + in*2; tmp = tmp - (tmp>1.0)&2.0; a = tmp + phtemp*2; a = a - (a>1.0)&2.0; a = a + (a<-1.0)&2.0;
out = a*a*a; }
that's the new code for my analogue ramp module. It is only 1 code module, instead of 3 code, 2 multiplications, 3 subtractions, 3 float data and 3 int data modules. 🙂
stefan ·
Any ideas on how to reduce the aliasing in these? Oversampling?
MyCo ·
If you need that, you can just put a simple LP filter behind it. Something like:
currentoutput = (lastoutput + currentoutput) / 2; lastoutput = currentoutput; out = currentoutput;
or shorter:
lastoutput = (lastoutput + currentoutput) / 2; out = lastoutput ;
But I don't think that is needed, because the harder the osc, the harder the synth 🙂 I make Trance, so I'll love this.
stefan ·
An LP filter after the oscillator won't reduce the aliasing. Actually, when playing really high notes, it will mainly filter out the _real_ harmonics and aliasing frequencies below the fundamental frequency will be left 🙂
Aliasing has its uses, for instance when making those broken sweeping aliasing effect sounds that you can use in psy trance. But you can achieve similar sounds with aliasing free oscillators as well, for instance with AM and weird pitch modulations.
The main issue with aliasing oscillators is that they're in some scenarios practically unusable for high (and medium high) pitched leads and bright pads, which somewhat limits the uses of the waveforms.
But, if you specifically WANT to make aliasing oscillators, then by all means go ahead 🙂
fritzman ·
Thanx Maik,
looks really cool. Will listen later.
All the best, FRitz
MyCo ·
I don't think that there is a way to remove aliasing. I don't even believe that there is aliasing, because every output sample is calculated. Aliasing comes from samples that are not calculated, which only use the value of the previous sample eg. in wavetable oscilators.
skOre ·
Are they free to use however one likes? 😀
(And I like them a lot 😉)
Shifrin ·
MyCo wrote: I don't think that there is a way to remove aliasing.
Well, once you have aliasing in the signal then yeah, I don't think there's an easy way to remove it - although that depends on the information you have about the signal itself too I think...
Also, it depends when you try to remove it and how you're generating your signal. For example if I ring-modulate two signals I can remove any aliasing caused by this operation by first lowpass filtering the two signals with a cutoff of Nyquist/2 - then if there was no aliasing in the original two signals then there'd be no aliasing in the ring-modulated signal.
MyCo wrote: I don't even believe that there is aliasing, because every output sample is calculated. Aliasing comes from samples that are not calculated, which only use the value of the previous sample eg. in wavetable oscilators.
That's not quite right 😉
You might want to take a look at this http://en.wikipedia.org/wiki/Aliasing
Shif.
Shifrin ·
Hey Maik,
You may want to have a look at this thread, it contains some information regarding oversampling :-
[old link]
Shif.
MyCo ·
skOre wrote: Are they free to use however one likes? 😀
Yes, of course. But you should wait til they are fixed. Or do it like it's posted here.
skOre wrote: (And I like them a lot 😉)
that's good to know 🙂
MyCo ·
Shifrin wrote: Hey Maik,
You may want to have a look at this thread, it contains some information regarding oversampling :-
[old link]
Shif.
At the moment I use the free version 0.9.5b, so I've no access to this board. But when the next money arrives, I'll buy SM 🙂
Shifrin ·
By the way, I like how they sound 😈
Cheers!
Shif.
Shifrin ·
MyCo wrote: At the moment I use the free version 0.9.5b, so I've no access to this board. But when the next money arrives, I'll buy SM 🙂
Ah, ok, welcome aboard the 'good ship SynthMaker' 😉
Shif.
MyCo ·
The next thing I'll try is:
But I don't realy know where to start. The picture shows a saw build of a sine wave. But in reality each part is an exponential function. This type of Saw is often used by TB303 emulations, because it sounds deeper than a simple saw.
skOre ·
I have absolutely no clue of building custom oscs, but I guess what you need are two functions, one exponential up- and one downwards. Then depending on the phase, you would apply:
if 0 = exp up if 1 = exp down if 0 = exp down if -1 = exp up
The decision is actually just at the zero mark. depending on the phase, you either go up or down. Does this make any sense? O_o
MyCo ·
yes it is similar. But may be I have to use 4 "sub" oscilators for it, because the parts are shifted up and down, and also phase shifted like you said.
Tom7777 ·
Thanks MyCo, also welcome to the forum 🙂
stefan ·
Isn't such a waveform achievable by doing something like this:
___ | |__ __ |__|
And just highpass filter it? I think the same goes for the "analog square" and the "analog sawtoogh". Also, it'd then be possible to do it alias free with the existing oscillator components + filter.
Tom7777 ·
Is anyone else getting a lot of slowdown in SM when running this schematic?
fritzman ·
Tom7777 wrote: Is anyone else getting a lot of slowdown in SM when running this schematic?
Yes Dan,
when I deleted the graphic waveform modules it's fine.
Best wishes, FRitz
Tom7777 ·
Ok thanks fritzman, hopefully this is something the devs will fix for a later version of SM so it runs faster.
Shifrin ·
stefan wrote: Isn't such a waveform achievable by doing something like this:
That should do it stef 🙂
Shif.
sambean ·
Hey Maik, Welcome to the forum..
Thanks for the oscs, some good sounds there..
I have a waveshaper here, you can get some good sounds out of this too, either using it directly to draw the waveform, or you can use it for phase distortion- if you connect a ramp to the waveshaper(in symmetrical mode), then connect this to the phase input of a sine osc..
Also I noticed you have problems with SM crashing when using rndint, I think this is because the rndint also uses the variable 'temp' when the code gets compiled, You should avoid using the variable 'temp' until this has been resolved, I've informed the devs about this..
Tom7777 wrote: Is anyone else getting a lot of slowdown in SM when running this schematic?
I think this is because each analyser is drawing the graph with 5000 samples.. If you set the frequecy input to the oscs to 0.01, and set the analyser to draw 200 samples you should get 2 cycles of the wave in the display without as much strain on the cpu..
Cheers
Sam
MyCo ·
The waveshaper looks nice. I'll try it when I've got a newer SM version. Just can't get it loaded with my version.
I'll work on the changes to my OSCs know. Finished version comes in a few minutes 🙂
MyCo ·
The fixed version: http://music-spy.de/osc_list2.osm
Nearly all of the oscilators are single code modules now.
Shifrin ·
Cheers 🙂
Shif.
sambean ·
Hey Maik, Unfortunately this crashes SM as soon as I try to open it 🙁 , anybody else having problems..
Shifrin ·
sambean wrote: Hey Maik, Unfortunately this crashes SM as soon as I try to open it 🙁 , anybody else having problems..
I'll give it a whirl in a bit, my net machine is a very old machine that can't run SM - so I have to go back and forth between my main workhorse and the net machine 😉
Shif.
Shifrin ·
sambean wrote: Hey Maik, Unfortunately this crashes SM as soon as I try to open it 🙁 , anybody else having problems..
Confirmed, it won't open in 0.9.5f!
Shif.
infuzion ·
Hey MyCo, I made an edited version of your OSCs to combine 4 of your OSCs (ramp,saw,analoge ramp,analoge saw) into 1. Has code workarounds due to alot of bugs. I'm not sure about the performance hit adding a prefs to an OSC... I'd like to hear others' take on it. enjoy http://rapidshare.de/files/9495475/osc_ ... n.osm.html
fritzman ·
Hm,
Maiks file does open here without probs. 🙂
Best wishes, FRitz
MyCo ·
Try this: http://music-spy.de/osc_list3.osm
If that doesn't open, then it seems to be a bug in the code module. May be someone can make it work for me.
@infuzion: I'll try it later when I got the new version. I've also put the Osc into a GUI component, but not the corrected one. It has a selector for (Standard, Analogue, Digital) and a selector for the waveform types.
I'll post it, when I've put the new versions in it. But it is stupid, when nobody can load it.
MyCo ·
Ok, here is the new version: http://music-drive.com/osc_new_version.osm
infuzion ·
Thanks MyCo; its handy to have everything wrapped in one module (even if I'm going to tear it apart later 😉 ).
BTW, why don't you use streamin/out vs polyin/out in your own code?
MyCo ·
you mean everything in 1 code module?
For me it is to difficult... the code is so bad to read.
infuzion ·
No, I mean you use stream connections for only some of your connections in your code. For OSC, you should always use streamin & streamout, since you don't know if someone wants to use it with Mono, Pack4, or Poly, unless there is a special reason?...
Klentock1 ·
Does anybody have the .OSM's associated with this thread?
I'd love to take a look at them.
philter5 ·
i you have this one i really would like to have it, too 😀
mano11 ·
all links are dead..
stampo ·
me too
Wrote something here? To have a post removed or your name hidden, write to [email protected].