Drake is the name of the computer I am developing. However, this blog covers all aspects of embedded hardware and software, and explains various projects in detail. Feedback is greatly appreciated.
Katoomba is the triple LFO that featured previously on this blog, but with its own panel and custom PCB. It has the following features:
* Power usage: -12V 43mA/+12V 46mA.
* A medium speed LFO (0.01 Hz to 2 Hz) with triangle wave, square wave (0-5V) and square wave (-5-5V) outputs.
* A slow speed triangle LFO (0.001 Hz to 0.3 Hz).
* A fast speed LFO (1 Hz to 200 Hz) with two triangle wave outputs (0-5V and attenuated -5-5V).
Each LFO has an LED indicating its current polarity and the panel is language agnostic (although it still reads left to right).
The Katoomba was designed in EasyEDA (schematic will be at the bottom of this blog post) based on the circuit from David Haillant with modifications to allow multiple outputs at the same time and different voltage levels. This version uses a 16-pin voltage connector, because it is more convenient for my setup, but it doesn't use 5V, so it could use a more standard 10-pin connector as well.
In this version I decided to use the smaller potentiometers to allow more room for the cables, but since these have the same footprint as the other potentiometers this can always be changed.
There are a number of cases where it is preferred to have a short trigger rather than a gate signal. This is yet another project for which a PIC10F206 was used. It uses all inputs and outputs, with one pair triggering each time the gate goes high (+2.1V or higher) and the other pair triggering each time the gate goes high OR low. This latter option can be used to double a clock if needed. Both can operate in the audio rate range, although it falters when the triggers get the same width as the incoming square wave.
The source code is here. The circuit just uses 2.2k jacks connecting things to the microcontroller, relying on the internal diodes to protect against voltages outside of the 0-5V range (since they can handle 20mA, this shouldn't be a problem at all with these resistors. Of course it would push the circuit out of specification, as it can't protect against other disturbances anymore).
The decay of the black box is different from the decay that I made for eurorack. That decay had the voltage drop as the capacitor filled, this decay is the more classic model which first quickly charges the capacitor (using a 200 Ohm resistor) and then discharges it through the potentiometer with an added resistor for safety.
The trigger is made using another PIC10F206, because it allowed precise control over the charging time, which needed to be around 5ms, as the capacitor I chose was a 4.7uF ceramic one. I used an MCP6272 to buffer the output as well as control the LED. Finally I used my classic transistor inverter circuit using the 2N2222 to feed the signal back into the trigger jack. This means that if no cable is plugged in the decay will feed on itself: each time the voltage drops below 600mV it will trigger itself again. This means it can basically be used as a kind of LFO.
Because of the code, there is a possibility that this fails if the speed is increased too much. After this happens it will not restart until a normal trigger is applied. This can, of course, be done using the 0-5V dial of the black box itself. In the code there is a loop to charge the capacitor. The reason why the same if statement appears twice is to time the loop to be close to 5ms.
Here is a (hopefully correct) version of the schematic.
The black box noise generator is quite similar to the earlier metallic noise generator that was in the drum module. The changes are that it doesn't handle the decay (there is a separate decay part in the black box) and it allows for reducing the number of oscillators used with a second input.
In this picture the decay module and trigger module aren't present yet.
The "N" button (and gate) allow switching the metallic noise to the next effect. The "A" is the CV of the VCA, which consists of a single transistor (like in the original schematic). "O" is the output, and "S" is the input that reduces the number of oscillators.
The new source code is here. You can hear how it sounds here.
This weekend I finished my black box, which is a 5V utility box (input voltage 6.6V and higher) to be used in combination with Eurorack. It has a number of functions, the first of which is the ability to provide random notes on a minor scale.
It uses a PIC10F206, with the GP3 the clock input, and GP0, GP1 and GP2 the random note output. In order to produce the voltage it alternates between these pins, and uses a very high frequency PWM signal. Between switches the port is set to input. An MCP6274 OPAMP is used to ensure that the voltage doesn't drop, and a two-pole passive low pass filter is used to ensure that PWM is smoothed out. The disadvantage of the passive low pass filter is a slowness between tones, but for the minor chords I'm hoping to generate this is alright.
The source code is available here. The circuit is relatively straight forward. The output is between 0-5V initially, and there are trimmers to lower this to a 1V/octave range.
The Cellz is one of the more inexpensive modules, mostly because its functionality often isn't good enough and it is outgrown and replaced by a proper sequencer. However, with a small amount of work it is possible to add CV and gate to the Cellz, increasing its useful lifespan and perhaps even good enough to purchase one (I got my spare for US $44).
Adding CV allows the Cellz to be used as a quantizer, and in combination with stepping through all the sequencer steps this can also be used to automatically record quantized phrases into it. Here is a short video of what the project looks like:
As you can see, when the gate is high, it passes through the voltages from CV and quantizes them, and when the gate is low it keeps the last quantized value of that cell.
The circuit is reasonably simple. For each potentiometer on the Cellz I bent the middle pin and unsoldered it. I added header pins to the three places of the PCB where the potentiometer is connected and placed diodes between them, so that the middle pin can't exceed the values of the outer pins. The jack is connected to this with a 1k Ohm resistor and the pin of the potentiometer is connected to the switch of the jack, so that the Cellz continues to work normally when no plug is inserted.
For the gate the emitter and collector of a transistor are placed over the switch (one side of the switch is ground, and one side of the potentiometer is ground as well, so you only need to have one wire for both) and the jack is connected to the base of this transistor using a 15k Ohm resistor. There is already a 10k Ohm pullup resistor for the switch in the Cellz, so no other components are needed.
In total you'll need 8 wires from the Cellz: 5V, 0V, 2x2 for each potentiometer, and two wires for the switches. You may not need to use header pins on the Cellz side, except for the middle potentiometers, because there you may want to be able to plug in the wire back onto the header so you don't need the expansion board if you don't want it.
I used header pins everywhere, except to hook up the potentiometers, for which I just cut one female header jumper wire in half and soldered it to each of them.
I'd recommend shorter jumper wires than I used (20cm) but these were the ones I had and therefore the ones I used.
I also added a more detailed picture of how the potentiometer looks after desoldering the pin. This is the hardest part, as the Cellz uses lead-free solder which means you iron needs quite a high temperature (>400 degrees Celsius) in order to do this. First I sucked up some solder with the solder sucker, then I used a screwdriver to pull the pin out. With pliers I straightened out the pin and soldered the wire to it.
At the bottom of this post is the schematic. The header doesn't match the one I soldered together, but it is up to you how you want them to be hooked up.
The I/O Module is a 6 HP module that provides some input and output facilities. The black knob is a double potentiometer that controls the left and the right channels. If a cable is plugged into the gold jack it will be either the left channel or both channels, and a cable plugged into the purple jack will be the right channel. The output is a TRS jack with the black dial controlling the volume. It uses two NE5532 OPAMP, one for each channel. The input voltage is divided by 5 using a resistor network. Because a dual voltage system is used, there is no output capacitor to normal the voltage.
The bottom six jacks are all MIDI related. The MIDI input is fed to the board from the rear of the box using a special conversion circuit (shown below. The 10k resistor in this circuit is essential and occasionally missing in online versions of this circuit). The optocoupler prevents ground loops through the MIDI cable and is required by the MIDI protocol for receiving data. There are two headers on the module, one to provide power to this circuit and one to transfer the MIDI signal to the PIC16F690 that is used to convert the MIDI.
The PIC16F690 was chosen because it has an USART (for MIDI) an analog input and a PWM that can be used as an analog output, and it can be programmed by the PICkit 2. The MIDI outputs are, in order: CV out for MIDI notes played on channel 4. The gate signal of these MIDI notes. The clock signal of the MIDI, and three drums from channel 10. The source code for the MIDI is available here.
To ensure a quick response to frequency changes the PIC16F690 is running at 20Mhz, which also allows 10-bit accuracy. There's a two pole active filter to prevent the PWM signal from interfering with the output, and a small trim potentiometer that allows setting the output voltage from 1x to 2.1x (10k with 9.1k non-inverting OPAMP, which may not be enough).