I couldn’t decide on exactly how the EQ should work so I included every option that I had in mind. Hopefully this means flexibile
rather than convoluted
and allows a user to choose their preferred method.
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.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.
Storing User Patches:
- cc6: gain level: Controls input level to preamp. See Input and Preamp below
- cc7: volume level: Controls output level. See Output below
As with everything else in the Zeta Reticuli there is more than one way to do this to accommodate different equipment and usage possibilities.
Controlling Additional Effects:
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"
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.