Andrew
Developer
Posts: 110
Posts: 110
|
Post by Andrew on May 10, 2018 17:23:35 GMT 1
I have been astounded... I had no idea Is this going to unfold? Or do I have to start learning to program right now? no Please Yeah, you actually need a Mac to compile Mac SEMs. Even the SE Mac SEMs are compiled on Jeff's Mac and then just copied onto Windows. Other options include VM(dual boot) or Hackintosh which legally is a grey area, which voids your hardware warranty btw - cool if it works but if magic smoke appears manufacturers will show you the door if they can see it's a VM/Hackintosh(happened to a buddy of mine - burnt the mobo). Can also do the Mac in the cloud thing(renting), for audio/dsp stuff it might be okay to use because the code-base is mature, will just need a couple of dedicated beta-testers with Macs to make sure everything is okay though. But it might actually become expensive with GUI modules atm because the Mac GUI stuff SDK3 side is still alpha, so you'll need to update stuff more frequently.
Since I only do audio modules I might try the Mac in the cloud option somewhere in the future i.e. when SE Mac export reaches Beta or Release stage. No real reason to do that now. Switching compilers/IDE(Xcode/Clang on Mac) is a pain, something always breaks...
|
|
Andrew
Developer
Posts: 110
Posts: 110
|
Post by Andrew on May 9, 2018 16:35:41 GMT 1
I was referring to the AHDSR type, is what I would like but hey, whatever you do will be very well received A constant time envelope like the FL Studio one should be doable for those skilled in the GUI arts. graphics modules graphics modules pleaseMy bad, actually meant to say AHDSR (typo!), yeah will do that, it is easy to add. As for graphics, not my style, I don't even do my own graphics(png/bitmap/knobs etc) for my public projects. My gfx is usually done by someone else. I grew up on crappy outboard gear and el'cheapo Mackie desks so I don't really care how things look
|
|
Andrew
Developer
Posts: 110
Posts: 110
|
Post by Andrew on May 4, 2018 18:14:18 GMT 1
Well, the most common hold in envelopes is actually a delay(do nothing) before attack, that can easily be done with native SE modules, I don't really wanna reinvent the wheel. Maybe I can alter:
1a)Attack-Decay-Sustain-Release: Constant Time, Various shapes, but not adjustable
to
1b)Attack-Decay-Hold-Sustain-Release: Constant Time, Various shapes, but not adjustable
Would that work for you?
P.S. I don't think it would be easy to draw an envelope GUI side if it is an analog style constant rate envelope, because let's say it is a typical ADSR, whenever you adjust the sustain level, the decay and release times will change automatically. A constant time envelope like the FL Studio one should be doable for those skilled in the GUI arts.
|
|
Andrew
Developer
Posts: 110
Posts: 110
|
Post by Andrew on May 3, 2018 6:08:11 GMT 1
Depends on what you are doing... Remember step size can't be negative or zero. You can also try my quantizer, stepsize is limited to 0.0000001 internally(end-user proof, lol) and it also uses about 45% less CPU.
|
|
Andrew
Developer
Posts: 110
Posts: 110
|
Post by Andrew on May 1, 2018 9:23:52 GMT 1
The curving part is relatively easy, you can curve basically anything into anything else - it just really depends on how much CPU you wanna burn in the process ;-) The tricky part(DSP/Audio side) is all the logic book-keeping i.e. if, else, then do, only if etc etc. The GUI side looks pretty painful to do, but then again, I don't do any GUI stuff so it might be easier for some. P.S. I am adding some envelopes to my module-pack update, Andre(TubeOhm) is doing some beta testing as we speak. Nothing too fancy though (nothing too complex, no gui stuff): Definitely gonna add: 1)Attack-Decay-Break-Sustain-Release: Constant Rate, Adjustable curves from exponential to linear 2)Attack-Decay-Sustain-Release: Constant Rate, Adjustable curves from exponential to linear Might add: 1)Attack-Decay-Sustain-Release: Constant Time, Various shapes, but not adjustable P.S. Please note the difference in constant rate vs constant time. The SE and CK envelopes are constant time btw, analog envelopes(and good digital like DX7) are constant rate. Sometimes it is better to think of constant rate as constant slope. Check the first picture here: basicsynth.com/uploads/AddendumCh6.pdf
|
|
Andrew
Developer
Posts: 110
Posts: 110
|
Post by Andrew on Apr 29, 2018 0:29:57 GMT 1
Any module you do will be welcome. a question can a module be created following a prefab? Would the cpu's performance be improved? Really depends on what it is, but like 90% of the time I'd say yes. The most extreme(and rare) example I can think of is one of my reverbs, doing it with SE = ~3.2% CPU, custom module = ~0.95% CPU. Aiming for 101 modules (up from 51) for the next update. Coded module 63 today, a simplified diode ring modulator module(didn't model the transformers - need a PhD for that, lol), basically just a waveshaper but I did do the proper math to solve for the correct germanium diode shape
|
|
Andrew
Developer
Posts: 110
Posts: 110
|
Post by Andrew on Apr 28, 2018 6:47:36 GMT 1
Think it would be mostly the same, but the difference comes in when modulating the frequency. Biquads aren't the best choice for time variant(modulating) filters. I'll build it under the hood with my ZDF SV filter, which should be cleaner when modulating. That being said, if the filter/EQ isn't being modulated i.e. time invariant, it makes no difference.
|
|
Andrew
Developer
Posts: 110
Posts: 110
|
Post by Andrew on Apr 27, 2018 15:22:36 GMT 1
I'm assuming you mean just highshelf/lowshelf/peak right? Can do that for my upcoming module pack refresh if you like.
|
|
Andrew
Developer
Posts: 110
Posts: 110
|
Post by Andrew on Apr 27, 2018 15:12:44 GMT 1
Since this is right up my filter alley, I added a Peak Hold module to my module pack, super simple to do. Will be available the 2nd week of June(other stuff is in beta testing atm).
Cheers
|
|
Andrew
Developer
Posts: 110
Posts: 110
|
Post by Andrew on Apr 25, 2018 21:02:07 GMT 1
It's a crap attempt at stereo balance control, I should make some changes to it. Some time ago found the module needs proper pan law ( or a mode selector to choose a law ). Are you talking about the volume pin? It seems I didn't set a negative value block ( clip ), so that's wrong indeed. I won't say it is wrong, it's a design choice. In my pan module I clip the pan control, but not the volume level control, because sometimes you want the level at -10 instead of +10. //some pan laws I use in my module - assumes pan is in 0-1 range --adapt to your own needs, designed to use sqrts as they are pretty cheap on modern CPUs
//equal power 3dB - most common float x = pan * (M_PI/2); float x2 = x*x;
float taylorCos = 0.04166666666666666f*(x2*(x2-12.0f)+24.0f);//taylor approximation float taylorSin = 0.008333333333333333f*x*(x2*(x2-20.0f)+120.0f);//don't need full precision
outputL = (*input1*taylorCos); outputR = (*input2*taylorSin);
//sqrt power - also 3dB, just different 'taper'
float sqrtT = sqrtf(1.f-pan); float isqrtT = sqrtf(pan);
// 1.5dB power law - just for fun
float sqrtSqrt = sqrtf(sqrtf(1.f-pan)); float isqrtSqrt = sqrtf(sqrtf(pan));
// 4.5 law - used on some hardware and pro-tools
float sqrt1 = sqrtf(pan); float sqrt1inv = sqrtf(1.f-pan); float sqrtT = sqrt1inv * sqrtf(sqrt1inv); float isqrtT = sqrt1 * sqrtf(sqrt1);
Cheers Andrew
|
|
Andrew
Developer
Posts: 110
Posts: 110
|
Post by Andrew on Apr 24, 2018 18:04:32 GMT 1
|
|
Andrew
Developer
Posts: 110
Posts: 110
|
Post by Andrew on Apr 24, 2018 17:25:29 GMT 1
The "your answer" field is not writable. Using Firefox browser.
|
|
Andrew
Developer
Posts: 110
Posts: 110
|
Post by Andrew on Apr 8, 2018 8:20:57 GMT 1
Hi, I know pitch is logarithmic, but the so called "pitch" voltage coming out the MIDI TO CV is actually a linear signal, it linearly maps to keys even if it is called "pitch" Hehe, probably just depends on how you see the math, but it boils down to the same thing. For me, frequency(linear) is mapped logarithmically to get pitch. To get back to linear(frequency), you use -> Pitch to frequency = Middle_A * pow(2,pitch-5). (might be "-0.5" depending on scale). If you are interested, what you are actually doing is called Karplus-Strong synthesis(if I understand correctly), there is some fun variations out there on the net. Glad you got it working! A little bit of math knowledge will get you a long way with SE. Cheers
|
|
Andrew
Developer
Posts: 110
Posts: 110
|
Post by Andrew on Apr 6, 2018 20:56:54 GMT 1
Pitch is not linear, it's logarithmic. Ironically you actually need a linear frequency aka in Hertz or kHz and then calculate the period in milliseconds.
So -> Pitch to kHz (Frequency) and then -> kHz to time ( Time = 1 / Frequency )
Cheers
|
|
Andrew
Developer
Posts: 110
Posts: 110
|
Post by Andrew on Feb 5, 2018 18:29:25 GMT 1
Just a note, you might want to move your 1st LP/HP pair in front of the distortion, tends to give cleaner sounds, especially on complex material.
|
|
Andrew
Developer
Posts: 110
Posts: 110
|
Post by Andrew on Jan 27, 2018 7:12:26 GMT 1
Long story short - a recent Win10 reduced the number of fiber local storage (FLS) slots to 128. Which limits the amount of SEMs(.dll) we can statically link with the C Runtime Library, so we basically have to dynamically link from now on. I explained all of this over at the sdk forum.
Cheers Andrew
|
|
Andrew
Developer
Posts: 110
Posts: 110
|
Post by Andrew on Jan 4, 2018 19:01:50 GMT 1
Hey Rob, Happy New Year! I have a interesting problem for you. It doesn't seem like your Text Append module works bi-directional. Example: say when you have text '1.23' plus text append 'kHz' to Text Entry Module - if the Text Entry is writable and updated by the user - the append disappears and the Text entry doesn't pass its value right to left. Any chance of a 'fix'?
P.S. As a fellow developer, I can see how this can be a problem - think you have to fake a right to left pin update after a left to right pin update. It's not a train smash if you can't fix it, can easily just skip the text append altogether and put the 'kHz' in the example in a separate non-writable Text Entry but your module is much nicer to use.
|
|
Andrew
Developer
Posts: 110
Posts: 110
|
Post by Andrew on Dec 2, 2017 16:10:11 GMT 1
That looks like you either don't have the right compiler configurations and/or wrong linker settings. I made a mini tutorial with a 'plug n play' Code::Blocks project file - just open it and compile right off the bat. It is a bit different from Rob's example, you don't have to manually change the toolchain executables for x64 builds. groups.yahoo.com/neo/groups/syntheditsdk/conversations/messages/8770
|
|
Andrew
Developer
Posts: 110
Posts: 110
|
Post by Andrew on Nov 4, 2017 19:53:31 GMT 1
The same MIDI limitations apply even in 64bit. The VST2 that SE exports is basically a wrapped VST3. Jeff explained it on the yahoo site.
|
|
Andrew
Developer
Posts: 110
Posts: 110
|
Post by Andrew on Aug 3, 2017 18:55:17 GMT 1
Meanwhile there is finally some more info on what the Q should be for n filter order, but am not sure how to implement it yet ( for me hard math stuff ). There isn't really a right way to do it as long as the filter is stable and the Q doesn't blow your head off I'm a simpleton, if I were to do it and assuming more than 2 serial filters, I'd do a nth-order minus two with butterworth (the site you linked gives the Q values, frequency stays the same) , this insures the -3dB point is correct, and then use the last stage as a resonance stage. Per example say you have 4 connected biquads: filters 1 to 3 = butterworth (correct -3dB point) filter 4 = the Q listed for a butterworth would be your minimum Q setting for this filter. Might also want to runs the Q backwards (highest values first), so that filter 4 has the highest Q range possible. And then manually correct for maximum peak gain between various orders. Just an idea, once again, there is no right or wrong.
|
|