BLE/WiFi controlled HP/LP VCA filter. Opinions and thoughts appreciated!

GroupDIY Audio Forum

Help Support GroupDIY Audio Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.

Larsson

Active member
Joined
Oct 7, 2012
Messages
35
Hi guys.
I´ve been wrapped up in completing my graduation project in School (less than a month left!!!!!  8) ).
I´ve done a Bluetooth 4 controlled VCA (THAT2180A) filter. The analog circuit is basically this:

http://www.thatcorp.com/datashts/dn130.pdf

with a THAT 1200 input IC, and a THAT 1646 output IC (no comments..), an 8-bit DAC and some relays etc.
The PCB is currently in GDIY51x format but +-24V is not used so those pins can be broken of if needed.
For controlling the circuit i´m using a BLEND board which is an Arduino Leonardo with a BLE chip. The 51x PCB has footprints for both Arduino Uno/Leonardo size boards and Arduino Micro type, which also makes Spark Core an option. So basically you can use whatever you want like Bluetooth, BLE, WiFi or whatever.

This is the PCB:

https://dl.dropboxusercontent.com/u/4868890/Job1.PDF

which right now is being sent to me from Estonia. Cant wait =)
I also wrote an app for iOS to control the thing which will  look something like this (not finished yet):

https://dl.dropboxusercontent.com/u/4868890/IMG_2869.PNG

And i´ve also written software for the microcontroller to control the DAC and relays etc..
In the future I will write a plugin for VST/RTAS and use a Wifi board. I´ll also expand the analog circuit with  2nd order filters and try doing a parametric eq version. All software will be open source and available on GitHub. If there is interest I thought of selling PCB:s and another idea is to do a  500´s proto board with Arduino footprint. Another idea (think I read it here somewhere?) would be to implement a microcontroller with Wifi in a 500 rack and use I2C bus protocol to control different units in the rack.

So what do you think? Is this a crazy idea? So far i have only tried it on breadboard but everything seems to be working great. For me this was a great project with both PCB design, filter design, and software development.

Good night / good morning  // Mats
 
Do you really want linear frequency? 20Kz-2KHz all jammed-up in the first crack of the "knob"? Top-octave (which is not strong in much music, and I don't even hear anymore) filling 90% of the turn?

Doing a lin/log conversion used to be hard. Dozens of semiconductors. However any smart-phone has millions. And speed is un-critical; look-up table not expensive. An iOS device probably has full math (log) functions? However a semi-log expanded in the fun parts of the spectrum and compact in the less fussy parts (a look-up table with interpolation) might be user-friendly.
 
Great project!

I can't comment on the technically side of it,
but as an end-user I could perfectly see myself using a device like this.

I'm working much alone, and the opportunity to dial in some tracking analog eq, while being in front of the mic, could be perfect.
I also see the project as a very good show-case for applying jobs.

Good luck!
 
Larsson said:
For controlling the circuit i´m using a BLEND board which is an Arduino Leonardo with a BLE chip. The 51x PCB has footprints for both Arduino Uno/Leonardo size boards and Arduino Micro type, which also makes Spark Core an option. So basically you can use whatever you want like Bluetooth, BLE, WiFi or whatever.
This is a very interesting project indeed, but how do you concile the use of RF transmission protocols with the need for adequate EMI/RFI protection, particularly in a 500/51X enclosure?
 
That seems like a lot of trouble for a one-pole filter.... with a second VCA you could roll a SVF , then maybe another VCA (or two) for boost cut to make a digital parametric.

This is enough to chew on for now... and you will surely learn a lot from this.  Good luck.

JR
 
> lot of trouble for a one-pole filter.... with a second VCA

Agree. But toward the end he mentions higher-order filters. What he has bit-off so far does cover 90% of the novel design/development needed for any-order control.

Agree about the risk of corrupting fine audio with blu-fi-cell waves. The mega-buck counter-example is the iPhone. It plays music about down to the MP3 trash-level with a milliWatt cell-phone transmitter in the same box. This surely did not "just happen" but was long nights in the lab. Again, if solved for the 1-pole, many-pole audio should be the same thing.
 
PRR said:
Doing a lin/log conversion used to be hard. Dozens of semiconductors. However any smart-phone has millions. And speed is un-critical; look-up table not expensive. An iOS device probably has full math (log) functions? However a semi-log expanded in the fun parts of the spectrum and compact in the less fussy parts (a look-up table with interpolation) might be user-friendly.

That is a great idea. Yes all math functions are available in Objective-C. If i switch to a 12-bit DAC i would also have much higher resolution to play with. Or switch between different reference voltages for the 8 bit DAC maybe..

G-Sun said:
I'm working much alone, and the opportunity to dial in some tracking analog eq, while being in front of the mic, could be perfect.
I also see the project as a very good show-case for applying jobs.

Great! That´s how i saw it being used. And i also like the idea of being able to switch control between plugin in DAW and going mobile with phone or pad.

JohnRoberts said:
That seems like a lot of trouble for a one-pole filter....

It is, but it is a good project for me to test the idea =)

abbey road d enfer said:
This is a very interesting project indeed, but how do you concile the use of RF transmission protocols with the need for adequate EMI/RFI protection, particularly in a 500/51X enclosure?

