Here I will post select schematics of various audio / electronic circuits. Certain pedals I will NOT be sharing (for now; eventually I plan to share everything). I will note if a schematic is an original circuit of mine or not, and if it is, please attribute the work to me if applicable.
Happy Designing!
Ivy's Mono Matrix MIDI-fier
Monophonic MIDI control for synths with keyboard matrices...
This project uses an Arduino and two CMOS analog switch ICs to "encode" monophonic key presses based on a MIDI input. Connect the ROWS and COLUMNS to your keyboard's ROWS and COLUMNS, then set each note manually with the provided code. Can be connected in parallel with an existing keyboard (use a diode for polyphonic synths) or to replace a missing/broken keyboard.
I have added MANY extra options to this project, including two power input options (either use +5V input, or use the Arduino's 5v regulator), an external voltage regulator (fix power issues, avoid batteries), and access to some of the unused Arduino pins (you can code that yourself lol).
Here's a quick overview...
SCHEM: Ivy's Mono Matrix MIDI-fier
Alright, here is the schematic and PCB! These images show the optional components VS. the necessary/default components. You'll need an Arduino Nano, a 6n138 optoisolator, two CD4051 ICs(or equivalent, 74-series OK), and some passives and wires. Absolute minimum component count bypasses the "DC In" section, and requires a 5v input at 'xPad 3'. External voltage regulator an other extras are available, and can be used as you see fit. There are extra spots for more power caps if needed.
OTHER NOTES:
-In the "Matrix Common" section, there is a spot for a resistor and two diodes. They are all connected in parallel, and the idea is that for keyboards WITHOUT diodes, you can simply short it, and for keyboards WITH diodes (the polyphonic ones, usually), use a single diode in the correct direction (depends on your synth).
-There are two switches that may require shorting: the 'Power' switch and the 'RX/PRGM' switch. If you DO NOT want a separate power switch, short it. If you DO NOT use a removable Arduino, you'll need to set this switch to OFF each time you want to add/change the code. Short/jump it if not.
-YOU WILL NEED TO MANUALLY SET EACH NOTE BASED ON THE KEYBOARD ITSELF AND HOW IT IS WIRED! The code contains an array, and you enter binary values for each note. There is tons of variation in keyboard matrices, and this allows for complete customization and compatibility. Suggestions on how to streamline this are very welcome. (Hell, and any other code-related input!)
// THIS CODE IS DEIGNED FOR THE YAMAHA PSS-130
// initializes to OFF, playable while unit+nano are both ON from same DC supply
#include <MIDI.h>
// Define MIDI note range
const int START_NOTE = 53; // Start note value
const int NUM_NOTES = 32; // Number of MIDI notes to handle
// Define MIDI note array
int noteStates[NUM_NOTES][6] = {
// Each row represents the state of D6-D11 when MIDI note 36 is played
// You can manually set the states for each MIDI note
// Refer to schematic for IC connection...
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 0},
{0, 0, 0, 0, 1, 0},
{0, 0, 0, 1, 1, 0},
{0, 0, 0, 0, 0, 1},
{0, 0, 0, 1, 0, 1},
{0, 0, 0, 0, 1, 1},
{0, 0, 0, 1, 1, 1},
{1, 0, 0, 0, 0, 0},
{1, 0, 0, 1, 0, 0},
{1, 0, 0, 0, 1, 0},
{1, 0, 0, 1, 1, 0},
{1, 0, 0, 0, 0, 1},
{1, 0, 0, 1, 0, 1},
{1, 0, 0, 0, 1, 1},
{1, 0, 0, 1, 1, 1},
{0, 1, 0, 0, 0, 0},
{0, 1, 0, 1, 0, 0},
{0, 1, 0, 0, 1, 0},
{0, 1, 0, 1, 1, 0},
{0, 1, 0, 0, 0, 1},
{0, 1, 0, 1, 0, 1},
{0, 1, 0, 0, 1, 1},
{0, 1, 0, 1, 1, 1},
{1, 1, 0, 0, 0, 0},
{1, 1, 0, 1, 0, 0},
{1, 1, 0, 0, 1, 0},
{1, 1, 0, 1, 1, 0},
{1, 1, 0, 0, 0, 1},
{1, 1, 0, 1, 0, 1},
{1, 1, 0, 0, 1, 1},
{1, 1, 0, 1, 1, 1},
};
// Initialize MIDI object
MIDI_CREATE_DEFAULT_INSTANCE();
// Define digital pin for output
const int outputPin = 5; // D5 - connected to 4051 ENABLE pin
void setup() {
// Set digital pin mode
pinMode(outputPin, OUTPUT);
// Initialize pin 5 to HIGH/off
digitalWrite(outputPin, HIGH);
// Set digital pin mode for pins D6 to D12 as OUTPUT
for (int pin = 6; pin <= 12; pin++) {
pinMode(pin, OUTPUT);
}
// Initialize MIDI
MIDI.begin(MIDI_CHANNEL_OMNI);
// Setup callback for MIDI NoteOn and NoteOff events
MIDI.setHandleNoteOn(handleNoteOn);
MIDI.setHandleNoteOff(handleNoteOff);
}
void loop() {
// Handle MIDI input
MIDI.read();
}
// Function to handle NoteOn event
void handleNoteOn(byte channel, byte pitch, byte velocity) {
// Check if pitch is within the defined MIDI note range
if (pitch >= START_NOTE && pitch < START_NOTE + NUM_NOTES) {
// Map MIDI note to array index
int noteIndex = pitch - START_NOTE;
// Update digital pin state based on MIDI note
for (int i = 0; i < 6; i++) {
digitalWrite(6 + i, noteStates[noteIndex][i]);
}
digitalWrite(outputPin, LOW); // Set output pin low for NoteOn event
}
}
// Function to handle NoteOff event
void handleNoteOff(byte channel, byte pitch, byte velocity) {
// Check if pitch is within the defined MIDI note range
if (pitch >= START_NOTE && pitch < START_NOTE + NUM_NOTES) {
// Map MIDI note to array index
int noteIndex = pitch - START_NOTE;
// Update digital pin state based on MIDI note
for (int i = 0; i < 6; i++) {
digitalWrite(6 + i, noteStates[noteIndex][i]);
}
digitalWrite(outputPin, HIGH); // Set output pin low for NoteOff event
}
}
This code is designed for and tested with the Yamaha PSS-130. It's a simple 32-key synth that will run using the same DC input as the MIDI-fier, AND the keyboard matrix in most units is wired neatly in order (4rows x 8columns).
Change the array of binary values to suit any keyboard (starts at lowest MIDI note, cuts off after 'max num notes' is reached).
Modified versions of this code have been used to add MIDI control to:
-YAMAHA PSS-370 (power with +5VD from the Yam's PCB, use a diode!)
-YAMAHA PSS-130 (easiest/works best)
-CASIO CT-320 (use a diode!)
-CASIO CT-380 (diode again)
-First Act HELLO KITTY (and the FROZEN one, same synth)
-"My Music Maker" and other mini keyboards for kids
This is the final revision of the X-Fuzz circuit. I don't plan on building/selling them, unless it's a custom request or something. But yeah- it's a fairly simple fuzz, yet another npn Fuzz Face derivative circuit, with a couple added components to add some more crunch, create a different tonal profile, and to reduce noise.
I am sharing this with the added notes to provide some wiggle room for those looking for a simple fuzz circuit to build. It's nothing terribly special, but I do like the extra bite that D2 adds, and I have found this to work reliably. A lot of those who are newer to electronics, trying to get into pedal design, could easily be confused by the pnp/npn fuzz face issue, and I'm simply tossing in another npn FF-ish schematic that, well, works.
/It was pointed out to me that the volume pot numbers are reversed; this is true as I don't personally use the numbers for reference. The capacitor types listed above refer to my preferred types, but are not like, required. It was also pointed out that Schottky diodes would be a better choice for D3, though issues can also be avoided by placing D3 on the other side of R7. I don't expect many people will use an incorrect plug, and leave it there without checking if it works for an extended period of time. That is the only case that D3 might fail in the schematic above.
This schematic is part of the "No Sirens" Fuzz pedal I built. I was trying to test some additions to a green ringer-style circuit, namely a buffer at the input and gain and tone at the output. In the pedal this ended up in, there was another gain stage and a tone roll off knob before this circuit in the signal chain. R4 should be a 1m resistor.
Do I recommend this circuit? Sure, if you add gain and tone knob (simple low pass/rolloff) at the input, otherwise, its sorta gated and sploot-y. The gain at the output and tone knob after does add a ton of new flavors, though. Fun experiment, definitely gets an octave sound going at the right settings.
Realistic brand 4-Channel Stereo Microphone Mixer TRACED
This unit has a power switch, a stereo switch, and 4 sliders.
My unit had a broken fader, so it was removed for analysis and modification.
Experimental triangle wave generator circuits...