Gondwana - my quest for a DIY-ish IR loader

vigilante398

Authorized Vendor
TL;DR - tube-driven IR loader with two EEPROMs to switch between two IRs.

This one is still ongoing, but it's neat so I like talking about it. My end goal is to have a giant all-in-one box that has a tube preamp going into a tube power amp emulator into a tube-driven IR loader. When I first came up with this idea I was planning to use AMT's "Pangaea" IR loader module, so I thought the name "Gondwana" was clever. By the time I had my first working prototype of the IR loader section though, AMT had raised the prices on the modules to the point where it didn't make sense for me to proceed. I'm not a software/firmware guy, but I decided to take a swing at it myself.

The AMT module, as well as other IR loaders I've seen out there (most notably Shift Line), uses the Analog Devices ADAU1701 DSP chip. I don't usually plunge headfirst into new digital platforms, but I found that Analog has a visual block-based development software for it similar to SpinCAD for FV-1. The way Analog says to use it in the datasheet is to attach an EEPROM to it, that's where the .hex file lives to configure the chip for operation. The way the AMT module does it is to use a microcontroller (STM32) to take IR files over USB and convert them into the .hex file the ADAU1701 is looking for, then pretend to be the EEPROM.

I couldn't figure out the STM32 part so I did an easy way; I had done a single IR stored on an EEPROM on an ADAU1701 development board, so on this next test I wanted to go a step further; I have a pair of EEPROMs with the address pins on a switch, so I can switch between two IRs. I also went ahead and routed out GPIO lines for two additional pots and an LED so I can play with adding different things to the design, so this is kind of a really basic tube-driven ADAU1701 development kit. I have a couple things to work out, but so far it looks promising, I think I'm on the right track.

IMG20220721002221.jpg

IMG20220721002157.jpg
 
I've been doing some testing with this today and I came across a roadblock. The goal was to be able to load up two IRs and switch between the conveniently, and I did the trick I've seen people do with FV-1 EEPROMs where you hook up both and switch address lines to the one you want. ?Unfortunately it looks like in self-boot mode the ADAU1701 only reads from the EEPROM at power up and holds the program in its internal volatile ROM. So in order to actually run the IR on the second EEPROM I have to flip the switch then disconnect and reconnect power to the pedal. Not a huge deal for me as I wouldn't be switching between them during a gig or anything, but not very convenient for an end user.
 
This is an awesome project, love it!

I've been doing some testing with this today and I came across a roadblock. The goal was to be able to load up two IRs and switch between the conveniently, and I did the trick I've seen people do with FV-1 EEPROMs where you hook up both and switch address lines to the one you want. ?Unfortunately it looks like in self-boot mode the ADAU1701 only reads from the EEPROM at power up and holds the program in its internal volatile ROM. So in order to actually run the IR on the second EEPROM I have to flip the switch then disconnect and reconnect power to the pedal. Not a huge deal for me as I wouldn't be switching between them during a gig or anything, but not very convenient for an end user.
How long are the initialization times for the dsp? For me, from an user's standpoint, it would be absolutely fine to have a reset switch that I had to press when changing IRs (and I imagine some kind of switching could be conceived to reset the dsp when changing EEPROMs). That would be preferable to plugging and unplugging the pedal (which is not a major hassle, to be honest)
 
This is an awesome project, love it!


How long are the initialization times for the dsp? For me, from an user's standpoint, it would be absolutely fine to have a reset switch that I had to press when changing IRs (and I imagine some kind of switching could be conceived to reset the dsp when changing EEPROMs). That would be preferable to plugging and unplugging the pedal (which is not a major hassle, to be honest)
You could always put a little pushbutton on the face that cuts the power instead of having to physically unplug it
 
How long does power need to be disconnected to force a reset? There's a little trick I've done with the FV-1 that might work in this case.

You can use one half of a DPDT toggle switch like this. It depends on the break-before-make nature of the switch.

When you flip the switch VCC will briefly be disconnected from the circuit. I used a similar concept to toggle the Internal/External pin of the FV-1 to force the EEPROM to reload when flipping the switch. The question is whether or not that brief instant is enough to cause a reset.

Use the other half of the DPDT to do the EEPROM address change.

1658968491565.png
 
This is an awesome project, love it!


How long are the initialization times for the dsp? For me, from an user's standpoint, it would be absolutely fine to have a reset switch that I had to press when changing IRs (and I imagine some kind of switching could be conceived to reset the dsp when changing EEPROMs). That would be preferable to plugging and unplugging the pedal (which is not a major hassle, to be honest)
I'm not really sure what the time required is. There is actually a reset line on the DSP chip, I'm wondering if I could find a nice solid-state way of switching it every time I use the toggle. For now it's fine as-is since I'm nowhere near the "ready for customers" stage yet, but definitely something to look into.
 
You can use the same switch trick to pull the reset line high or low.

Just connect the pins marked "VCC" to Reset, and "TO_CIRCUIT" to either your digital VCC rail or GND.
 
You can use the same switch trick to pull the reset line high or low.

If you need to pull it low just connect the pins marked VCC to Reset, and "TO_CIRCUIT" to ground.
Yeah I was thinking about that, it may be long enough to toggle the reset on the chip and make it work, I'll have to try it out.
 
Awesome work! I love to see projects like this.

The adau1701 has some sort of "safeload" buffer, where it can load the new coefficients into ram between clock cycles and make the change without static or zipper noise. I suspect you could use one of the gpio/control ports to tell the chip to reload the data from the ROM when you switch to the other ROM. Maybe ask on the sigmadsp forum?

There are some code examples (on the sigma DSP forum) on how to interface the adau1701 with a microcontroller. In that manner the microcontroller can calculate all the coefficients for the IR and any other filters you might implement. It seems like this is what AMT has done with their adorable little board. I bought one and played with it; it's great! Pretty sure that's what is inside the Suhr Reactive Load IR. The whole safeload thing explains how John and Kevin can switch IRs on the pt15ir without static or otherwise creating wacky sounds.

I have a few adau1701 experimenter boards (the $20 ebay ones) with an ownhammer greenback IR loaded up. They sound great, but I also haven't taken time to learn how to interface a microcontroller. I've been thinking about using a bus pirate or something to sniff the traffic between the microcontroller and the DSP. For that matter, I've read that it's possible to clone an stm32 (in various commercial products) and do some amount of reverse compile work. That's a hassle; it would probably just be easier to actually learn how to make it work!

And yeah, I rarely post here, but I couldn't sleep. 🤦‍♂️

Jamie
 
Oh I finally grabbed pics of the enclosure finish. I've been busy with builds and haven't had time to actually play with the circuit much, but I'll get there. You'll have to forgive the chunks of enclosure missing, this was a blem enclosure that I resurrected for this experiment.

View attachment 29970
That is cool! Is that background a print? Or did you "engine turn" it on the CNC??
 
Is there any progress o this?
Cheers :)
Sono
A little bit? I'm successfully using the ADAU1701 with a single EEPROM holding a single IR in Venus X, and it's working really well. I'm working with someone smarter than me to develop a way to load IR files over USB and store them in flash memory which a microcontroller can pass over to the ADAU1701, but it's still early stages and I don't have anything working yet.

That is cool! Is that background a print? Or did you "engine turn" it on the CNC??
Thanks 😁 The background was done on the CNC, not printed. I used a 3mm end mill and just had it poke the enclosure every 1.5mm.
 
Back
Top