You have stumbled onto the very dorky story of the hardware, software, and sweat which is going into the world's nerdiest sampler.

All up in here----->

Last Updated: Wed Apr 15 10:49:53 CDT 2009

Mon Jul 6 21:58:08 CDT 2009

Happy Birthday America!
Wait -- no: Happy Birtday WTPA!
It's a little bogus to use the above fuzzy-wuzzy pictures, but given the current state of fireworks in my neighborhood and the celebratory announcement of the NEW FIRMWARE, I feel justified in using hazy party pics. The above was actually a surprise party (peep the cake!) that happened in May to celebrate the WTPA launch here in Chicago; why my friends decided to start beef between me and Dre I'll never know.

So anyway, we'll pretend it's a birthday party for the NEW FIRMWARE! As of today the version 2 firmware is now the most current, and will ship with all WTPAs ordered.

Changes From Rev1 To Rev2 Firmware:

The current firmware is now posted on the site (the old version of the source code is also included in the firmware download, and you're welcome to compile and use that if you want to be retro for some weird reason). Those of you who already have WTPAs can update to the new firmware using any old avr programmer with a 6-pin ISP connector. I like the Atmel STK500, but I'd be remiss in not mentioning the fine programmers available for cheap at Adafruit Industries who pretty much have this whole kit game on lock.

Information on how to update your firmware is available in lots of AVR-specific places on the net:

In other news, Narrat1ve has not one but THREE new products in the pipe. One smaller than WTPA, one bigger, and one A LOT bigger. And no, one of them is not a "real website". I'm excited. Stay tuned.

Sat Jun 6 17:16:41 CDT 2009

It is with a sigh of relief that I can announce that the Russian-Winter-like Narrat1ve shipping backlog is OVER!
I have something in the neighborhood of 50 packages waiting to get picked up as of Monday morning, meaning our poor comrades overseas are now caught up with my cheeseburger'd nationals as far as shipping goes. Better still, I've gotten all the forms, legalities, phylacteries, and ephemera to make sure this never happens again. On a related note, I will be expecting roughly 48 new forum applicants in 6 to 10 days :-)

Furthermore (and excitingly) I am beginning to run low on WTPAs! The original pressing is close to 70% gone! In all likelihood I will reprint them again, but being an inveterate tinkerer there will be some changes. If anybody has any ideas about things they'd like to see incorporated into the new version, feel free to holler.
Most excitingly, this means I can now get back to some guilt-free nerding out on NEW designs... I'll keep you posted.
Xoxoxo, TMB

Tue May 19 12:07:46 CDT 2009

So lately I've gotten called back into the top-secret toy-prototype world a lot and have not gotten as much research done for Narrat1ve as I might have hoped to. However, I have tweaked my new video synth about as far as it can go with the current hardware, and got a chance to show it off at the Midwest Experimental Electronics Showcase last Saturday (that link will probably not be about MEES forever). It looks considerably more badass than it did when I last showed it in New York, although it is still far from ideal. I've gotten a lot of what I'll call "trippiness in the Horizontal range" and now know how and why all of that happens, how color encoding works, how interlacing and sync work, and what audio looks like coded directly into RGB color information. In general I feel pretty confident about the essentially obsolete technology of analog video :-) I'm excited about plowing through the next revision as soon as I get some time. It should be a lot more badass, and include some frequency multiplication, waveshaping, and the ability to incorporate external video.

