The Projects

Here are some projects I either have already on the blog, or intend to. I tend to have a bunch concurrently going, and it's not a bad thing. Some have no urgency, and are just for the experience, and if I get stuck on one, often switching gears helps me learn something useful for the other projects. I do like to get things done though. Sometimes its just hard to say "it's done enough." That's often the engineer's dilemma, we always see room for improvement.

Turn Signal Retrofit

Status: Designed and built, not installed
LED turn signals with adjustable brightness (signal and running lights)

The Disalarmer!

Status: Complete, been in use for many months.
I bluetoothed my alarm clock.. because... you know... it needed it?

MIDI Keyboard Controller

Status: Built (electrical and mechanical), Working, now adding bells and whistles (ie, Firmware updates). Designing PCB and adding USB.
This guy is functional, and in a nice custom mahogany enclosure. I'm progressively updating the firmware to support all the features I want, as well as allow editing over MIDI. Also writing the PC patch editor.

Part 1 - MIDI Keyboard Controller
Part 2 - Layout and I/O
Part 3 - More I/O
Part 4 - Redirection

Virtual Whammy Bar

Status: Working, mostly built, software needs to catch up to the hardware changes.
Been awhile since I've wrote on this one, but a bunch of things have happened: I've made a PCB for it, built a nice wooden enclosure with the help of a friend, and now need to tweak the software for some additional features.

Intro
Part 1 - Premise
Part 2 - Basic Design
Part 3 - Detection Circuit
Part 4 - Power Supply
Part 5 - Remaining Circuit Breakdown
Part 6 - Embedded Software
Part 7 - TBA

Related:
Whammy Bar Display Select Revisited 1
Whammy Bar Display Select Revisited 2
Whammy Bar Display Select Revisited 3
Whammy Bar Display Select Revisited 4


Daylight Logger (aka Yard Light Logger)

Status: Done, for now
This one works. I can use it, plug it in to my computer and download the data, and analyze and store the data. The physical computer interface is a hassle, so that may be the one thing to revisit. But it was only ever intended to be a one off.

Part 1 - System Design
Part 2 - Circuit Design
Part 3 - Post Mortem

PS3 Cooling Fan

Status: On hold, PS3 died again
The concept I had was working, though needed a little tweaking. But with the PS3 failing again, not a huge motivation to work on it.

Part 1 - Project Premise
Part 2 - Basic Design and Fan Driver
Part 3 - PWM Driver
Part 4 -PWM Driver Pt.2
Part 5 - TBA

Phantom Powered Direct Box

Status: Done, in use
This thing does what it's supposed to, and well. Not at all complicated, but a good example of just knowing a basic circuit isn't enough, it's gotta be designed to work for its application.

Part 1 - Initial Design
Part 2 - Redesign
Part 3 - Analysis

Phantom Powered Headphone Amplifier

Status: Done, installed, in use.
This was a fun "hey, I've never seen something like this before" application (though they do exist, I looked it up just now). But I got to combine the electrical, mechanical, and operational requirements for a sound team and build something to fit their exact needs.

Part 1 - Project Premise
Part 2 - New Premise
Part 3 - Design
Part 4 - Power Supply
Part 5 - Construction

Not Documented/In Progress/Planned

DW6000 Guts Synthesizer

