It worked! The new soldering iron was beautiful, so you can stop being stressed about the responsibility, Andrew. :) It really made it a joy to solder.
The overall hack is a tad unstable, so I haven’t made a video of it yet or labelled it or anything. I’ll try to take some photos, though. I have some ideas as to what might be happening.
Here’s what it does at the moment that’s desired:
- Switch selects between internal and external sync modes.
- Switch selects between run/stop modes when internally synced.
- Knob selects tempo when internally synced.
- When externally synced, tempo is correctly retrieved from incoming MIDI clock.
Here’s what it does that’s less desirable:
- Sometimes it takes a long time to switch between modes — longer than I have a good explanation for. Other times it switches more quickly.
- Sometimes when you touch the knob or the switches, the whole thing kind of freaks out a bit.
- Sometimes it produces very strange output for a second or two before successfully switching between modes.
It was doing this during the testing phase when I was just using a bunch of alligator clips to hold everything together, so I had thought it was just the noise and unreliability of that. Now I’m not as sure. It almost seems like something’s shorting with the metal plate that it’s all mounted against, although I thought I’d triple-checked that that wasn’t the case. The one thing I’m wondering is if the knob, which is on the back mounted almost flat against the plate, is causing some kind of issue. I could put a washer or a nut on it behind the metal plate as a kind of spacer.
One thing that I should mention is that I kind of built this as a bit of a hybrid between permanent and temporary installation. I don’t have a screwshield or anything of that sort for the Arduino, so all connections to it are being made through these sort of push-in solid cables like you’d use when prototyping on a breadboard. My circuit, simple though it is, is actually on a mini breadboard that’s mounted to the plate. So all of those connections between the Arduino and the breadboard are not soldered in. All the connections to the knobs and switches are, though, and anything else which I realistically could. So if I can’t find some other source of the problem, that might be a next step — actually putting this on a board and soldering it all down. But those connections seem pretty solid, so I don’t think that’s it. I’m leaning toward the knob. I suppose I could use the multimeter to test if the value it sends ever goes totally wonky.
Anyway, I’ll post some pictures and videos at some point, either later to solicit input on the problems or when I get it fixed up.
Guess what arrived today!
No. No. Not that either.
Yes, my new soldering iron!
I went with Andrew Martens’ suggestion in the end, because he had personal experience with it and he’s kind of my go-to guy for advice on this stuff.
I think I’ll only be working on this for one more full day, with any luck. Despite that knowledge, I’ve found this phase of the project to be really disheartening, in a strange way. I’ve got all the drilling done, and the controls mounted in the plate, the arduino mounted on the backplane and the breadboard glued to the inside of the module. So what’s the problem, right?
I dunno. I think it’s that this segment has been so half-assed and kludgey. I don’t have the right tools or components to do this sort of work well. The result looks okay, but still. Also, to get it done I had to disconnect pretty much all the cables, and in the process of trying to get it to work without doing so, a bunch got pulled out again. I’m not entirely sure what’s missing and what’s in there now, and I have these pictures of blowing everything up in the 11th hour. And the third or fourth time you re-assemble a project from scratch, well… it’s not super fun anymore.
Furthermore, testing was… well, it all worked, sort of, but it wasn’t a stellar runaway success, per se. I’m worried that when all is said and built, that’s as good as it’s going to get — unreliable and prone to dramatic failure.
I suppose only time will tell, and I shouldn’t get too pessimistic. We’ll see whether I can get it done tomorrow, when I have the evening completely free. I’ll have to overcome my general trepidation about the soldering iron — although I’m using a breadboard for many of the connections, I’m going to have to solder several of them. I’ve got sort of a half-baked idea as to how to interface those two things, and the success of the project might largely depend on how well that works.
With any luck, by the end of the day tomorrow I’ll have some photos and maybe a short video. w00t!
I got a little time to work on the Sync Project today, and it’s, well, pretty much completely done.
I don’t have MIDI Thru, but with only two jacks to work with, a couple of MIDI outputs on my computer, and a pile of old equipment looking shiny to me lately, I’ve come to the conclusion that I might just leave the output jack as a DIN Sync jack. That way the Time Buffer will also serve as a MIDI Clock -> Din Sync converter for any other gear that I get.
Aside from that, it works. I spent a good hour troubleshooting *something*, and having no luck at all, and then suddenly it just started working, with no particular intervention from me. Noise? Loose connection? I don’t know, and that’s a little frustrating.
I’ve formulated this idea that I wanted to do everything using just alligator clips to make it easy to modify later if I wanted to, but I’m re-thinking that. They move around an awful lot, and there’s a ton of noise whenever I go anywhere near them. I might scrap that. I do want to avoid cutting up the Time Buffer cables if I can, such that it’ll be trivial if I later want to sell it or give it away to revert the whole thing by just buying a new faceplate for it. But I should be able to work around that okay. Even if I solder the MIDI leads, I can cut those later without any real skin off of the module’s back. The big question is what kind of wire to use. Stranded would be better for soldering, but the solid stuff I’m using would be nice if I plan to just put the mini breadboard in rather than soldering this all to a real board. I dunno. I suppose I should bite the bullet and both use stranded wire and solder this all up. The downside, other than the pain of transferring the design and mounting another board (although I think there’s plenty of space to do that) would be that I’d probably then want to buy a screw shield for the Arduino so the connections to the Arduino would hold better. But the final result would probably be more reliable while still allowing it to be modified later if I needed to. Hm.
Anyway, the functions tested tonight were the toggle switch to flip between internal and external modes, the toggle switch to flip between “run” and “stop” modes when working internally, the dial to set the tempo when running internally, and driving it from MIDI clock when running externally. It all seems a go. It takes a while to switch between modes, but I can deal with that.
I really want to finish, but it’s 11:40pm and I have work in the morning, plus I don’t *have* a screw shield, plus it would be really impolite to be drilling and dremeling at this time of night. Plus, I don’t even know where my soldering iron and solder are. All in all, it’ll likely have to wait until I’m back from Boston. If I had the screw shield, I’d be tempted to give away my Air ticket for tomorrow night just so I could finish it up.
You may have noticed that the first couple of updates about the sync project came quickly, and then nothing for a long time.
The problem that I’ve run into is, irritatingly, parts. I placed an order from A1 Electronics here in Toronto for a whole slew of parts, including five case-mounted MIDI jacks. (This project only requires three — MIDI In, MIDI Thru and DIN Sync out, but I figured that if I was ordering some anyway, I might as well get a couple more.) Even though the store is local, they charged the same $20 shipping fee that everyone does, but I decided to go for it anyway, because, well, everyone charges $20 shipping and them being local I’d get my stuff nice and fast, right? RIGHT?
Well, no. It took a little while to arrive, but not *too* long. I opened the box to find my awesome order with all my neat stuff. Well, almost all of it. Instead of the MIDI jacks, there was just a little piece of paper stating that those items were back-ordered.
Since then, I’ve just been waiting. I’ve popped by a few places and nobody seems to have them in stock. I’ve tracked them down at Mouser, but I don’t know if I want to blow another $20 in shipping for a $3 order, especially since this project has already set me back way more money than I’d planned for. (To be fair, a lot of that money is in equipment that will be handy for future projects.)
Okay, so I’ve been waiting. And waiting. And waiting.
That’s pretty much where it’s at. I’ve sent them e-mail, but received no reply.
So I’ve started looking fondly at the Kenton USB Solo that they sell locally through Moog Audio. It’s $279 CAD, and I’d get a very, very sweet USB MIDI to CV converter, with more outputs than I currently get through the Q104 MIDI Interface. I’d also *still* have the Q104, so I could use both simultaneously to increase my outputs to the modular even more. It also has its own LFO, syncable to MIDI. And… it outputs Sync 24, which would make this whole project redundant.
- Excellent build quality
- Standalone device wouldn’t take up a space in my modular (remaining spaces in the system are at a serious premium)
- Lots of great features, covers several needs at once
- $279 saves money when you consider that this might help stave off the need for something like Volta (something that can do continuous controller conversion better than the Q104 does)
- Would free me up to not worry about the remaining implementation details of the sync project
- Would leave me with a spare Arduino to play with
- Solving this issue would free me up to get back to working on music, whereas the “project interruptus” seems to be forming an effective psychological block for me
- The $20 shipping might easily balloon as I discover that I need more parts from more vendors (such as a screw shield for the arduino or cable headers from Mouser).
- While my implementation doesn’t cover as much overall functionality, the sync part has at least one important additional feature this wouldn’t (an adjustable internal tempo source mode, allowing me to use all the features of my sequencing modules without needing to hook up a computer)
- Buying a device at this relatively late stage in the game feels like giving up
- $279 isn’t peanuts and doesn’t include taxes, shipping, or the 1/8″ to 1/4″ cables I’d need to buy, and is certainly more than just eating the $20 shipping to buy another set of MIDI sockets
- Having patch points on the back of an external box wouldn’t be as handy as having them be jacks in the modular
- Slightly obtuse UI for configuring the device might lead to me not using some of its features (such as the LFO) as often as I could.
So that’s my current dilemma.
Jan 25, 2010 Arduino
Today was the first day I’ve had to work on the sync project since my last update and it was a bit frustrating. I started late and I kept not finding what I needed, plus other mishaps. A lot of the evening was spent with an analog multimeter, a battery and a diced-up MIDI cable trying and failing to trace the pins, desperately trying to shove the battery back into our cordless phone and sync the phone to the base before calls went to voicemail, cutting up audio cables I had lying around to make connector cabling for the breadboard and discovering that the resulting strands were so thin that they just sort of sat gently in the sockets and would fall out at the barest gesture and other such entertaining activities.
However, I eventually did get it going and turned to the software part, which was about as fraught with banging my head on the table, but ultimately wound up with a fair bit of success. I guess that’s more evidence the perseverance is the key.
Right now, I have a device built which does the following:
- Has a push button to toggle between internal and external mode
- In internal mode, generates Din Sync which is read successfully by the Time Buffer
- In internal mode, has a knob that allows you to select tempo
- In external mode, receives MIDI Clock signals from the computer and converts them to Din Sync
- Powers itself from the computer’s USB bus
Things still to do:
- Replace button with two-position switch
- Use button or switch as run/stop toggle in internal mode
- Add recognition of sequencer run/stop/continue messages for external mode
- Add MIDI Thru if I decide that I want that
- Get power from synthesizers.com power supply or external power supply
- Swap DIN cables used currently for DIN jacks
- Install in box or behind synthesizers.com panel
All in all, most of the tough stuff is done and working now, and I pretty much have all the reference material I need to do the rest.
Oh, except for one thing. The synthesizers.com power supply has three rails I can use — +5V DC, +15V DC and -15V DC. The arduino likes to get something from +7V DC to +12V DC. If anyone has a few words or pointers for inexpensively getting from A to B on that one, please let me know. It would be greatly appreciated.
Jan 19, 2010 Arduino
Well, I’ve got the Arduino sending DIN Sync (Sync24) successfully to the STG Soundlabs Time Buffer. I’ve also got a start/stop button that turns the clock on and off (although not with absolute reliability — I may have to put in some kind of jitter control mechanism, or maybe use a switch instead of a button — I’m actually only using a button because I had one handy, and I’d like to use a switch in the final design, which would also simplify the code). And I’ve got a dial (pot) which allows you to set the tempo.
Still to do:
- MIDI communication
- Conversion of MIDI clock pulse
- Power from dotcom wiring harness
- Grafting onto Time Buffer (internally)
Not bad for my first night at it!
The biggest problem that I had was in dealing with math and the limitations of integers. All I can say is that it’s lucky the usable range for the way I was approaching setting up the pulses wound up falling within the range of an int, because I was having no luck getting the functions to deal with any other data type.
I think at the very least that I’m going to need a pile more wire and a couple of switches before I move forward. I can probably scavenge the wire, though. I wonder if there’s anything I could scavenge switches from… hrm.
I completed my first-ever successful Arduino project today! It’s an exceedingly simple square wave synthesizer. It uses only a few components:
- Arduino Duemilanove microprocessor board
- Eight jumper wires (the diagram shows more for clarity)
- Ridiculously tiny breadboard (again, the diagram shows a larger one for clarity)
- Linear trim potentiometer
- Piezoelectric speaker
- 10k ohm resistor
- USB cable (for power, you could use a battery pack instead)
All of the parts above were part of the Sparkfun Arduino Starter Kit except for the 10k ohm resistor, which I bought at The Source by Circuit City (a.k.a. Radio Shack) in a 150-piece set of assorted resistors. (I used this key to identifying resistors to pick out the right one.) The Sparkfun kit actually comes with 10k ohm resistors now, but the version I bought, via Robotshop.ca, didn’t come with them. Anyway, they weren’t hard to get.
Since the book I bought on learning Arduino hasn’t arrived yet, I figured that I’d start by looking through the sample code and documentation, and in doing so I realized that there was enough there to pull together a simple square-wave synthesizer. And, well, who can resist that? So I did.
The cool thing about this project is that I actually understand most of it, despite not having begun reading up on anything. It’s all extremely comprehensible. The only thing I’m not clear on is the use of the 10k ohm resistor — I have a foggy idea of what that might be for, but I don’t have a clear concept of it and wouldn’t know when to use one and which one to use on my own. But since I was mostly Frankensteining other sample projects together, I didn’t mind. (I should note that in-progress versions of this used the serial communication and console over the USB cable for all kinds of testing, and that was both simple and really awesome. )
Anyway, the rest pretty much speaks for itself:
Goofy demo video: