William Wayne "Chora-Tone Projector" mixed-signal DIY

Started by Eb7+9, August 07, 2023, 10:54:16 PM

Previous topic - Next topic

Eb7+9

behold, Wayne's high-headroom BBD-less spatial chorus / thru-zero phase rotator signal processor
with variable SPEED, DEPTH and OFFSET controls

based on Darlington's constant phase network paper
it's a fascinating signal processing concept from William Wayne, who passed in 2012 ...

needs three well matched opto-couplers and a programmed arduino Pro-Mini ... just add electrons

https://viva-analog.com/wayne-chora-tone-projector-diy/

---

https://patents.google.com/patent/US3004460
https://patents.google.com/patent/US3007361
https://patents.google.com/patent/US3147333
https://patents.google.com/patent/US3516318

Yazoo

This looks really interesting - I have definitely got a thing for rotary speaker simulators. I'm putting together a bill of materials for a shopping list. Any idea what all those trimpots do?

ElectricDruid

#2
Am I understanding this thing right?:

It generates three copies of the signal, one shifted back 90 degrees, one normal, and one shifted forward 90 degrees. And then it uses a triphase triangle wave oscillator to crossfade from one to the next? Is that right?

This would be different from a typical phase shifter which uses variable phase-shift stages, rather than changing the output of a few fixed phase-shift stages. This sounds more similar to the Hammond scanner Chorus/Vibrato, which is a long chain of phase shift stages with a mechanical air-gap capacitor system to crossfade from one to the next all along the chain and then back down again. Except that has loads of stages (20-ish, iirc) and this has only three.

Rob Strand

#3
I haven't read all the patents in detail but the way I'm reading it is the whole idea in a nutshell is to emulate a BBD (ie. time delay, actually modulated time delay) using an analog phase-shifter circuit.

A different phase shift is applied to different parts of the frequency spectrum then the parts of the spectra which have the same time delay are combined back together with bandpass filters.  The phase shift in each band is such that it is equivalent to a time delay in that band.

For each band:
- The input splits the audio signal into three phases 120 deg apart
- A three-phase modulation is applied to each of those phase shifted "replicas"
- The three modulated outputs are then combined.

The above scheme is replicated but with different amounts of modulation so that desired effective time delay results at the center of each band.  The equal time delay parts of the spectra are extracted with the band-pass filter.  The bands are then combined providing the wide-band delay approximation.

The amount of modulation and the band center frequencies relates to getting the same time delay.   However the  phase-splitting, modulation and combining *within* each band relates to creating the thru-zero chorus effect.

@ElectricDruid:  IIRC you once posted a chorus from a keyboard which used a three-phase modulation scheme, Oberheim?


The modulation seems to be sinusoidal as there's some sin(wm t) terms in the formulas.

Some finer points:  While the underlying engine can emulate a BBD/time delay, that would be when the modulation for each band is synchronized (although not necessarily the same magnitude).  Since the bands are split there's nothing stopping you having different LFO modulation, or even modulation phase, on each band.  That would hide any modulation patterns in the chorus.

Send:     . .- .-. - .... / - --- / --. --- .-. -
According to the water analogy of electricity, transistor leakage is caused by holes.


R.G.

Through-zero is an interesting thing on its own, all right. Jurgen Haible has done a lot with this, and it's worth searching for "haible" and "through zero". I like his through-zero pitch shifter. Also search for barberpole and phaser as well as the Sheperd Tone and Roger Sheperd. There are many others that pop up.

Matched opto isolators is a bit tricky. PWM or VCAs might be simpler. Haible's through-zero pitch shifter used OTAs as I remember.

To generalize a bit, using fading and separate channels, you can get FX morphing. Use faders to cross-fade between different effects. The effects can be different phases or time delays as in the referred setup, or can be different effects entirely. Two-phase quadrature is interesting, three-phase is smoother, and even more phases can be used.

Manual cross-phasing is an obvious extension, where you "morph" your tone between different effects, or even different effects chains. In the simple form, you'd use a footswitch per FX channel, with controls for cross-fade speed. Pressing a footswitch causes the most current channel to fade out while the footswitch's channel fades in. Automorphing would just run around the "ring" of FX channels. I programmed up a PIC to do this for a four channel widget. Worked. The user interface will be the complex part of this.

Also see ASMOP on geofex.com for ASMOP 2, 2a, 3 and 4 for some implementation hints for this kind of thing.


R.G.

In response to the questions in the forum - PCB Layout for Musical Effects is available from The Book Patch. Search "PCB Layout" and it ought to appear.

Eb7+9

Quote from: ElectricDruid on August 08, 2023, 01:03:27 PM
Am I understanding this thing right?:

It generates three copies of the signal, one shifted back 90 degrees, one normal, and one shifted forward 90 degrees. And then it uses a triphase triangle wave oscillator to crossfade from one to the next? Is that right?


+/- 120 degrees sum to 180 then invert ... zero degrees
then, yes, crossfade "linearly"

you can do it many ways ... opto-couplers via PWM (triangle) is the simplest
matching opto-couplers is trivial - any beginner can do it ;)