Status: In mechanical and electrcial design/PCB layout/PC software design
So the actual synth part of the keyboard mentioned above? I'm gonna stuff it into an enclosure to fit a typical audio rack mount. 2U tall for those who are interested. The guts of the DW6000 accounted for most of the weight, primarily in the transformer, but there is a lot of FR4 and wiring too. The idea is that any modern keyboard or MIDI controller(including my own) will output MIDI, and if I have the synth in an operating state, when given MIDI commands it'll spit out audio. There are a ton of things to do:
  • Possibly upgrade/replace original power supply circuit.
  • Design embedded controller circuit to do most of the things listed below.
  • Add dynamic note velocity(the synth plays all notes at the same volume, so hitting a key harder or softer has no effect on the note volume) I wish to remedy this.
  • Emulate all of the now missing buttons and sliders via software. Some actions can be done over MIDI, others require actually simulating button presses via I/O pins.
  • Monitor MIDI traffic. The microcontroller will have to be able to either watch all MIDI data going to and from the synth, or be in the middle filtering messages as needed. This will be necessary to keep monitor note velocities, patch changes, and various other dynamic happenings the micro will need to know about.
  • Store all the patches on FLASH. The synth currently keeps all the sound patches stored on SRAM with a coin cell battery to keep them while power is off. I can ditch the battery and have the MCU do a patch dump every time the system is powered up.
  • Add patch names. The synth currently only has a number assigned to each patch, likely related directly to its position in memory. But by storing patching (and even extra info about patches) and always being aware of what patch the synth is using, the microcontroller can display a friendlier, more informative name on a character LCD display on the front of the enclosure.
  • Add front panel knobs and buttons for various features I want to be controlled live, such as the current patch, master volume, etc.
  • Design any necessary mock circuitry needed since I'm removing a few circuit boards, including all the user controls. This mostly means keeping I/O pins of the synth from floating, or feeding steady (or even my own) voltages to A/D inputs too. In a few cases I will be redirecting control to my microcontroller.
  • Modify the synth circuitry as needed. I was lucky to acquire a service manual. Not much needs to be done, but there may be a few tweaks here and there.
  • Make the enclosure, and make it pretty. At least the front panel everyone sees. The layout of the electronics will change quite a lot from the original keyboard case to a rack mountable box. Some of the boards are quite large, and all of the wire harnesses were made based on a specific arrangement. I also have to add my own stuff with user interface.
  • Write some PC based software to create and edit patches. The synth originally had you punch in the number of the parameter you wanted to edit and then change the value. It was tedious to experiment and be creative because you could not get a big picture view of the patch you were working on. I've already played around with creating a nice UI where each parameter has a control based on it's type. Having a graph for the envelope generator or sliders for effect values is much nicer than two 7-segment LED's that can only show one piece of info at a time. It will have to perform live editing as well, which is not well supported over MIDI (I may have to dump the whole patch every time a value is changed, Korg intended you to make all changes at the keyboard itself).
That's all I can think of off-hand. Much of it is designed, some of it tested, but quite a ways to go.
This mess of stuff makes sound. The MIDI cable is just plugged into my PC. All the stuff related to AC mains
is tucked into the shoe box for my protection. Had to jury rig a few things to get it on and programmable.

Sample-based Synth

Status: Breadboarded, basic functionality works
Ever since I made the MIDI keyboard controller, I've felt kind of guilty that it doesn't make any sound itself. So I've grabbed a DSPIC30 I had lying around and built one up. It's not necessarily the ideal chip for this process because I'm doing everything in software, but I'm making it happen. I've had to roll my own 12-bit R2R ladder DAC as the one's I ordered before this project was even a concept were VQFN's.... oops. Right now, it supports eight simultaneous notes, compared to the DW6000's six. It'll also do dynamic note volumes and pitchbend (though I need to implement a new algorithm to increase the bend range). It currently only uses one sample per patch, where you really need a sample for every octave or so. A highly detailed sample that gives good definition at lower frequencies produces tons of aliasing at high frequencies due to all the harmonic content. Right now I just have a simple C# program that will load up a .csv file and send it to the DSPIC30, which in turn dumps it to external RAM because there is not enough internally. I also have a python based program which can take a short .wav clip (ideally of a solid note) and using some auto-correlation and FFT functions, produces a single period waveform sample in a .csv file. The biggest problem right now is everything kinda just sounds like different types of organ (probably cause I have not added the envelope generator or modulation portions to the software). Still fun though.
The synth is the stuff on the mini breadboards. There's a 5V & 3.3V section, some
SPI RAM, an R2R Ladder DAC, and output stage.


Mic Mute Switch