I also met some nice folks named Arturo and Sarah whose company likely knows a whole lot more about said osolete video than me, and it turned out that Arturo used to work on the Sandin IP which was among the first artsy fartsy video synths ever made (along with Stephen Beck and Nam June Paik's stuff) right here in Chicago! Historical Context W00t!

In WTPA news, shipping shipping shipping. The videos and pics from people who've successfully built the thing are starting to come in, and I should get them up soon.

Tue May 19 20:32:31 CDT 2009
Whoa. I just found this Linear Technology App Note which is blowing my mind. Any of you interested in analog video should cop that *ish.
Xo, TB

Thu May 7 14:30:48 CDT 2009

So I've been bringing the word to the street pretty hard lately. I just rolled back from a really great talk at Machine Project in LA (see above), and the last two weekends before that I've been in New York pimping some kind of technology. Landing in Chicago it turns out that both CDM and Hackaday were cool enough to talk about WTPA (thanks!) and suddenly I'm (even more) behind in shipping. Since I got back I've updated the shopping cart so it's now possible to order WTPA from outside the USA, I've updated the Assembly Manual to account for some FAQs, and I've written the Operator's Manual which includes how to rock out, MIDI implementation, and general arcana.

In general, selling kits is fun, but it sure does take time. I can't wait until I've got all this logistical mess under control and can go back to working on my new video synth. I've learned a lot about tape guns this week; less about back porches.

Tue Apr 28 22:16:15 CDT 2009

So WTPA is no Wii Fit Circa Christmas 2008 or anything, but it's been nice to see the orders come in. I have been admittedly slow and horrible about moving them out the door, but am getting better. Above you can see part of the reason at least -- a WTPA based video synthesizer I made for a sloppy rocker dude video art party in Brooklyn last weekend. The party was fun, the synth was cool, and most importantly I'm excited to get started on the next one. In line with my new-found forefather vs cherry tree honesty style I will say a couple things: I have decided I must do this sort of thing mostly to prove stuff to myself about electronics nerdery. Like, I get a kick out of challenging myself to build some esoteric fruitcakery like this in all of four days, or must because lord knows I don't make money on it, and not very many people see it, and those people that do mostly don't get it.
So that leaves ego and da love of da game as motivations. And learning, but I think that is tied up pretty tightly with the first two.

Something else I will say: I set myself on fire making that thing -->

For reals. It was a first. It sucked. Word to the wise: acrylic takes a lot more heat to bend than ABS. And apparently a lot more heat in general than a hoodie.
Also, for those of you who do like to mess with plastics, if you haven't gotten a set of the fancypants acrylic drillbits with the special rake and pointy ends, they will change your life. You might cry. I almost did, but stopped when I realized I was in need of extiguishing.

Finally, for those of you who wrote me looking for videos of WTPA, they're in the "Lejendary Adventures-esque jaunt through time and space in no particularly succinct fashion" section above along with all the other longwinded esoterica about this project.

Oh, and in case you're in the hood and curious I'm talking about sampling theory and how to design cool stuff in general in LA this Sunday at the fine and noble Machine Project. It should be fun (and free) and I'll have kits for sale.

Tue Apr 21 00:51:13 CDT 2009

So it finally happened. WTPA is out! I officially dropped the marble at Bent 2009, which was a real blast. To come clean and be totally honest, I actually released WTPA on the Thursday before BENT to the list of faithful WTPA-heads who have been blowing up my inbox for the last few months. You know who you are, and you rule. To continue to be honest, I have already gotten word back from the first (AFAICT) nerd to not only complete, but MOD WTPA -- Mssr Pete Edwards of Casperelectronics. So get crackin.

There's still plenty of stuff I need to deliver on this site: The operation manual and MIDI implementation chart, the Theory of Operation Manual, schematics and source. They'll be here this week, at least some of them. I also, more physically, have to get all the orders I've gotten out the door. One piece of math I neglected to do: if I'm flying along stuffing parts bags at the rate of one every 5 minutes, and do not pee, sleep, or flip the record, it will take 17 straight hours to stuff 200 bags. Given that it took like One Million hours to get the program and hardware done for WTPA, this isn't all that significant, but man, is it boring. Then again, I suppose it's no more boring than waiting on a whinging prima donna emedded systems nerd who's too busy making a new prototype analog video synth extention for WTPA to get off his duff and SHIP ME MY ISH.


Fri Apr 17 00:46:53 CDT 2009

Yep, I'm on a jet plane with a bag of art-nerd-bitmagick.
It's finally happening. Come Back Monday for Business Hours!
In the meantime, some reading:

WTPA Component Guide v1.01
WTPA Assembly Guide v1.01


Wed Apr 15 10:49:53 CDT 2009

Excuse me, but All I'd Like to Know...

Wed Apr 15 00:00:12 CDT 2009

No pretty pictures today. The hex for WTPA is up to >10kB, which is quite possibly the most code I've ever crammed onto an 8-bit part. The feature list is full and then some, and the ISRs are beginning to suffer speed wise. When the sampler is cranking out multitimbral stuff at high rates you can hear the audio bog down, which I guess is ideologically in line with the "crusty first" aesthetic, but it bugs the anal programmer in me. In the waning hours before Bent this means going through all the pristine, general ISRs and doing what I can to save cycles, avoid divides, replace conditional branches with jump tables, etc etc. This usually means the code gets ugly, at least for me. Tomorrow (this morning, I guess) the proper board Rev comes in -- that means I've got to make a new WTPA and take pretty pictures, and write the manual. Lots of stuff to do before Saturday...

Oh, and did I mention the limited edition video-synthesis daughter board I'm making for WTPA? Come see it in New York at Secret Project Robot on the 25th.

Thu Apr 9 23:26:38 CDT 2009

Oh Snap! There's the goofy silkscreen I promised last time. But don't worry, it gets better :-)
So I've done my best with the above Still-Life-With-Nerd collage to try and convey, in a meaningful visual way, all the cool stuff that's happened with WTPA since last week. One really perceptually-difficult-to-convey-yet-great thing is that I've put my proper rent-paying clients on hold for the time being to make room for this project full time. It's scary, but it feels really good! And as rebellion goes I suppose it beats buying a Camaro.

Outside of that, the BOARDS ARE HERE! Sort of.
The bad news is, I found a copper bug (my fault) pretty much right away. With as many hardware revisions as I've done this was really embarrassing. It led to a natural dilemma -- it was a small bug that could be easily fixed with an exacto knife and some jumper wires, so should I you pass that fix off to you, the kit builder, or should I pony up for an ENTIRE NEW SET of boards so that they'd be perfect?
I debated, then reordered them. This also allowed me to fix a half a dozen little cosmetic and noise-floor / routing things that I wasn't happy with anyway. I wasn't nuts about dropping another grand on boards, but I'd be less happy knowing that the final kits were going out half-assed. You can't pay too much for pride :-)

Silver Lining: This now allows me to sell bare boards, which a ton of people have asked for. Originally I hadn't planned to do this, but now I can sell the flawed boards (for cheap) with an errata sheet to those among you who are exceptional broke asses and not mess up the math and parts counts for the complete kits. It's a small consolation, but it's better than making them drink coasters. Cosmetically, the boards are flawless! I got a not-quite-perfect board from PCBCart before this (for another job) and let them hear about it, and they bent over backwards to make this one dead-on.
Taiwan Alpha also came through -- the pots (all 2000 of them) showed up from China early and perfect.

Then there was Dorkbot which was a blast. Above you can see me in front of a page of C code (looks like the ISR) apparently casting some kind of spell.
People geeked out, I gave away some free PCBs, I laughed, I cried, it was better than Cats.
Finally, social business done, it was back to the Fortress of Solitude with some espresso and a dream. Two great things have come out of this so far:

WTPA now has a banked sample system! This means that instead of holding a loop, WTPA can hold an arbitrary number of loops (theoretically, anyway) and can do anything it is able to do to any or all of those loops independently and all at the same time. Practically speaking, I've pinned that "arbitrary" number at 2 :-). There was a lot that went into this! A huge portion of the code had to be re-written -- basically all the audio and memory handling parts. The audio system now grabs data from the ADC and passes it to however many "virtual samplers" for recording, and then sums together whatever output they have before putting it back onto the DAC. Better still, the different banks can use different clock sources! Meaning that you can be triggering events with midi and controlling pitch arbitrarily one one bank, and twiddling knobs and generally being a caveman on the other, with a totally independent samples. By far the hardest part though was having to wrap my head around implementing a memory manager (ever think you'd have to write malloc? Me neither) which was quite challenging. To be honest, I copped out a little, and it is because of this that WTPA uses only two banks for now.
All this cool functionality also has a totally new (and much more intuitive, I think) menu system. Finally, I'm in the midst of getting rid of "modality" in WTPA so that there's no such thing as "MIDI mode" and "Manual Mode". Anything you can do with WTPA you can always just do, without mucking around in a menu.