Eb7+9

Quote from: Yazoo on August 08, 2023, 11:45:29 AM
This looks really interesting - I have definitely got a thing for rotary speaker simulators. I'm putting together a bill of materials for a shopping list. Any idea what all those trimpots do?

originally meant to impose limits on LED current (or scaling) and maximum cell resistance (1M) ... turned out not to be necessary
schematic I posted doesn't have 'em, they been replaced by short and 1M resistors

Yazoo

Sorry, another question - will the 3.3V 8 Mhz pro Mini be ok for this or does it have to be the 5V 16Mhz version?

Thanks.

Eb7+9

great question,

the LED's in the opto-couplers are switched on/off at relatively high speed
the "on" current in each is limited by 10k resistors and kept constant during that part of the cycle
otherwise, it's zero

you can do the math to estimate this "on" current using ohm's law for resistors:

( 5v - 1.6v ) / 10k = 3.4v /10k = 340uA (I'm assuming LED "on" voltage is around 1.6v)

to get the same current from a 3.3v source you'd have the following equation to solve

( 3.3v - 1.6v ) / R = 1.7v / R = 340uA

which easily yields R = 5k

so, you can use the closest common value ... 4k7


as for the indicator LED's you might want to use 2k2 or 1k8 on those ...
I'm just ball-parking here, depends how bright you want them to get at max

diffeq

Got me thinking...

if it has an MCU, it could have a "tuning" routine:

a pair of analog switches moves LDR to a voltage divider + Vref and ADC reads the values when LED' PWM sweeps from zero to highest value, thus mapping actual LDR resistance to the PWM number. Then you could do all sorts of things like add/remove LFO non-linearity etc.

It would take 4 CMOS switches for 2 LDRs and some coding effort, but would eliminate completely any need for matching between optos (cause the mapping sweeps for each are independent) and Vertical-Offset tuning...

Yazoo

I have bread-boarded this but just rolled my own optocouplers. I have got it working and it sounds good. Today I tested the resistances as you explained and they don't match closely enough so the next step is to order in a batch of the real thing.  :icon_wink:

Eb7+9

excellent news Yazoo, ...

---

diffeq you've got a good idea

say you've got three unmatched optos ...

one's got average values at both ends
one's got a low Rhigh
and the other has a high Rlow

you could worsen the WPM range on the conversion to match things - though into a narrower duty cycle range

I'm suggesting the SR3 optos because they can go between 100r around 1mA to 10Meg at around 1uA
that's when they're perfectly healthy

another reason for doing hand matching, you get to know if it's a dud or not

so, going into that 10k resistor gives an attenuation range of 60db
(in essence I don't want the opto's to serve as a bottle-neck here)

now, if you scale and offset your PWM ranges to accommodate for mismatch, say you loose an order of magnitude at both ends
1k versus 100 at the low end and 1M versus 10Meg at the high end
notice what happens

the bottom one doesn't change much in the equation here
but you only loose 20db at the top
which leaves us with an attenuation range of 40db

... which is still plenty good

so, provided the cells are not extremely off your idea of a built-in self test would potentially work
mind you, that's throwing lots of resources at it ...

obviously, all this relies on an important underlying assumption
if your scheme fails because of a bum cell then you're back at doing hand testing anyway or randomly popping in other optos

not totally fail-safe I'm afraid, but close ... (!)

Eb7+9

btw, one thing we could do in this forum is help form better matched sets of components from our individual collections
(ie.,opto's, jFET's ...)

in this regard, anybody who happens to have some of these NSL32-SR3 opto-couplers and are interested in trading could
post their measured data in this or another thread

low resistance value measured with I-LED = 1mA               (via 9v battery, 25k pot, DMM)
high resistance value measured with I-LED = 10uA             (via 9v battery, 1M pot, DMM)

(*!*)

diffeq

it would be possible to even implement a "sanity check" like if the opto is responding at all and if the resistance change is in the expected direction etc. but by the time this is implemented it only makes sense for mass production.

another tuning option to get the optos to comply is to switch LED resistors (10k) with MOSFETS parallel to stock ones, changing "current transfer ratio". I imagine this would lower the Rlow and limit Rhigh some. there are many tuning strategies that could be implemented here.

long ago (actually two years ago) I've implemented a 6 stage phaser with a univibe type "LDRs around single LED" arrangement. the LFO had very precise tuning and one of the LDRs had a jumper switching it out of circuit. by trimming LFO I was able to get the sweep of precise range (something like 1k-100k) which was interesting sound wise, to know exact notch frequencies. that was also running on the assumption that LDRs had same-ish response to each other (and surprisingly, the actual notches produced were close to the calculation). I've considered using 6 separate optos each with its own LFO trimming and drive circuitry + jumpers but this seems like an overkill. digital tuning has the appeal that there are ways to reduce parts and tuning work, given that the devices are used within sensible parameters range. which was why I picked moderate (1k-100k or so) sweeps back then.

Yazoo

I've got mine built and I boxed it up yesterday, the bit I never enjoy - took me about 3 hours. Here is a picture of my build.