Status: DFM, DFC (design for manufacturing, design for consumer)
This is a project where I'm trying to make a simple device complicated. But also cheap and easy to manufacture.... A mute circuit for an XLR isn't hard, you can find a ton of reference designs, but it's also slightly more than just connecting your signal to ground. You really have two active audio signals, and phantom power to worry about (un-muting with a DC difference between the audio signals will give you a really nasty pop). My wood crafting friend approached me a circuit he found and wanted to make a stomp box for his wife to use. After we built one up, he wanted to make them and sell them, just as a low volume item (he does make stuff for another engineer, and it's enough to keep him busy, but not too busy). We want to add a few features, such as both XLR and 1/4" connectors, status LED's to show muted and unmuted, phantom power readiness, and long battery life off of batteries including an auto-off feature; people are not likely to remember to turn off something trivial like a mute switch. Oh, and it will be made out of hundred year old mahogany recovered from an old farmhouse or something. Right now it's a matter of getting the BOM nailed down, and designing a PCB to make the mechanical assembly as simple as possible.

WiFi Metronome

Status: Early development and testing, learning HTML, CSS, and Javascript
This one I'm designing for a church because the musicians often have only one or two practices, and are playing different songs every week. Occasionally there will be new songs or unfamiliar ones, and it can be difficult to remember the tempo or even time signature during a service. Any time you are front of an audience, your brain can get tunnel vision and you won't be able to recall even the simplest of things. I play in a band (and occasionally "sing") where we regularly practice our 40 to 50 songs, and I still can't remember most of the lyrics to 'Brown Eyed Girl' (in my defense, the song was way before my time). But anyhow, my plan is to have a large LED illuminated device that would hang in the back of the auditorium and be able to hold a queue of song tempos to prompt the musicians before each song, and be unnoticed by the audience. It's more of a safety net than anything. It will serve up a webpage that will be heavily Javascripted so as to require minimal server side interaction (the "server" will just be an Atmega328 (not arduino) with a wireless module, and with the internals of an SD card soldered in place for storage). This is so that no special software is required on your phone or PC to interact with it. Also, it will build up a database of songs so that the musicians can create a playlist each week without having to figure out the timing every time. Oh, and it will be powered via USB from the confidence monitor so that no one needs to remember to turn it on and off.
Not much to see really, the SD card is right in the middle, and the ribbon cable on the bottom
goes to a WiFi transceiver.

RX7 ECU Monitor

Status: Design concept proven, software proven, still a little afraid to start hacking up my ECU wire harnesses
I own an old Mazda RX-7, with the unique rotary engine. While not an expert at working on cars (since I live in a state with snow and salt, every job is hard), I do understand them fairly well. The rotary engine as a whole is still pretty straightforward: there is a air in, exhaust out, fuel delivery, cooling, and all your power steering, A/C, alternator and what not driven from belts. There are however, no cams (and thus no timing belts). Like any car, though, there are a variety of sensors, as well as active elements, that play into the vehicle's performance. I'd like to be able to tap into those signals to monitor things like air temp, exhaust temp, O2 sensor reading and certain ECU outputs via my phone (over bluetooth) or PC (via bluetooth or serial over USB). The air intake is the most interesting, as there are certain solenoids that turn on and off to open and close air passages based on RPM and throttle position. It would be kinda cool to not only see when the ECU activates these solenoids (though sometimes you can feel it) but also to control them at my RPM of choosing. I designed up a dummy circuit of dummy digital and analog signals that I could monitor with the microcontroller and send over bluetooth to my phone, for which I wrote a simple Android app, so I know how I'm going to do it. I just need to do all that wiring under the dash.....
Test circuit using 74HC138 and 74HC4051 to mux 8 digital and 8 analog inputs.
On the bottom is a Bluetooth module soldered to a breakout board I made with the spare space on my
Virtual Whammy Bar PCB
A screenshot of my phone talking to the above circuit and displaying the inputs in real-time.
Not a pretty program, but I needed to just get it up and running.

Upright Piano Synth

Status: Either I'll build it or donate that piano to a charity
I got an old Story & Clark piano for free. It's way out of tune and probably from the early 50's. Recently, I got the idea to convert it into a synth of sorts. I would have to come up with triggers for each key, and keep the hammers from striking the strings, or remove the soundboard altogether. It's an upright piano, so where you would normally put your music, I would like to put a touch screen hooked up to a small PC, or Rasberry PI, or use a tablet. This would be similar to the MIDI controller I already did, except that I would be integrating it with a computer and using soft synths for sound. And I would put an amplifier and speakers in the base of the piano as well. Ambitious, and I'd feel kinda bad hacking up such an old intact piano.