Right now I only have RFI protection on the input side of the circuit since that IC is sensitive..I´ll have to test it more in a rack with other modules to see how it affects other modules.  And if you made a 500 rack with built in BLE or WiFi i guess you could mechanically shield it better than having it on the PCB:s. It should be possible to fix if its possible in an iPhone right? =)

Thanks for the input!
 
Larsson said:
Right now I only have RFI protection on the input side of the circuit since that IC is sensitive..I´ll have to test it more in a rack with other modules to see how it affects other modules. 
You don't understand my concern. The  500/51X is a closed metallic chassis, so you cannot count on residual leakage for proper RF transmission. That means you will need to have an external antenna (which incidentally helps with RFI protection).
And if you made a 500 rack with built in BLE or WiFi i guess you could mechanically shield it better than having it on the PCB:s.
Why not? But that wouldn't be a standard 500/51X rack. One solution would be to have a dedicated module, which would have an antenna on the front panel.
  It should be possible to fix if its possible in an iPhone right? =)
Different animal... An iGizmo is a product that does not have to conform to an existing physical package, it can have as many separate compartments as needed.
 
I am more comfortable writing assembler than C but to generate a dB comparison between two digital words can be done pretty quickly using a fast multiply in an iterative loop.

#1 first determine whether quantity A or B is larger, this will set the sign of the output (+ or - dB), and put the two quantities in correct order for crunching.

#2 staring with the coarsest step size (I'd use 10 dB) start multiplying the largest by -10dB (approx .3x) and increment -10dB for each iteration  until larger quantity is no longer larger.

#3 shift to 1 dB step size.  Repeat multiplies by approx 0.9x

#4 etc...  You probably don't need 0.1dB resolution but you can get whatever you need. It probably doesn't make sense to use more resolution for math internally than the output resolution to the VCA based on DAC step size.

This should be fast enough for converting front panel controls. If in a hurry you can use tricks to get in the ball park faster.  Leading 0 bits will generally represent - 6dB per bit. If you are converting a slow moving signal, you can pre-load the last level as a guess then iterate up/down from there.

JR

PS: I do relative  dB calculations inside my drum tuner to determine when the drum head has settled to a new stable level after an input change by calculating dB difference between sequential samples.
 
You don't understand my concern. The  500/51X is a closed metallic chassis, so you cannot count on residual leakage for proper RF transmission. That means you will need to have an external antenna (which incidentally helps with RFI protection).
+1. The BLEND has one connector for external antenna. The skin depth for 2.4Ghz is not many micro meters so there would be a huge loss in the transmission if it is completely covered in a metal chassis. For my prototype i´ll stick with the chip antenna but eventually an external antenna is the only choice.
Why not? But that wouldn't be a standard 500/51X rack. One solution would be to have a dedicated module, which would have an antenna on the front panel.
Thats a really good idea!

JohnRoberts said:
I am more comfortable writing assembler than C but to generate a dB comparison between two digital words can be done pretty quickly using a fast multiply in an iterative loop.

#1 first determine whether quantity A or B is larger, this will set the sign of the output (+ or - dB), and put the two quantities in correct order for crunching.

#2 staring with the coarsest step size (I'd use 10 dB) start multiplying the largest by -10dB (approx .3x) and increment -10dB for each iteration  until larger quantity is no longer larger.

#3 shift to 1 dB step size.  Repeat multiplies by approx 0.9x

#4 etc...  You probably don't need 0.1dB resolution but you can get whatever you need. It probably doesn't make sense to use more resolution for math internally than the output resolution to the VCA based on DAC step size.

This should be fast enough for converting front panel controls. If in a hurry you can use tricks to get in the ball park faster.  Leading 0 bits will generally represent - 6dB per bit. If you are converting a slow moving signal, you can pre-load the last level as a guess then iterate up/down from there.

JR

PS: I do relative  dB calculations inside my drum tuner to determine when the drum head has settled to a new stable level after an input change by calculating dB difference between sequential samples.

Uuuh assembler ;) Takes time.. but it sure is fun though.  Thanks for hint! I think 10 or 12 bits would be better then the 8 bits i have right now. But then i´dprobably have to switch from parallell to i2C or SPI.
 
Larsson said:
Uuuh assembler ;) Takes time.. but it sure is fun though.  Thanks for hint! I think 10 or 12 bits would be better then the 8 bits i have right now. But then i´dprobably have to switch from parallell to i2C or SPI.

I first started working on an 8 bit wide platform. You can deal with larger data but it is a major PIA, I switched to 16 bit platform and can't imagine going back.

JR
 
So the first prototype is now finished:
IMG_2916.JPG

https://www.dropbox.com/s/3d9zjz6mu6s6lc0/IMG_2916.JPG?dl=0

It works great. I had to adjust the control voltage to get the corner frequencys right and i did some minor mistakes with some pads on the PCB. I also have to reconstruct the bypass circuit but everything else seem to be working fine. I will now make a front panel and test with the external antenna then measure noise and THD.  What filters would you like to have? i´m thinking HP/LP, shelving and parametric maybe? Also, does anyone have a hint of how to best measure digital noise in the analog signal path ?

Thanks
Mats
 
Back
Top