I crunched the money numbers! As of today, I know exactly how much all this crap has cost me, and therefore how much these magic beans will cost YOU, dear reader. I'm not spoiling the surprise, but I will say that although I have definitely screwed up some estimates in my time, I was pleasantly surprised with how this one came out. And you should be too.

I'll keep you all posted on the nerdy revelations better for this last week. Don't expect total coherence or an Infinite Jest command of grammar, but I got you. Oh, and I think I'm going to LA to talk about WTPA at the end of the month, so if you're on the West Coast come say hi! More details on that to come.

Tue Mar 31 23:29:57 CDT 2009

These last days of March have been decidedly un-lamb-like. Last week I got in the test boards for the final WTPA and yesterday night I assembled them. They look clean. Nice and small. I did some preliminary testing, but decided to played hookey tonight and bend up this Magick Tuxedo out of ABS. She looks good in black, right?

WTPA makes her first pre-release public debut at Dorkbot Chicago, the first DB meeting in fact since Deadtech closed its doors. I'm honored and excited and also nervous. The version seen above is a barebones copy of the final version I ordered so I could keep coding with the latest hardware while I was waiting for the real-deal-Hollyfields to come from China, but those crafty fabricators at PCBcart are fast! They've already shipped! Expect this cursed soldermask-drought to end and pictures of something with a goofy silkscreen soon. Unfortunately (???) March has seen an upswing in this whole "Business" thing which I feel obligated to pursue in order to "keep organic peanut butter on the table", and I'm not as far along on the new audio functions as I'd like. But I'm obligated to have at least some cool new effect (and not just smartly registered MIDI jacks) to show off at the dorkbot meeting, so I'm thinking I'll work out this granular synthesis thing I sketched out a couple weeks ago. Stay tuned for clips....

xoxoxo, TMB

Mon Mar 23 22:19:23 CDT 2009

Free Technical Advice: When the Fluke suggests you change its battery, change its battery.

Better: I ordered the REAL BOARDS from China today! I'll spare you some more pretty gerber files, even though the latest ones are by far the most lovely. Summarily filed under the "breaking some eggs" part of the process. That having been said, my people at PCBCart have so far surprised and pleased me with being fast and friendly. I am now Significantly Monetarily Committed to Not Screwing This Up. I also ordered another set of bare test boards from Advanced Circuits to continue to mess with while I wait for the Mona Lisas to show up. In other news, my tube amp is on the fritz again. Why I thought tube gear was romantic and cool at some point in my life is beyond me. I swear I'm this close to replacing the chassis bolts with thumbscrews, or better yet replacing the 6L6s with MOSFETs.

Finally, for those of you who haven't noticed already, there's a little link above which gives the details about WTPA in a nutshell as the uninitiated had a really hard time figuring out what all this gibberish was about.

Wed Mar 18 18:09:08 CDT 2009

So I got the test PCBs Monday, bare as the day they were born. The last couple days I've been going through all the circuits and checking the hardware for problems, bugs, things to optimize, and stuff that would otherwise be Bad To Deal With in a run of 200 units. The good news: The third rev of boards does more or less all the stuff it is supposed to, and has most of the performance improvements I'd expected. However, nothing is perfect.

First, let me give you young nerds a piece of advice. Become rich. Then use your dough to buy prototype boards that have a soldermask. Good lord. You will save yourself hours in debugging stupid soldering problems, and gray hair in debugging other problems which you may at first erroneously attribute to solder bridges. Bare PCBs do offer an advantage in that they're easy to probe wherever you need to, and all that exposed tin makes it easy to solder fixes in, but in general they will make you crazy at least once with some weird connection that you didn't mean to make. That was the first round of problems I had to solve.

With those out of the way came the first real, serious, problem: The VCO. The VCO got incorporated in the last board rev and I dutifully wanked on it a few times and then set it aside to deal with other problems. This in retrospect was quite stupid, because if I had paid more attention I could've saved myself a lot of time and a little false advertising. It turns out that the VCO design I used (ripped wholesale, with a few changes, from Horowitz and Hill p. 240, who I'm pretty sure in turn ripped it wholesale-with-changes from the LM324 datasheet) is good in many regards. It is single supply and simple. It requires only opamps and a fairly generic transistor or FET. The problem came in trying to tune the monster over a wide range. Though the TLV2474 opamps I'm using are pretty good at RRIO, they aren't perfect. All the drama occurred when the CV was some small number of millivolts from the bottom rail. The '2474s don't really want to drive that low, so I made the little Merce Cunningham looking mess of dancing resistors (pictured above) to help pull them there. Simple enough, but a little ugly. Approaching REALLY closer to the rail (say within 10mV or less) the VCO stops responding in anything approaching a linear fashion and gets jittery and tends to drop out. Normally I wouldn't care and would just bias the CVs above 10mV, but that ends up being a significant amount of tuning in the low-sample rate range. Which is silly. _NO_ op amp is that good, really, and no good design should try and expect one to be assuming it isn't colliding particles or something. With a marathon all-nighter / all-dayer the best performance I could get from the VCO was a not-so-great 2kHz to 16kHz, a tuning range of 8-to-1. This sucks. In retrospect the humble relaxation oscillator of the first WTPA did something like 60-to-1.

I fiddled around trying to get another VCO design breadboarded for a little while, but all the good ones I know use an OTA. I've seen some designs with analog switches and of course plenty with specialized VCO ICs, but I had three op amp sections and a dream. The final decision was to drop the VCO, return to the traditional relaxation oscillator, and reduce the opamp from a quad to a dual. Even Saving You Money(tm) in the process.

