progress report – january 2011

I’ve been thinking pretty deeply about the beatseqr project and came to the conclusion that I could no longer operate under the vendor-lock-in PCB CAD software I was using. So I went ahead and bought cadsoft Eagle. I had several reasons to do it.

  • I feel like I gave the free and open source gEDA toolchain a solid attempt, and just couldn’t keep up with the technical requirements. I don’t disagree with the general philosophy behind it, and I definitely can see how useful it would be to distribute open schematics and board layouts. I’m not 100% sure where I stand on the topic yet. I think I’d be comfortable distributing schematics, but the really… really… really hard work comes from the layout. So I’m still thinking about it. Beatseqr will always be an open source firmware project — no question about it there. The controller is “JUST” a collection of interface devices. So the magic really comes from what you do with the firmware. I know I’m certainly not the worlds best sequencer firmware designer, so if you feel like you have a good idea for how to use beatseqr and can actually write some code to do it, you should be able to do that. So, to circle back to “why not gEDA” … it was too much for my puny brain to comprehend. There are quite a few features I liked in gEDA, but the iteration cycle was too hard for me. And I’m really too stupid to not have an autorouter.
  • I wanted more freedom to choose which board house to use to get my designs fabricated. The previous software I was using.. was.. actually pretty nice considering it was quote-unquote FREE. It was free in so far that I wasn’t charged to use it, but I was forced to use the company that made the software as my fabrication house for my PCB designs. I may still use them, or maybe I won’t. I wanted the freedom to make a choice.
  • I have a kit-built CNC router and I’ve been really wanting to try PCB trace isolation routing. What the heck is that, you may be asking… well here’s a photo of the first and second trial runs of a concept circuit I designed recently.
    Trace isolation routing #1 and #2
    The basic concept is to have a bare copper clad board held down onto a flat surface, and then have a PCB design… um… inverse-engraved into the fiberglass board. Meaning that the outlines of the traces on a circuit are cut out, leaving isolated areas of copper left on the board, which in effect is what PCB is. This is just a physical removal of unneeded metal, versus a chemical etching of the board do get to the same result.

    The overall reason to have this capability is to be able to test out conceptual designs in a small scale before including them in a main beatseqr circuit board design. The board above is the TLC5940, which is a chip that can manage the brightness of up to 16 LEDs. I have two-times-sixteen LEDs on the beatseqr board, so you can probably understand why I’d want to try out a circuit with this chip. If I can get it to work in line with the beatseqr firmware, I could offload some of the work to these chips, and use the remaining pins for other tasks.

    So why Eagle? Because they have user-submitted scripts you can run that let you take a design and have it spit out instructions that a CNC router can understand called gcode. And that lets me design a circuit and then cut it into “copper clad” for testing and debugging before accepting it into the main beatseqr project.

  • Let’s face it: lots of people use Eagle. I would much *much* rather not have to have spent what I did to get the capability I have, but relative to the other cad packages in the space, it’s not that expensive. And it seems to be used by many many people in the arduino-using community. That’s who my audience is if they’re interested in learning from my work on this project. So it made a certain amount of sense to go with it versus any other package. Plus it runs on the mac, which is not a deal-breaker for me if software doesn’t, but I appreciate having a big chunk of my work flow on my platform of choice. In fact, all of the CNC work flow is on windows, including some special tools to optimize the tool paths of what gets generated out eagle. So it doesn’t bother me, mac or windows…

So that’s why eagle. I really wish there were some interim pricing steps between the free version and the pro version. But there isn’t. So, I had to bite the bullet. And now the bullet is bitten and I’m moving forward on the new version of the circuit boards.

And that’s pretty much the progress report. I’m learning eagle.

Midi Channel Select and Octave Adjust

Here’s a video of me playing around with the new features I wrote into the beatseqr v4 firmware. You can now change the midi channel per voice from a new mode on the faders, and you can also now offset the octave of the midi note numbers from a new knob mode. I’m still working on the interface on the LCD to make it clear what’s going on when you’re jumping around modes but as soon as it’s ready, I’ll make the source available.

Oh, and then I also have an iPad with Korg iMS-20 running. 🙂

Steve Cooley beatseqr arduino based drum sequencer plus reason & iPad + iMS-20 from stevecooley on Vimeo.

midi channel select and octave adjust

wooo, well. I didn’t get around to the treadmill tonight or to recording a 3rd performance. I *DID* implement two kinda nice new features.

1. midi channel select fader mode. After doing these two solo perfs at home, I realized that if I had another kong loaded up and listening on midi channel 16, I could use faders to flip from channel 1 to channel 16 with confidence (all the way up, all the way down) … and that might help me transition from one preset to another. That would maybe free my other instrument up on the other dj mixer channel from *having* to have a kick drum in it.

2. octave adjust knob mode… this basically modifies the midi note number by a factor of 12 as you change it. I couldn’t figure out how to get max/msp to change all of the midi note numbers as I sent the new osc message to steppa… so it just modifies the value when the fader changes the midi note number. So, the knob range is octave adjust -3 to +5 … that covers everything… I probably over complicated it like this, but… just trying to keep things working as-is and then using the working state as the point of reference… (we start at midi note number 36. so any octave adjust is going to be relative to 36 being the “start”… so hence -3 octaves to get to midi note number 1… )

The user interface on the LCD is wiggity weird, but the functionality is pretty fun. I’m starting to wonder if we should have some way to turn off features you never use if you like. it’s starting to turn into a lot of paging…

So yeah, steppa, roxor, and the arduino firmware all need updating to get at this new stuff… uploads coming soon. I feel like I want to think about the interface a bit more before I unleash this on you.