Approximately half my lifetime (20 years) ago I used to have literally drillions & drillions of ideas that I still feel aren’t a complete waste of time. One of these brilliant ideas was to be able to control a guitar wah pedal from my computer. At the time I had scant musical equipment to match my scant muscial abilities. I had scavenged what I could afford in my extremely limited means from pawnshops, flea markets, thrift stores, & the Penny Power. Among this discarded mess were an Atari 1040st computer which has built in MIDI, a Korg Poly800MkI synth, & a Boss DR550 drum machine. I had been successfully using the Atari to sequence the synth & drum machine, but wanted to also control effects for my guitar at the same time and in the same way. But this was the early 1990′s. I didn’t have the skill nor the funds to do anything of the sort.
For those interested here are some YouTube links to a blurry picture of my son playing with the Korg over very randomly spliced together and poorly preserved material salvaged from a cassette made at the time: SLSC-B01 & SLSC-B02
I recently realized that some of these old ideas, due to a better financial situation and the current space age state of technology, are now easily within reach. The first of these ancient plans to be made finally real is a variation on the original MIDI wah pedal idea. Instead of using an analog sweeping wah I went with a 10 band equalizer. This can serve as a choppy wah effect, but I preferred the 10 band EQ as the foundation for the project because I felt that it would have a wider range of applications and, as will be explained later, the board can also simultaneously control an external real wah as well as a whole bunch of other effects through an expansion board capability.
The first 17 second demo recording I made of the Zeta Reticuli on SoundCloud: “This is me doing nothing but playing a single chord over & over to a drum machine. My fret hand does not move at all. I used my sweet-ass lucite guitar through a Proco Rat distortion pedal plugged into my MIDI EQ which is plugged into my micro-Marshall. This is mic’d into a mixer with flat EQ & recorded directly by my desktop computer. No other effects or trickery. All the EQing was programmed into a sequencer on a different computer 5 minutes before I recorded this.”
Step 1: Overview & Operation
I believe that a user will need to be somewhat familiar with using MIDI to get any real benefit of this device. It could be used as a very basic tone control, but those ends would likely not justify these means. The next simplest case I can envision is using a small MIDI keyboard controller to control the Reticuli in real time. My personal plan, for which I made it, is to create complicated tonal patterns and subliminal currents using a software sequencer where I can control precise values for each individual controller at precise times. This scenario has a lot of prerequisites in time and equipment. Although, truth be told, I’m still using mostly cheap items gathered over the years from flea markets, thrift stores, and pawn shops; and I much suck at music. The real measure of this project is that it cost under $100 and has exponentially paid that back in education and entertainment value. I spend that much just taking my family to a bad movie.
Another way to use the Zeta Reticuli is with a purpose-built or virtual controller. Hopefully I have done this already and included video(s) below to demonstrate and clarify the different modes and MIDI cc usages.
So anyway: The first selection that needs to be made to use the Zeta Reticuli is mode which is explained in more depth below and is chosen by issuing a MIDI patch change to patch 0 or 1. The firmware currently gives 2 options for mode, plus 10 user programs that can be either mode.
patch 0: DIRECT: Each frequency band is controlled directly. This can be either by using MIDI continuous controllers 22 through 31 or by the velocity value in Note On messages for Middle C (Note #60) through A (Note #69)
patch 1: PSUEDO-PARAMETRIC: An imitation of parametric behavior which uses the same Controller and Note On velocity options as above, but processes them differently:
- cc22: center band: The center frequency of the peak/notch.
- cc23: center level: The level of the center frequency. If it is a higher value than off-center level there will be a band-pass effect, if lower there will be a band-block or “notch” effect.
- cc24: off-center level: The level of the furthest off-center frequencies outside of the width parameter.
cc25: width: The width of the parametric curve effect, or number of bands above & below the center frequency.
- patch 10-19: USER PATCH 0-9: Storing user patches is discussed below. Once a patch is in memory it can be recalled by sending the Zeta Reticuli a MIDI patch change message for patches 10 through 19 (user patch # plus 10). Only the mode and associated EQ parameters are stored. None of the parameters for controllers associated with an expansion board are stored.
- cc6: gain level: Controls input level to preamp. See Input and Preamp below
- cc7: volume level: Controls output level. See Output below
Storing User Patches:
As with everything else in the Zeta Reticuli there is more than one way to do this to accommodate different equipment and usage possibilities.
The first way of storing a user program to memory is by using MIDI continuous controllers 70 through 79, sending a value of greater than 64. The controller to use for a specific user memory location is just 70 plus the number of the memory slot. Slot 0 is MIDI cc 70, slot 1 is 71, and so on. When the Zeta Reticuli receives one of these controller messages it stores all of the EQ parameters to the appropriate EEPROM addresses. As noted above, only the mode and associated EQ parameters are stored. None of the parameters for controllers associated with an expansion board are stored.
The second way to store user patch data is through MIDI SysEx messages. This may be more complicated, but more convenient – at least in my case. A 7 byte SysEx message that will cause the Zeta Reticuli to store the current EQ settings to a specified user patch is as in the image titled "SysEx Store User Message"
- The Zeta Reticuli’s SysEx implementation allows it to also get patch data both to and from external software such as a MIDI librarian. This will only work over the USB port since there is no standard MIDI out port on the device. The format to retrieve a user patch over USB is exactly the same as above with the exception of byte 4 Command. This byte will need to be 0×11 (dec 17) in this instance, to signify a user patch request command. As soon as the Zeta Reticuli receives a properly formatted SysEx request it will respond over USB with an 18 byte reply as in the image titled "SysEx User Patch Data Message"
Controlling Additional Effects:
No point having idle pins, so I’m putting them to use extending the control capabilities through an 8 pin header. The header pipes the 5 volts, the 2 signals necessary for SPI (SCLK & MOSI), and enough chip select lines to control 4 more 5206 chips installed on expansion boards. The expansion board could be an individual stand-alone effect, which is the way I’m planning to implement an analog wah. It could also be just some pots accessed through a header to control an existing external effect that has been modded to be controlled by the Zeta Reticuli, which I’ve breadboarded using a cheap chorus pedal with great success.
Other SPI-controlled chips could be used in an expansion board, such as digital outputs to control relays for an MIDI controlled automatic signal router (Another plan in the works!), but the firmware would likely need changed to handle this. Another option that I’m considering is an SPI multiplexer to drastically increase the number of available CS lines. At this point the number of MIDI continuous controllers may then be the bottleneck and mapping multiple MIDI channels may be required. I’ve mentally bookmarked these and other options but to be real I haven’t even finished the updated version of this controller yet, let alone sketched out the first expansion board.