|
Post by Rob on Aug 5, 2015 11:00:48 GMT 1
Hi Guys, I've been busy with some updates, and a few new subcontrol modules. The biggest update is that I combined my modules, there are now 2 files containing all GUI / DSP mods. Furthermore changed the menustructure, it was a mess. And the names are shorter ( ID Stayed the same ). RH-7Segment & RH-Int2Digits: rhmodules.nl/blog/?p=518RH-TextSubstr & RH-TextCapitals: rhmodules.nl/blog/?p=522New download page: rhmodules.nl/blog/?p=492 Cheers, Rob.
|
|
|
Post by Rob on Aug 21, 2015 16:32:02 GMT 1
32/64 bit GUI download:
- New! Subcontrol Fixed value mods: Bool, Float, Int. - New! Subcontrol Meter mods: Bool, Float, Int. - Update! Switch modules: changed the direction of the inputs, makes more sense now. - Update! Autodubplicating pins on the Logic AND & OR modules ( Bool and Int ). - Removed the reverse versions of the logic gates. - Menustructure adjustment.
|
|
|
Post by Rob on Aug 22, 2015 13:08:26 GMT 1
Teaser, working on the next meter update. 
|
|
|
Post by Rob on Aug 30, 2015 11:02:37 GMT 1
Hi, - New! Hatch module for 32bits ( good for aligning stuff while building ) - Update! 32bit versions of my meter modules use GDI+, exposed all the pins. Note: I couldn't provide this for the 64bit version, due to compiler errors in some GDI+ headers..tried 3 mingw versions, and microsoft visual c++. If anyone knows a solution, please let me know.. rhmodules.nl/blog/?p=576rhmodules.nl/blog/?p=554
|
|
|
Post by mindtraveller on Aug 30, 2015 16:23:16 GMT 1
Hi Rob, are you planning to update your Biquad filter? Somehow I really like it's sound but the Resonance is really hard to handle, so some gain compensation would be great.
Greating
Adrian
|
|
|
Post by Rob on Aug 30, 2015 16:55:27 GMT 1
Hi Rob, are you planning to update your Biquad filter? Somehow I really like it's sound but the Resonance is really hard to handle, so some gain compensation would be great. Greating Adrian Hi Adrian, Yeah, I'll look into that next. Cheers, Rob
|
|
|
Post by mindtraveller on Aug 31, 2015 3:18:01 GMT 1
Marvellous! :-)
|
|
|
Post by Rob on Sept 6, 2015 13:28:36 GMT 1
Hi Adrian,
Could you try this 32bit test version?
It has in the properties screen 7 manual Gain Compensation inputs for the 24 till 96dB cascades, the value you input is subtracted from the Q factor. The good thing about this is the Q pin range stays within 0 - 10 volts in every stage. When I try this, the sound is quite nice and not overloaded.
An automatic gain compensation would be great, but I don't know how to do that. When I test CK his biquad with auto mode on, it still overloads easily.
Example values to subtract from Q ( closer to 0 means more overload ): - Gaincomp2: 6.5 - GainComp3: 7.7 - GainComp4: 8.2 - etc..
Added bonus: - Two bandpass filter modules instead of one: BPF1 (Peak Gain = Q) / BPF2 (peak gain = zero) Credits: Scoofy, he posted the math at musicdsp.org once. - Cascade up to 8x ( 96dB ).
Cheers!
Rob
|
|
|
Post by Rob on Sept 18, 2015 15:42:00 GMT 1
Update:
Hatch and meter modules now also in 64bit versions available ( GDI+ version ).
|
|
|
Post by mindtraveller on Sept 19, 2015 13:24:20 GMT 1
Hi Adrian, Could you try this 32bit test version? [...] Hi Rob, somehow I didn't notice your post 'till today. I'm a little bit busy at the moment and on a seminar the next two weeks, so if I don't have enough time today I'll test it afterwards. Anyway great to here you are working on gain compensation. Seems to be really difficult. I suppose one also has to take into account that the cutoff is modulated at audio rate.
|
|
|
Post by Rob on Sept 19, 2015 13:35:42 GMT 1
Hi Adrian, I released the changes to the module in the combined file, so it's official now. Yea, it's difficult and couldn't find any info on how to deal with this. Think I read somewhere to make Q lower, so guess my manual method is fine. Download: rhmodules.nl/blog/?p=492Biquad page: rhmodules.nl/blog/?p=254
|
|
|
Post by twoifbysea on Aug 2, 2017 15:43:54 GMT 1
Hi Adrian, I released the changes to the module in the combined file, so it's official now. Yea, it's difficult and couldn't find any info on how to deal with this. Think I read somewhere to make Q lower, so guess my manual method is fine. Download: rhmodules.nl/blog/?p=492Biquad page: rhmodules.nl/blog/?p=254 Rob, So if I have a Q factor of 1.2 with a single cascade to what amount should I set the manual gain comp? Thanks, Dave
|
|
|
Post by Rob on Aug 2, 2017 18:37:24 GMT 1
|
|
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.
|
|
|
Post by Rob on Aug 4, 2017 12:27:57 GMT 1
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. Hey Andrew, Thanks for your perspective on this, and providing an example. I'll probebly do that, keep it as simple as possible.
|
|
|
Post by Rob on Aug 6, 2017 12:36:19 GMT 1
Here is the (64bit) testversion using the Q values provided by Nigel, no more manual gain compensation needed. It works nicely, but as expected CPU usage is a lot more when modulating at higher orders due to the additional coefficient calcs. Furthermore the Q at higher orders seems a bit low, so I may need to compensate for that.. Notes: - This module was made using my old biquad code, the final version ( if I get it too work ) uses object-oriented coding. Which makes the code less newbie looking The processing bit isn't working, dunno why, posted a question about it @ the SDK usergroup. - This module has a different ID, so you can use it next to the old version while the final version hasn't been released. Try it! Rhbiquadsdk3-2017b.zip (135.19 KB)
|
|
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.
|
|
|
Post by Rob on Jan 11, 2018 19:20:06 GMT 1
Hey Andrew, Happy New Year to you as well! Sorry for the late reply, indeed my module isn't bidirectional. I'm note sure why you would want people to edit the text out connected text entry module? It was intended as something for viewing purposes only, like 1.23 kHz. I built what you said in SE1.4 and it only appends the text again after I move the slider I connnected to the first input.  The problem with what you want is how do I split the text out change back to the correct input pins?  #include ".\RhtextappendGui.h"
using namespace std;
REGISTER_GUI_PLUGIN( RhtextappendGui, L"RH-Text-AppendSDK3" );
static const int nonRepeatingPinCount = 2;
RhtextappendGui::RhtextappendGui( IMpUnknown* host ) : MpGuiBase(host) , _autoPinCount(0) { // initialise pins. textOut.initialize( this, 0, static_cast<MpGuiBaseMemberPtr>(&RhtextappendGui::onSetTextOut) ); textIn.initialize( this, 1, static_cast<MpGuiBaseMemberPtr>(&RhtextappendGui::onSetTextIn) ); }
RhtextappendGui::~RhtextappendGui(void) { // delete the pin classes pointer.
//for (auto pin : TextValuesIn) { // delete pin; //} for (unsigned int i = 0; i < TextValuesIn.size(); i++) { StringGuiPin *pinptr = TextValuesIn[i]; delete pinptr; } }
int32_t RhtextappendGui::initialize() { // always update in to out. onSetTextIn(); return gmpi::MP_OK; }
// handle pin updates. void RhtextappendGui::onSetTextIn() { // textIn changed wstring str; wstring str1 = textIn; // wstring space = L" ";
for (int i = 0; i < _autoPinCount; i++) { str.append(*TextValuesIn[i]); // str.append(space); }
textOut = str1 + str; }
// Override this function from base class for pin updates int32_t RhtextappendGui::setPin( int32_t pinId, int32_t voice, int32_t size, void* data ) { // initialize the pin classes as needed. const int pinIndex = pinId - nonRepeatingPinCount; while ((int)TextValuesIn.size() < pinIndex + 1) { const int pinId = TextValuesIn.size() + nonRepeatingPinCount; StringGuiPin *pinptr = new StringGuiPin(); TextValuesIn.push_back(pinptr); initializePin(pinId, *pinptr); _autoPinCount = TextValuesIn.size(); }
int32_t r = MpGuiBase::setPin( pinId, voice, size, data );
if (pinId >= nonRepeatingPinCount) { onSetTextIn(); }
return r; }
void RhtextappendGui::onSetTextOut() { // textOut changed }
|
|
|
Post by twoifbysea on Mar 30, 2018 20:58:36 GMT 1
Rob,
RH Hatch is not working in SE 1.4.Thanks for everything you do.
Dave
|
|
|
Post by Rob on Mar 31, 2018 15:53:08 GMT 1
Rob, RH Hatch is not working in SE 1.4.Thanks for everything you do. Dave Hi Dave, I installed the latest version of SE1.4, my module loads fine. Are you talking about export as VST? GDI+ is depricated, I need to switch to Direct2D. Do you use the module a lot? Cheers, Rob
|
|