For those of you crying "Noooo! How will I make it talk to my Modular?" first let me say -- samplers usually don't talk to modular synthesizers, you're spoilt. Second, let me say, because I love you, and because that's a weird and cool idea, I've worked out a way to make the sampler's oscillator clock sync up to audio inputs -- so you're losing a VCO, but you're gaining a sync! This means that now you can synchronize your samples to your vocal line, synth line, guitar, or any signal in the audio frequency range. This should work pretty reliably -- I'll know soon. I can no longer say "The only sampler with a VCO" but I think the new effect will probably be cooler anyway.

Everything else: I found a hardware bug in the in-circuit serial programming section related to changing around the data bus. I fixed with some pullup resistors. After that I made sure the switches and LEDs worked with the new bus structure. It's technically still possible to PWM the LEDs and maybe I'll do that sometime before release, but it's low on the list. Next I quantified the bus-turnaround time related to the bus routing changes, and they're almost invisible. It took some NOPs in the ISR, but I bet I can optimize those out later. I tested the MIDI output -- so far WTPA has only received midi messages. But today it took charge, such as it can. Finally, I took a look at the audio path. This was important and enlightening. Using a function generator and a fancypants benchtop meter set to take dB readings, I figured out the f3dB points for all the different audio paths through the system. They were pretty good -- the first reading showed the audio range of the sampler's pass-through and DAC paths to be about 14Hz-356kHz (pictured above). Not bad! Still, as a rule of thumb (also ganked from H&H) I try and position f3dB points 10 times greater or less than the frequency of interest to avoid phase shifts in the audio range. You know what they say about phase shifts, right? "They make for weak ass west coast bass, not that Miami shit." That's what I heard them say. Anyway, I got the range for those paths to be more like 2.8Hz to 370kHz with a few changes. In the overdub path I managed to actually DC couple some of the connections which means that there should be no loss in that path relative to the rest of the sampler. Giving it the listen test, it sounds Really Good. I'm happy with the audio quality. It's nice and quiet where it should be, with good frequency response, leaving it free to Expose Da Crust in all the important parts.

Finally, there was one more valid thing I found. In an effort to keep impedances (and costs) low I settled on two values of potentiometer for the final thing -- a 500k audio taper for the input and output amp gain controls and 1k linear pots for everything else. In all the audio controls on the board, the 1k pots have a resistor from the wiper to ground to approximate a logarithmic curve (and make your life silky smooth). This means that the total resistance in some places in circuit ends up being pretty darn low. Although this does keep noise pickup low and the top f3dB point high, it also ends up working out the driving opamps something fierce. My hot rail-to-rail output doesn't swing nearly as rail-to-rail as it used to. This of course means less usable bits in our sample. I can fix this a little by chaning the tapering resistors on the pots, but the right thing to do would be to bump the pots up to 10k and scale their related circuits. Easy enough, if I didn't have a boatload of pots on the way from China already. The ENOB isn't terrible, but it could be a little better. Hey, what's a design if there isn't room for revision?

Lastly, before I leave the soapbox, I'd like to take this opportunity to show this off as yet another example of an old TMB truism: Analog Be Harder Than Digital. Not better, but harder, and perhaps by association more noble and romantic. While I was frantically breadboarding crappy VCOs, I came across this app note in which that continuous font of inspiration, Jim Williams, designs like 10 analog circuits which are complicated enough that they make my head spin even after reading his explanations, and he figures them out for shits in his garage or something, while on vacation. There's a badass VCO in there which tests my understanding, and whose makeup is also (or consequently?) not quite right for WTPA.

Oh, and it also made me always remember to refer to VCOs as "Voltage to Frequency Converters" again. Saying VCO makes you sound like Jean-Michel Jarre; saying VFC makes you sound like a curmudgeon with a white beard and a bunch of Teflon caps and bandgaps. Who would you rather be?

Hello, big bag of Chinese boards? Perhaps you would like to come over?
Xoxoxo, TMB

Thu Mar 12 21:20:57 CDT 2009

God, it's been so long I hardly know what to say. But I believe the big banner above says the most important thing :-)

It is with excitement and not a little trepidation that I am announcing WTPA's booting out of workbench land and into the hard, cold world. That's right: The wait is almost over -- the real deal kits WILL BE out for the Bent Festival in New York this April! Not my usual, waffly "soon". But on a real, fixed, finite date! That's exactly one year since the proto came out, and would be embarrassingly slow if the latest WTPA wasn't head and shoulders better than its forefather. But. Lest you think I've been idle, know that since my last post I have done several things:

The first run of kits will number 0-199. This figure made the most sense considering all the number crunching I did, at least for now. The retail price will be announced on or around the release date, but for the curious it will be nestled snugly somewhere between Mssrs Grant and Benjamin. There may, at some point, be another distributor besides Narrat1ve for this kit, but they will not likely be onboard by the release date. The kit will come BYO-enclosure, although I will probably sell some parts on the site to make it easier for those of you who want a little of the guesswork taken out. The website will (has to, basically) get beautified to accomodate info for the people building the kit, and not so much my gibbering. Finally, on (or right around) the release date, you'll be able to get ahold of the source, schematics, instructional videos, manual, and theory of operation docs all from right here.

The hot mess you see above is the test pressing of the final WTPA boards (it's a picture of the gerber files, complements of GEDA's Gerbv, which (sadly) unlike most of GEDA, totally rules). The real thing gets here Monday for requisite twiddling. This is the third and last (hopefully) major hardware revision WTPA will go through. The second WTPA totally slayed the first in audio quality, latency, functionality and pretty much everything else. This last rev cleans up the rough spots that were still left on the second rev, and adds a sprinkle of small new features. Mostly, however, it is the physically smallest and most simplified of the WTPAs to come out yet and is geared to make the kit easier to build and cheaper to sell. There is very little fat left on this design in my opinion.

