Has Anyone Considered attempting a Vocoder?

Algorithm development and general DSP issues

Moderator: frank

Post Reply
Sandrine
Posts: 16
Joined: Thu Mar 12, 2015 10:19 am
Location: BC Canada
Contact:

Has Anyone Considered attempting a Vocoder?

Post by Sandrine » Fri Jun 12, 2015 10:39 am

:idea: As far as I can see, making the FV-1 emulate a vocoder is entirely possible, 2 inputs (one for the carrier...a synth, osc whatever, and one for the modulator, your voice) I haven't really gave it much thought but has anyone done it?
Is there a latin word for "Stage Fright"?

Digital Larry
Posts: 279
Joined: Mon Nov 12, 2012 12:12 pm
Contact:

Post by Digital Larry » Fri Jun 12, 2015 9:56 pm

I don't like to say things "can't be done" but I think you would run out of instructions to do more than a few bands. I'd love to be proven wrong!

For each band:
- Sharp bandpass filter on input (control)
- RMS level detection
- Sharp bandpass for carrier
- Level control (multiply)

I've made the 6-band EQ into a block and cannot get two of those into a patch. So with just EQ, you're probably looking at between 8 to 10 bands, remember you need one for analysis and one to "print" that spectrum on your carrier.

My guess is that you could get 3 or 4 bands this way.

Sandrine
Posts: 16
Joined: Thu Mar 12, 2015 10:19 am
Location: BC Canada
Contact:

Post by Sandrine » Sun Jun 14, 2015 10:39 am

Yes, you're right. I hadn't considered how much space/band hmm. looks like I'll have to re-invent the wheel. something-recursive-something .."Can't be done" is what inspired my last project Larry, thanks ;)
Is there a latin word for "Stage Fright"?

Digital Larry
Posts: 279
Joined: Mon Nov 12, 2012 12:12 pm
Contact:

Post by Digital Larry » Mon Jun 15, 2015 10:15 am

Here's a 3-band implementation.

Each band is just a 2-pole SVF bandpass, abs value (rectifier) and smoother (low pass filter) to create the control signal. matching filters go into a mixer whose levels are controlled thereby.

Going to 4 bands goes over the register limit. It is certainly possible to hand optimize, not sure if you can get enough for another full band though.

It does "something" in simulation under SpinCAD. I had my standard guitar riff going to the left, white noise for the carrier. Takes the rhythm of my guitar playing and makes it sound like a trashy drumset a mile away in a hangar. However, I understand that this is what "kids today" enjoy listening to.

Tweaking the filters might lead to something interesting. Or not.

Code: Select all

; Patch: C:\Users\User\Documents\SpinCAD Designer\vocoder.spcd
; SpinCAD Designer version: 952
; Pot 0: 
; Pot 1: 
; Pot 2: 
; 
; 
; ----------------------------
;------ Input
;------ SVF 2P
SOF 0.0000000000,0.0000000000
RDAX ADCL,1.0000000000
RDAX REG2,-1.0000000000
RDAX REG1,-0.0312500000
WRAX REG0,0.0592153472
RDAX REG1,1.0000000000
WRAX REG1,0.0592153472
RDAX REG2,1.0000000000
WRAX REG2,0.0000000000
;------ SVF 2P
SOF 0.0000000000,0.0000000000
RDAX ADCL,1.0000000000
RDAX REG5,-1.0000000000
RDAX REG4,-0.0277777778
WRAX REG3,0.1345807085
RDAX REG4,1.0000000000
WRAX REG4,0.1345807085
RDAX REG5,1.0000000000
WRAX REG5,0.0000000000
;------ AbsoluteValue
RDAX REG4,1.0000000000
ABSA
WRAX REG6,0.0000000000
;------ SVF 2P
SOF 0.0000000000,0.0000000000
RDAX ADCL,1.0000000000
RDAX REG9,-1.0000000000
RDAX REG8,-0.0277777778
WRAX REG7,0.2067361810
RDAX REG8,1.0000000000
WRAX REG8,0.2067361810
RDAX REG9,1.0000000000
WRAX REG9,0.0000000000
;------ SVF 2P
SOF 0.0000000000,0.0000000000
RDAX ADCR,1.0000000000
RDAX REG12,-1.0000000000
RDAX REG11,-0.0277777778
WRAX REG10,0.0592153472
RDAX REG11,1.0000000000
WRAX REG11,0.0592153472
RDAX REG12,1.0000000000
WRAX REG12,0.0000000000
;------ SVF 2P
SOF 0.0000000000,0.0000000000
RDAX ADCR,1.0000000000
RDAX REG15,-1.0000000000
RDAX REG14,-0.0277777778
WRAX REG13,0.1345807085
RDAX REG14,1.0000000000
WRAX REG14,0.1345807085
RDAX REG15,1.0000000000
WRAX REG15,0.0000000000
;------ SVF 2P
SOF 0.0000000000,0.0000000000
RDAX ADCR,1.0000000000
RDAX REG18,-1.0000000000
RDAX REG17,-0.0270270270
WRAX REG16,0.2067361810
RDAX REG17,1.0000000000
WRAX REG17,0.2067361810
RDAX REG18,1.0000000000
WRAX REG18,0.0000000000
;------ AbsoluteValue
RDAX REG8,1.0000000000
ABSA
WRAX REG19,0.0000000000
;------ AbsoluteValue
RDAX REG1,1.0000000000
ABSA
WRAX REG20,0.0000000000
;------ Smoother
RDAX REG6,1.0000000000
RDFX REG21,0.0028321367
WRAX REG21,0.0000000000
;------ Smoother
RDAX REG19,1.0000000000
RDFX REG22,0.0028321367
WRAX REG22,0.0000000000
;------ Smoother
RDAX REG20,1.0000000000
RDFX REG23,0.0028321367
WRAX REG23,0.0000000000
;------ Mixer 3:1
RDAX REG11,1.0000000000
MULX REG23
WRAX REG24,0.0000000000
RDAX REG14,1.0000000000
MULX REG21
RDAX REG24,1.0000000000
WRAX REG24,0.0000000000
RDAX REG17,1.0000000000
MULX REG22
RDAX REG24,1.0000000000
WRAX REG24,0.0000000000
;------ Output
RDAX REG24,1.0000000000
WRAX DACL,0.0000000000
RDAX REG24,1.0000000000
WRAX DACR,0.0000000000

Sandrine
Posts: 16
Joined: Thu Mar 12, 2015 10:19 am
Location: BC Canada
Contact:

Post by Sandrine » Fri Jun 19, 2015 7:11 pm

Wow! That looks good Larry!
Unfortunately I'm not at home so can't play with it :|
Will try it out after I get back
SOunds about right with the crash guitar.
Cheers!
Is there a latin word for "Stage Fright"?

MacroMachines
Posts: 71
Joined: Fri Dec 12, 2014 9:45 pm
Location: Detroit,MI
Contact:

Post by MacroMachines » Sat Aug 06, 2016 12:36 pm

After checking this out I think this is entirely possible and a fair bit of optimizing would be pretty easy.

I wonder if the fixed highness and lowpass 2 instruction filters could work also? that could potentially make a fair number of bands possible.
http://MacroMachines.net
Digital Control for your Analog Soul.

Post Reply