New Vox/Crybaby DSP Model -- Adding voicings

need a feature, suggest here

New Vox/Crybaby DSP Model -- Adding voicings

Postby Transm0grifox » Sun Mar 26, 2017 10:58 pm

I recently got a Bela ( http://bela.io/ ) and was wanting to have a good wah modeler.

I had a first thought to copy the CCRMA wah from Guitarix, but it occurred to me that since it is a model based on a curve-fit to the GCB-95 it's a one-trick pony without directly intuitive ways to apply different voicings of variant circuits.

I sat down and worked out the transfer function and digitized it via bilinear transform. The resultant code allows you to enter resistor and capacitor values directly with potential to create loadable presets.

As such I thought I would share it as a possible feature set to add to the Guitarix wah. Here's where it can be found:
http://cackleberrypines.net/transmogrifox/src/bela/inductor_wah_C_src/
The following 2 files are the whole of it:
inductorwah.h
inductorwah.cpp

It's coded in C, but it would be trivial to convert this to a class so it doesn't look out-of-place in a C++ & faust repository.

The .zip file is the Bela project, which won't be useful for Guitarix.

Under the Analysis folder is a test program which generates a set of frequency response curves and impulse responses so you can compare and tweak with real circuits if more fine-tuning is desired.

Here's the set of frequency response plots for the Vox V847 voicing:
http://cackleberrypines.net/transmogrifox/src/bela/inductor_wah_C_src/Analysis/Vox_V847_Response.png
(BBCODE tags for image resize don't appear to work on this board, so you will have to just click the link)
User avatar
Transm0grifox
 
Posts: 4
Joined: Sun Mar 26, 2017 10:11 pm

Re: New Vox/Crybaby DSP Model -- Adding voicings

Postby brummer10 » Wed Mar 29, 2017 3:50 am

Hi Transm0grifox

Nice one.
I'll check it for sure. :)

As a side note, I've done something similar with our ampsim toolkit.
A Wah plugin which let you select different models like the:
ColorSound Wah
Dallas Wah
Foxx Wah
Jen Wah
Maestro Wah
Selmer Wah
Vox Wah V847
Roland Wah
and for Bass the
ColorSound Bass Wah
and the
Jen Bass Wah.

You may know, that the ampsim toolkit could generate a faust IIR filter from schematic (gschem) files.
As far I know, bella supports faust, so this may also be interesting for you.

regards
hermann
User avatar
brummer10
Site Admin
 
Posts: 713
Joined: Thu Mar 26, 2009 6:57 pm

Re: New Vox/Crybaby DSP Model -- Adding voicings

Postby Transm0grifox » Wed Mar 29, 2017 3:49 pm

Thanks for letting me know about the faust & gschem. Faust in Bela is in beta, but because Faust outputs C++, it is a portable way to use any computer to develop the DSP routine and then compile it into Bela's render.cpp. Wrapper functions for providing inputs and outputs would need to be manually written to provide inputs and outputs.

I wasn't aware of the ampsim toolkit capability to generate a faust IIR filter from schematic. This is something I should look at for future work.

It may be my code duplicates what you already have. Would be interesting to compare frequency sweeps. Perhaps the possible advantage is it directly expresses circuit components within the struct so alternate voicings can be created and loaded by the user.

I do have one thing on my TODO list and that is to apply correct frequency warping terms (or at least improved approximations) to the real-time modulated coefficients. The filter shapes look good when plotted on top of the simulation outputs, but the relationship between pot position and center frequency is...well..warped a little bit. This would make the "feel" of the wah a little bit different. I'm still working on getting a "perfect" overlay of simulation and DSP model, but it is very close as-is just by limiting pot position input variable to range 0....0.8. The other sources of frequency warping error as far as I can see are <0.25 dB which are less than variation from component tolerances.

Have you guys spend any time looking at the pot taper functions for getting the sweep right in your models?
User avatar
Transm0grifox
 
Posts: 4
Joined: Sun Mar 26, 2017 10:11 pm

Re: New Vox/Crybaby DSP Model -- Adding voicings

Postby brummer10 » Wed Mar 29, 2017 4:23 pm

Transm0grifox wrote:Have you guys spend any time looking at the pot taper functions for getting the sweep right in your models?


We using a "logarithmic" taper defined like this ( in faust)

Code: Select all
    LogPot(a, x) = if(a, (exp(a * x) - 1) / (exp(a) - 1), x);


were a is set to 5 for the hotpotz and x is the pot value between 0 . . 1

that gives a nice sweep point, just I haven't any plots at hand.
User avatar
brummer10
Site Admin
 
Posts: 713
Joined: Thu Mar 26, 2009 6:57 pm

Re: New Vox/Crybaby DSP Model -- Adding voicings

Postby Transm0grifox » Thu Mar 30, 2017 2:46 pm

Good to know. At the moment I soldered wires from my Crybaby (hotpotz) directly to the ADC input on my Bela, but when I get my MIDI controller hooked in then I will need a log pot function :)

I finally got the frequency warping better approximated, so here's a plot of my DSP model with updated frequency warping coefficients overlaid on the SPICE simulation output from a Vox V847:
http://cackleberrypines.net/transmogrifox/src/bela/inductor_wah_C_src/Analysis/Vox_V-847_Sim_Overlaid_Digital.png
For some reason the BBCODE [img width=xxx] tag doesn't work, so I just have to link above (image is too large)
User avatar
Transm0grifox
 
Posts: 4
Joined: Sun Mar 26, 2017 10:11 pm

Re: New Vox/Crybaby DSP Model -- Adding voicings

Postby brummer10 » Fri Mar 31, 2017 3:35 am

Transm0grifox wrote:For some reason the BBCODE [img width=xxx] tag doesn't work, so I just have to link above (image is too large)

Well, I'm sorry, but I didn't like to work on the forum software to fix this.

As a side note note, maybe that's interesting for you to, I've made a switchless wah from the gcb95, like the Morley M2 Maverick.
https://github.com/brummer10/GxSwitchlessWah.lv2

and a envelope controlled one, like the Mutron
https://github.com/brummer10/GxQuack.lv2
User avatar
brummer10
Site Admin
 
Posts: 713
Joined: Thu Mar 26, 2009 6:57 pm

Re: New Vox/Crybaby DSP Model -- Adding voicings

Postby Transm0grifox » Tue Jun 13, 2017 11:27 pm

:)
It looks like you are way ahead of me. I guess I should try running a new version of Guitarix before making suggestions :metal2: I think last time I checked Guitarix was just using the CCRMA interpolated wah (which is actually a pretty good sounding model, but it's a "1-trick pony"). Looks like with your ampsim toolkit you can do whatever you imagine :) I did this the hard way with a pencil and notebook. However, now that it is done, to get any on this list is just a matter of plugging in the numbers, since as far as I know they are all based on the same circuit topology, mostly differing by component values.
As for Guitarix, it appears you're already there so my contribution is too late to be of any value.
ColorSound Wah
Dallas Wah
Foxx Wah
Jen Wah
Maestro Wah
Selmer Wah
Vox Wah V847
Roland Wah
and for Bass the
ColorSound Bass Wah
and the
Jen Bass Wah


The stuff not covered in my code are the active-filter-based wahs such as the Morley Pro Series Wahs. Those actually aren't very interesting to me -- and Morley uses the same classic inductor wah circuit topology for the interesting wahs. Most of the interesting stuff that a Morley wah does that the others do not is the optical control function has a shape and feel of its own.

My last install of Guitarix is on an old laptop with Debian Squeeze still on it. Something I only use for plugging in a USB audio and play guitar. Obviously Bela has replaced my realtime effects.

Either way it's fun to see how far Guitarix has come. I sort of left off Rakarrack development when Holborn disappeared...and I got to a point where I had so much fun with Rakarrack and Guitarix I wanted to play guitar and not write code :?

Now I have Bela I am writing a little more code...but now getting to a point where I want to play guitar again. My Bela setup has all the basics now: Chorus, Flanger, Phaser, Delay, Tremolo, Envelope Filter (mutron style), Reverb (ended up using Fons' Zita Rev1), Wah, ADSR, sample/hold filter, 6-band graphic EQ, Shelving EQ, a couple different flavors of compressors. As for distortions, I'm building these all with analog circuits. Amp Sim? I have an amp :). I might eventually employ a second Bela for cabinet modeling so I can plug direct into a mixer. Based on the current CPU load I don't think the BeagleBone Black can handle realtime cabinet simulation AND everything else at the same time.

I really like the Zita Rev1 -- it's a surprisingly versatile reverb :metal:
User avatar
Transm0grifox
 
Posts: 4
Joined: Sun Mar 26, 2017 10:11 pm


Return to Suggestion Box

Who is online

Users browsing this forum: No registered users and 1 guest

cron