Technically, WTPA has returned to single-MCU design. Shortly after I made the two-MCU rev I learned about a device called an I/O expander, which is cheaper, simpler, and more robust than a goofy UART link with a second MCU. Shortly after beginning to do battle with the I/O expander I did some much needed forehead-smacking and figured out how to rearrange the databus and replace the whole nasty expander / MCU / mess / with another parallel latch. Which of course was the Right Answer. Pie-simple, cheap, effective. This WTPA also has its two analog subsystems (the input/output amps and the VCO / CV section) isolated with separate ground planes and ground returns to the main regulator. The last WTPA was not noisy, but I expect this one to be even better. The goofy emitter follower in the front end has been removed. This should result in better audio response, more headroom, and fewer parts. The jitter generator has been moved into the realm of software. This does a lot for us. Most importantly, it makes the jitter work right (and sound cooler). It also introduces less HF noise onto the board, and further reduces the parts count. Finally it allows the jitter to be controlled by MIDI! This is obviously good for playability reasons, but it's "orthoganally good" as well because the jitter clock was the only effect left exclusively in the analog domain. Other than the gains, everything on WTPA is now controllable from both the knobs and switches AND the MIDI in. Finally, all this hardware juggling allowed me to free up a few extra pins which I assigned to a spare UART / SPI module. I have no immediate plans to expand WTPA, but if I ever did, this would be a great way to do it (say, to talk to other instruments or to add an SD card interface or the like).

This all means that the hardware is basically done changing. It also means I'm getting down to the wire on software business, too. WTPA will not go gently into the aforementioned good night -- expect to see LOTS of updates here for the next month while I pull all-nighters getting this monster ready for her catwalk. There will be some ugly fixes, a huge rush of features, sample banks, scope traces, the whole nine. Exciting stuff!

And hey, thanks so much for sticking around this long. Xoxoxo.

Thu Jan 8 11:11:17 CST 2009

Online in 2k9, my ducks.

So sometimes, contrary to common blogline belief there are times when I'm quite busy even when I'm not posting. This New Year / Holiday period was one of them. There are some big advances on the WTPA front:

First, all circuits and modes are totally functional. The resampling problem I was having had two roots. First (and lesser of the two) the input impedance of the AVR's A/D converter is actually a lot lower than I ever realized. In the datasheet Atmel recommends that you don't drive the ADC with anything less than a 10k impedance but I actually found that an input resistance as small as 470 Ohms still produced a noticeably smaller waveform at the ADC input pin than driving the pin directly from the output of an opamp. This was easy (though annoying) to fix -- it requires another op-amp section and a redesign of the summing amp into the resampling ADC input. The only unfortunate thing about this is that it will drive the cost of the final device up for you, dear customer, and this kit is already, as they say in France, tres cher. Still, I made a decision a long time ago that when I design things for me (as opposed to the toy world) I will always err on the side of badassery rather than cost, because I can. And because everybody wants to be a baller, right?

The other (more significant) problem was a Read-Modify-Write issue in the audio ISR. OMGWTFBBQ, was it hard to find! When is a NOP not just a NOP? When it lets you sync an output port you've just written to with its input latch. Weird, weird bugs from that one, to be sure. And fixing bugs in my code is, like, totally free!

In other important news I bothered to scope out the speed of the audio IRQs and compare them to the old WTPA. As I had hoped, there was mondo improvement on that front:

This means that we could now sample at 44kHz (CD quality -- remember CDs?) without breaking a sweat if we wanted to! Of course, I'm not sure how much good that would do us since the ADC on the AVR is already "not-so-accurate" at the paltry 24kHz I've got it set to now. But hey, the headroom is there if you all want to get your overclock on. Practically this means that the processor now actually has some time to get some work done other than audio, which is good.

So the final hardware related issue in this animal is the jitter generator. The way it was originally designed the jitter generator used a PRBS white noise source to mess up the clock signal, and it worked! Sort of. It became apparent that when the "jitter" control was at maximum, the knee frequency of the filter on the white noise became the dominant interrupt frequency. In English: The fastest noise waveform actually determined the clock frequency in a totally deterministic sounding way. Since this frequency was different than the clock frequency, you would hear a "jump" in sample rates when adjusting the jitter. This sucked. Right now I'm trying to get the jitter to mess up clocks of all frequencies equally well without inserting a dominant frequency of its own. Meaning a jittered-up 600Hz clock will still have a frequency of 600Hz, it will simply have a totally random duty cycle. (You know, like peak-to-peak displacement, like Wikipedia says under "Jitter"). After fiddling around with another analog solution (pictured above) and then with some circuit sketches using AND gates and JK flipflops I realized that the best way to do this (everybody all together now) was IN SOFTWARE. I can't decide if it's sad or not that it always seems to be that way. Anyhoo, once I'm done with that it's time for new boards. Oh, and my birthday is coming up in a little less than a week. Send me naked pictures, or LOLCATs or something. Xoxoxox.

Mon Dec 22 13:22:51 CST 2008

As a matter of fact that IS an Akai MPK49 inquiring where the party is.

In brief: all the MIDI business is working great, although I've run into some annoying problems resampling (what guitar players might call overdubbing) which are both hard- and firmware related. I'm late to haul my freight back to the mid-midwest for the holidays as of now, but you can see the hardware fix I did in the form of that gnarly looking perfboard. That part at least works great. Maybe I'll nail the firmware issues over some wassail, Kwanzaa candles, or something. Happy Holidays!

Tue Dec 16 01:27:31 CST 2008


Today is momentous. It samples; from the shoulders of giants it does. I even made a snarled up little video of the first experiment in the act. Scandinavians vs. USA in the bass-less wastelands of Camcorder Flats. Or perhaps holding hands: Glasnost or whatever the equivalent is with stank cheese, progressive design, and socialized medicine.

I tell you, I am a sentimental mess like Lawrence Sterne never made. Honestly, when the first phrase of music kicked out of this thing I almost peed. And then I had a beer or two, which explains the tone here. However, I will stand by this: The New Version Sounds Great Or At Least Slays The Shit Out Of The Old One. I think this mostly has to do with the noise floor not gumming up the quiet parts and _maybe_ some improved amp design. It's not perfect by any stretch: I still haven't hammered out anything in the way of new features, and it isn't benchmarked yet (I'm very curious to see how much time it spends in the audio ISR) but it IS bumpin, and this test has been great fun. The jitter generator works and sounds weird in an exciting way BUT is tweaky and needs to be tuned in both the analog and firmware domains. I think it's a keeper, though, just from the initial listening. As I had hoped the noise floor is pretty good! It's not annoying, or really even noticeable! I can still see some gnarls on the scope, though, and will hunt them to their holes and Make Reckoning. Like "Reckoning" was "Clean" or "All". AND there's more than enough sample time to hang yourself with the new RAM. Booyah. Next: MIDI, and ferreting out any remaining hardware bugs and revving the board to the FINAL VERSION!

Wed Dec 10 11:25:28 CST 2008

Yesterday was a good day for sampler technology!

Three really important things got done; two are improvements on the old sampler:

First: the serial link between the MCUs is now totally robust and fast. As I suspected the real problem with the serial before was the internal RC oscillator on the helper MCU. For now it's been replaced with a 7.3728MHz crystal, but Digikey just rolled up with some 18.432MHz crystals this morning which I'll be using instead, I think (these particular and seemingly-weird frequencies are exact integer multiples of common UART frequencies, and allow 0 baud rate error). There were a couple other little forehead-smacking moments where I got bit by casting errors and other general programming bugs but they weren't really bad once the UART worked. Like for instance -- if you declare a variable "theByte" as an unsigned char, set it equal to ~'p', and then later check for equality with ~'p', it comes back false. Know why? Know how to fix it? I do now. :-)

Second: It makes audio! Since I already put a picture of a noble sawtooth wave up a million years ago and since the old sampler definitely did this just fine, this is less exciting. BUT it does mean a couple things. The new DAC works, and the analog sections (mostly) work and all the volume pots are the right way around. The VCO works, and the jitter generator -- Oh boy does it work! All these need tweaking but they're all rocking solid.

Third: I spent a long long time fiddling with the PCB and tracking down noise demons. This, I am happy to say, was a big success and a _huge_ improvement on the old sampler! Pictured above are some example waveforms. On the left is a picture of the output of the old sampler with the preamp gain, through level, DAC level, and master volume all the way up. You probably can't read the V/div knob on the scope, but this waveform is unmistakably clock noise which has capacitively coupled into the audio path and has been amplified such that it is ~220mV at the output. Yikes! This is really bad. Those of you who've heard the original WTPA know that this whine is one of its not-so-good-akshully characteristics. The photo on the right is a noise picture of the new sampler after a little screwing around by me. Under full-gain, worst-case noise conditions, the new sampler has approximately 4mV of clock feedthrough. This is 34.8dB of improvement!

There are a couple noise sources in the WTPA family. One source of LF noise is the LEDs pulling current spikes from the supply when they turn on. This is at its worst when running from a not-so-low impedance supply (like a 9v battery or worse an STK500 through the ISP header) and did manage to find its way into the audio but it wasn't terrible. The best fix for it was to improve filtering at the op-amp reference terminals (the VDD/2 level at the non-inverting terminal of a summing amp, say) since the noise that got there got amplified by the circuit's gain. This helped for sure. By far the worst noise source is clock bleedthrough, although the new design also shows bleedthrough from the white-noise generator. Improving this was a little trickier. A couple things made a big difference. Varying the gain on the preamp as opposed to keeping the gain fixed (and high) and attenuating its input level was one. Re-doing the design with better ground and signal routing mattered A LOT, although I still had to rip up a trace with an exacto -- one poorly-thought out connection added nearly 100mV to the output noise here. Filtering the analog references better helped deal with this noise a little, too. Finally, I think a ground plane (or two) are in order for the final hardware revision. I also think associating the VCO and Jitter Generator with the digital supply lines (or at least isolating them from the quiet amplifier analog supply) would be a really good idea. I might even use a choke input to the quiet analog supply. We'll see. Either way, this statistic is already A LOT better than it was, and I'm excited.
Next: Sampling / RAM / throughput rate test, and more fun analog tweaking.

Sat Dec 6 03:13:32 CST 2008

The lone and level sands stretch far away from this nasty Nas, I'm afraid:

Not that you can tell from gazing on this benighted silicon Ozymandias, but no pretty waveforms will happen tonight. It's not a total loss; there's some badassery that came through and TON of code, but since I said I'd post today here's the breakdown:

The body of the code is done for both MCUs, at least at first blush, and the ISRs are now based on the parallel interfaces. The LEDs look crazy hot. Messy little resistors and whatnot are dutifully appearing on the board. The square waves are almost square. The bad news is that all the old timers who I didn't pay attention to were right -- UART communication on internal RC oscillators is dodgy at best. The real (and unforseen) challenge of the last 16 hours has been massaging the serial link between the two MCUs enough that it works. It limps along now but it sucks. My studied conclusion is that the second MCU really needs its own crystal, and it might as well be at a UART-friendly frequency. I probably have some laying around somewhere, and will dig them (and exacto blades) out this weekend.

Other fun bugs and riders of the nitpick train include:
The AVR toolchain doesn't seem to be very excited about the 48p/88p/168p MCUs, and although you can fool it, doing so raises the "bad idea" error flag. Further, the STK500 seems to only want to program the old-ass m168s I dug out to rectify this problem ONE TIME, before getting totally weird. This is a good one: These parts are socketed in the STK, mind, and the fuse bits remain totally unchanged through this whole process. You put code onto the part just fine and boom, it becomes unprogrammable. I did this THREE times. Furthermore, reading the Vtarg on the STK500 shows 6+ Volts, and the device times out when you try to communicate with it. Say what? I started shopping for a new STK, until further fiddling revealed you can a.) physically pull the RESET pin to ground on the socketed target device using an alligator clip (or stream of foul language) which allows it program just fine OR you can socket and connect to another WORKING part, and move the Vtarg down to 3v, whereupon the old "broken" part works just fine again. Gremlin central. Writing the code was, thankfully, pretty straightforward and I discovered a kickass feature in avr-libc: ISR_ALIASOF() -- this reduced the accumulated ISR code to half the size -- thus doubling its beauty. Finally, a point of consideration: Naming an electonic device on your website "Where's The Party At" makes for no small amount of schoolgirlish giggling when looking at your keyword referrals in Google Analytics. In keeping, I have decided to name my next piece "Hot Hipster Tang For Altbros".

Thu Dec 4 11:40:34 CST 2008

OK, OK dusty and neglected friends. For you, today: Twinkles!

What does this mean? Well, several things. The most important of which is that the new version 0.95 PCBs are up and executing code. There are 2 MCUs on the new boards that communicate via a UART. Mostly I did this because I wanted to keep this sampler "kit-friendly" (meaning big DIP parts) and ran out of pins on the main MCU to do all the stuff I wanted to do. What you're seeing right now is the smaller helper MCU (here an Atmega168, but it'll end up a 48p or 88p depending on how much I shave down the code) making the lights go. This is his reason for being, in addition to reading the control pot / CV in, the switches, and generating white noise for the clock jitter generator circuit. More importantly, he's pretty much done. Besides freeing up the main MCU for more important stuff, this extra MCU allows a lot more foofy lighting effects -- I've coded in a bunch of little strobe effects and fades and chases that ought to help keep your sampling experience trippy.

More importantly this update means that I've got a bigass hole in my freelance work right now and I'm pretty sure I can use it to nail the code/hardware debugging for WTPA once and (almost) for all. There'll have to be another PCB rev (I've found hardware bugs on this one already) but the code should be pretty much exactly portable to the next one. A couple days ago I set a deadline of, er, tomorrow to get this revision up, sampling, and tested. The code for the main chip is already well underway, and I think this is realistic. Stay tuned...

Thu Nov 6 15:45:42 CST 2008

The nerd-biz has been thick since my last post -- Chicago-based rocketry's own Ignignokt ate peroxide in New Mexico, I finished making a bunch of art pieces / circuits for my man Cory (who is putting them in a show this month at Team Gallery which opens on November 13th -- those of you in New York should definitely crash it), I made some fancy LED illumination for a furniture firm here in Chicago, and we have a new President who I'm told has a Twitter account. As of now I'm currently playing hooky on an Embedded radio project which is due soon for another buddy of mine. Sadly this means that I've been a big slacker w/r/t WTPA, but I did manage to assemble the HOT NEW circuit:

In this photo if you look closely you can see that the board is up and running, drawing a reasonable amount of current and turning on the power light. It's back to a pricey and involved Hello World, but I'm excited to get the code up to speed soon. Truth be told I'm about ready to flip out and just finish this project since it's been all up in my free time for half a year now, and I can't wait to get on to some NEW electronic instrument design. I just got this great book and it is both inspiring and incredibly useful -- it makes me remember why I fell in love with the humble emitter follower all those centuries ago :-)

PS: Here are some random hard-earned nuggets of electronic design arcana I discovered during that artsy Video Game Controller-Controller job:

Fri Oct 17 22:16:59 CDT 2008

There is some spiritual sense of wholeness, some cosmic teleology that makes me feel thoughtful about posting pictures of a circuit called "Where's The Party At" when it's Friday night. Like if somehow all the drunk, attractive people on Milwaukee Avenue could see the current in these traces they wouldn't go to a 4am bar, because they would already have been there. Or something. I can't decide whether this parable is supposed to be more like the two young fish meeting the old fish in the river, or the young bull and the old bull seeing all the cows from the top of the mountain. Some kind of middling-stinky animals appreciating time-and-reality type business is what I suppose I'm going for here.

*Ahem* So:

The next revision of PCBs are in! You're looking at the Version 0.95 WTPA "barebones" boards. One thing I really like about Advanced Circuits is those sharp (and handy) fluorescent notepads they give you when you order a board. It tickles my hope for nerd-success: I used to really have to hoard them -- not so long ago it took Very Serious Consideration before ripping off one of those bright, rare leaves to write "Call Mom" or something. Now I can pretty much paper my walls with them. Feels good. Before you know it I'll have a cummerbund!

I can already see it's going to be one of those nights, so down to business: These boards are necessary because they're the last rev before I order the hundreds of PCBs and many thou of parts I'll need for the real production release. Hopefully these guys are pretty close to perfect. Parts are already on their way from Digikey and Mouser and should be here next week. I've got an OS to re-write in the meantime -- I've been learning a lot about the GNU Linker for some other projects and as a result my MCU code is getting a lot more pretty looking, and a little more clear (to me anyway) w/r/t how GCC's optimizer thinks about it. Practically speaking I doubt I'll have the OS re-written in the next couple weeks: I've been nuts making a Playstation version of Beat The Champ (also #8 here) which needs to be done in short order and, and just got a fancy interior design related project which of course ought to be done like yesterday, too. Of course the X-Prize Lunar Lander Challenge is next weekend and I plan to get good and drunk and watch my friends at TrueZer0 put a whoopin' on the guy that wrote Doom. Finally, my crappy electronic music project is playing (using WTPA even) next Friday at the Hideout with my old buddies in Parts and Labor.

Wed Oct 8 19:34:03 CDT 2008

Yo! A lot has happened since the last time I posted here. For one I've organized this site more logically, with the most recent *ish at the top. But the most important thing is this:

I'm done with the new WTPA boards! Done, at least with the schematics and layouts. I'm currently printing up (another) prototype run of bare PCBs to work out any (who's placing bets?) hardware bugs before I make the *BIG ORDER*. There's a lot to say about the new designs, but, like the Roc Boys: Speech: First Of All I'd Like To Thank My Connects--

After Bent in the spring, four brave souls bought beta versions of WTPAs and --Lordy-- all four really built them! Their contributions and comments on the process were invaluable to this latest version. MAKE Magazine and its denizens have hooked me up with a lot over the last year and most recently the opportunity to talk about WTPA at American Maker at the Museum of Science and Industry here in Chicago. That in turn led to some writeups on Create Digital Music and Hackaday and the resulting diarrhea-esque inbox explosion did a lot towards cattle-prodding me into getting this project rolling along better. It also felt really good. So, big propers to all of them, and all y'all who wrote to me with suggestions, requests, and kind words. Special thanks to Richard How for sending me a properly compressed version of the demo video that I listed below.

Now, sincere acts of ass-licking aside, let's talk electronics:

Those of you who are dorks can probably tell that there are some differences between the latest boards and the first run. In that poetic way that HTML lets us do so well, here is a Canonical List of changes and features:

As well as another heartrendingly beautiful, autumn-sunset-like list of FAQs, gathered from emails and the like:

Thu Sep 4 09:43:27 CDT 2008

OK, so here's a thoroughly goofy video I made of the sampler at work -- it's for an new version of a book by Nic Collins on Hardware Hacking! But I figured the right thing to do was to share it with you, my people. The 2 people who come to this website. That I don't date. It's big -- 93MB. I'm accepting applications for video editors. Here she is. [Wed Oct 8 19:20:03 CDT 2008 -- I've changed this to the smaller file that RKH sent me. Thanks!]

Arguably more importantly, I've been laying out the version 1.0 boards and they're going to be a million times better. Better analog section, 16 times the RAM, lower noise floor, harder better faster stronger etc etc. The four brave beta testers from the springtime got their kits built and gave me an earful and the new kits have taken out a bunch of useless crap and added a bunch of (hopefully) kickass features. Time will tell...

Thu Aug 7 16:54:52 CDT 2008

OK, OK -- So the real versions aren't done yet, but I just coded all the MIDI functions into WTPA and when I turned it on I wet myself a little. It was that cool. You can make it do tons of stuff you'd never be able to do just by wanking on the buttons and knobs: You can totally sequence it, you can totally play it from a MIDI keyboard, you can pitch bend everything around zero, you can apply all the effects by hitting drum pads -- what Yamaha said in 1982 is absolutely true -- MIDI is the way of the future!

AND -- and I quit my job a couple weeks ago so I could work on stuff like this. And I have, see? So buy my stuff; keep me from going broke. When I get it together enough to release it, that is :-)

Sun May 11 15:49:56 CDT 2008

WTF? Why isn't Todd done the new boards yet?!? Oh, that's right, he's burnt out from a month of all nighters and is hanging out reading Conan novels and eating bon-bons. Not only did I kick out some nasty robot combine harvesters with my buddy Rob, but I shook down WTPA for the first time recording some crusty hott lixx on the upcoming Parts and Labor album in Milwaukee last weekend. We'll see how that hot mess turns out. I'm still expecting the Rev 1 samplers to be out in EARLY JUNE. Available here and probably elsewhere...

Tue Apr 29 02:35:58 CDT 2008

Heavens! Back in Chicago, rode hard, put up wet. Bent 2008 (which ruled) and a certain amount of hanging with hipster rocker dudes (get up late, sweaty) resulted in some pretty killer new patches for my lil' blood. In the meantime, big propers to the four brave souls who bought up the 0.9 kits! Below, for their benefit, is a really big and slow to load (and unapologetically un-artsy) photo of my kit which shows off where all the components go because my silkscreen layers in the PCB files are still a little crunked up. It's late, and I just built new linkages for a small robot combine harvester. Really.

Fri Apr 25 19:14:03 CDT 2008

Brooklyn, 10 hours of sleep later. Debugging on an old friend's coffee table. Brooklyn is good for a lot of things. You can get any number of tasty and erudite coffee drinks really easily, and the girls are cute (I think -- they dress cool enough that I think you sometimes think they are even when they actually aren't). Say, however, you coded a resampling routine and realized your gain staging in the analog section was all types of foobar, and you really needed a.) a carbon-film resistor kit b.) your Tek c.) even a soldering iron. What would you do? I'll tell you what. You'd fix it in software and probably go to a party or eat a falafel, and maybe worry that you weren't dressed well enough.

Kits for tomorrow. Extra op-amps! Value Added!

Thu Apr 24 03:17:15 CDT 2008

Those waveforms are snowflakes. It, ladies and gentlemen, samples. It is a sampler. It sounds every bit as crusty as I had hoped.

Wed Apr 23 02:34:58 CDT 2008

Remind me to tell you a story about integer promotion and casting in C one of these nights before bedtime. Until then this yarn and photo about an R2R DAC singing its heart out while lots of little shift registers keep time will have to call the sheep. We blink, we parse, we sawtooth. Now we need the gift of speech. We're not altogether sure our little LM324 is very linear, but what else is new. Off to dream of assignment operators.

Tue Apr 22 01:35:01 CDT 2008

Up, no shorts, and blinking! Blinking wrong, but blinking. The wrenching comparisons to the teenage bildungsroman are just going to keep rolling out, it seems. Reason enough to retire. Goodnight, Young Werther.

Tue Apr 22 00:47:53 CDT 2008

Assembled, tweaked, new shoes. Ready for her first cotillion.

Mon Apr 21 17:57:17 CDT 2008

The parts are all in, like jolly old saint nick:

Better yet, the boards are here a day early!

I'm at 1200+ lines of C and counting. I've got lots of things to poke, bend, illuminate, invoke, distrust, regulate, and otherwise get jiggy with.

It's like being 15 at the mall again!

More hypercolor, please...

[ED NOTE: Wed Oct 8 17:10:47 CDT 2008 -- this was the old picture which headed up this page and is a schematic of the first beta WTPAs I made for Bent 2008. This would've been put up around Friday, April 18th, which is the date of the first comments in the markup.]

Oh, and where are my manners? I never gave you my contact info. Best place to reach me until I get off my duff and make a real website is [AT] gmail [like "Warren" who sang "Regulate"] d0t c0m. That thing that looks like an "L" in my last name is actually a numeral one.

Xoxoxoxo, TMB.