• De-clicking the keybed

    Tim Trzepacz02/04/2017 at 12:34 0 comments

    So, in the last project video, you could definitely hear the keys clicking when I played it.
    When I looked at other keybeds, I noticed that they used stick-on felt on some surfaces to reduce that sound. I searched around and found sheets of the stuff at JoAnn Fabrics for about $2.50. I'm sure one can do better on price, but it isn't worth the time to find out for the prototype.

    I cut the felt on my paper cutter for nice straight, clean edges.

    Before I took the whole bloody thing apart again, I checked the length against the keyboard.

    I put felt on the bottom of the spacer / keystop lips so that the hooks on the bottom of the keys would not make a noise as they rose.

    And then another strip under the slot where the hooks go, so that they wouldn't make a sound if the hooks actually contacted the bottom wood.

    Finally, I put a felt piece under the keys themselves, which is probably the loudest actual point of contact.

    I'd love to have a video of how quiet it now is here for you, but I found some other problems (middle "C" not working) so the whole thing has been disassembled on my desk again. But, for a brief, shining moment, it was quiet!

    Edit: Ok, I fixed it! All of the keys now work. Still some key noise on key up... evidently the felt I put there wasn't enough?
    Meh. Here is a video.

  • Quick Demo Video

    Tim Trzepacz02/04/2017 at 12:24 0 comments

    I got the keybed mostly working, so I thought I'd make a little video.

    A lot of stuff is secretly broken in this video. The SD card is not reading, so it can't load the configuration or patch files, which means I'm trapped on the default patch, and none of the knobs do anything. The low "E" key is not working, nor is the high "C" key, although that is because I am using an old PCB from when I was still expecting a 24 key keybed.

    In this video, you can kinda hear the keys clicking as they are slapped down. I have a solution for that in the next project log!

  • Teensy Audio Engine Changes

    Tim Trzepacz01/30/2017 at 22:16 0 comments

    I had a question from Paul Stoffregen, creator of the Teensy series and most of the other components of this project, and I realized that I never talked about the changes I made to his audio engine. I answered in a comment, but realized it would be a good project log, so here you go!

    Paul Stoffregen wrote:

    I'm curious what you've done with the audio library improvements. Are they published as open source? Anything I should merge back into the library?

    Tim Trzepacz wrote

    Great to hear from you Paul!

    It wasn't so much "improvements" as "bypass most of it". Ultimately, I just needed a way to bang precalculated words as directly to the D/A on the Teensy audio board as possible. After a lot of puzzling about, I found the part that does that and rather messily replaced it with the final stage of my synth engine.

    Since my synth engine is integrated with it, I can't share that part, but I can give the details on what I did.

    The part that I modified was AudioOutputI2S::isr in output_i2s.cpp . I actually made my own version in "buffer_output_i2s.cpp" called "BufferOutputI2S", so as not to disturb the actual library code. Essentially, I made a new component for the Teensy Audio Library.

    I ripped out everything after it sets up "dest" and just dropped my calculation loop right in there, writing the results directly to the buffer at "dest". I skip all of the stuff with blockL, blockR, offsetL, offsetR, "AudioStream::release", etc.
    I end up with a loop that looks like this:

    for( int j=0; j<AUDIO_BLOCK_SAMPLES/2; j++){
        //Calculate all the things
        *dest++=(int16_t) left_channel;
        *dest++=(int16_t) right_channel;

    Originally I did this because I was having some trouble with the libraries that I originally attributed to my code not being fast enough when using the libraries, but later determined was due to an error in how my code was calling the Teensy Audio Library. Still, having done this, I *am* saving a few cycles, so I decided to stick with it.

    I'm still running a lot of the Teensy Audio Library setup just to make sure my stuff gets called, although I'm not sure how much of it I still need.

    The whole thing is going to undergo a pretty heavy rewrite when I move it to Teensy 3.6. I'm planning to make the modulation routings much more flexible, and possibly support output through the built-in D/A either in addition to, or instead of the Teensy audio board. The original version of this was written for the Arduino, and now that I have a lot more power at my disposal, I can re-examine many of my assumptions.

    Thanks for making great hardware for me to work with, Paul! Your efforts have made all of this possible!

  • Test Unit 3

    Tim Trzepacz12/08/2016 at 21:36 0 comments

    I have been busy and negligent in writing up my progress, but I wanted to show that I did finish the third test box, so here are some glamour shots of it. It looks pretty, but the internals are pretty hacky. Keyboard is still kinda not worky, but I'm making progress when I have time to work on it. I'll be doing more in the new year!

  • Investigating injection molding

    Tim Trzepacz10/05/2016 at 09:39 0 comments

      During the last month-and-a-half of my residency at the Supplyframe Design Lab, I didn't write many updates to my Hackaday.io page because I was actually working hard on the project and didn't have time for much else. So I am now going back in time and reconstructing events for your edification.

      I always knew that I'd have to find some way to produce the keyboards, but this project is too small to send out to some company for injection molding. Molds seem to be $6-10k each, and I've got at least 10 plastic parts! So, I'm hoping to find a DIY solution. Fortunately, fellow Design Lab resident Bruce Dominguez is working on a project that is almost entirely about injection molding, so perhaps I can ride on his coat tails a bit.

      We had a conference call with a fellow who is knowledgeable about injection molding, and learned some things.

      1. A "small" job is 5000 units.
      2. Mold making is expensive (we knew that)
      3. Aluminum molds are a thing that exists! While tool steel is preferred, aluminum molds can be used for small jobs. And since a "small" job is 5000 units, that seems reasonable for us.
      4. There is a thing called a Morgan Press that is a more affordable injection molding machine. There is an even more affordable one from Medium Machinery. There is even an attachment for the Tormach CNC mill, but that is perpetually out of stock.

      Now, the design lab does have a Tormach CNC milling machine that we could use to make molds, so the idea of DIY injection molding is a distinct possibility!

      There is also the possibility of making molds for resin casting as an alternative. I could make nice prints using the fancy Objet printer in the lab and then make molds from those to resin cast. I have questions about the finish and quality of that type of material, and not really any time to research it, so it will have to wait until I leave the lab.

      After that call, Dan tried to convince the bosses at Supplyframe to get us an injection molding machine for the Design Lab, but it was declined. But my eternal cry is "I know a guy!" and indeed, I knew of two places that had some sort of injection molding machine that was possibly available for our use. One is well known to me, MAGlab in Pomona has had a machine for years that they never had running.

      Also, Hexlab in Northridge has an even bigger, more elaborate machine.

      I brought Bruce over to MAGlab, and we took measurements and rubbings of the holes for attaching material to the MAGlab machine. It turns out that Trent from MAGlab actually used to work at a company running that machine and had a wealth of information for us on injection molding. I'm very optimistic about eventually getting his machine running and making parts on it! Bruce thinks it will take a long time to get it to work.

      So I went to HexLab and talked to Mike about their machine. Well, I tried to.

      What I got, instead of a look at the machine and a tracing of their fixturing, was a detailed analysis of my business plan for the NanoEgg synthesizer, a critique of my production ideas, my pricing, pretty much everything. He suggested to me that I could have everything made in China for far less than I anticipated, and his company would be willing to consult for a very reasonable rate...

      In other words, I got a sales pitch and then got booted out the door with some prices for "further consultation".

      I dunno, didn't sound right to me. If somebody wants my business, I don't pay them for the sales pitch. They can make and present a plan to me with estimates and "not-to-exceed" prices. Maybe he is right on all of the things he said (or maybe not?), but it isn't a very good sales pitch to tell the customer that his product is doomed to fail, unless this is some kind of scare tactic?

      The whole thing made me feel really depressed for a couple of days, but it caused me to think more about my company and what I am trying to do. I know the...

    Read more »

  • NanoEgg Prototype 2 Box Complete

    Tim Trzepacz09/15/2016 at 23:46 0 comments

    I've had lots of adventures in constructing the 2nd prototype of the NanoEgg synthesizer box, but I've been too busy working to write them up. I'll be sure to backtrack and cover those later, but for now, here are some glamour shots of the 2nd Prototype!

    Next revision will have straighter keys, I promise!

    Currently has screws sticking out of the bottom. That may change, eventually.

    Side View

    Rear view.

    The rotopod in the back rotates!

    More to come!

  • Keyboard model recovered, more test prints

    Tim Trzepacz08/20/2016 at 23:15 0 comments

    So, with a lot of help from the kind folks at Autodesk, the keyboard model was finally recovered in a way that allows it to be edited again. Yay!

    More test prints were made.

    We tried a set of keys on Bruce's Make-It Pro. He is a whiz at 3d printing and has his machines impeccably tuned, so those prints came out a bit better than the others. This is hot off the press, so it still has a lot of sprue, but compared to the ones from the Rostock Max V2, it is very clean. This one looks like it is made of spiders!
    After many experiments with using cookies and various jigs to print the black keys in two parts, I decided to print the keys right side up with support material. Here it is used from the bottom to show the support structure that Bruce was able to set up. I think he was using Cura for that, although we did play with Simplify 3d a bit for that.

    Here is an earlier print on the Rostock Max V2, using Matter Control to generate the G-Code. The support material is a lot more solid....
    When the 3d printed objects come off the press, they are very messy, and I have to work at them with a knife to remove all the excess plastic (aka sprue) to make a smooth-ish object.

    Back to the print from Bruce's machine, I accidentally broke a key off in the process of trying to remove the support material, so I had to glue it back together. It turns out that superglue is actually the best thing for PLA plastic!

    The keyboard was designed with small screw holes inside so that the white key and black key parts could just be screwed together. No more messing around with 3d printed cookies...

    The keys from Bruce's printer were a tiny bit shorter than the other printer for no apparent reason.

    I also did some experiments to see if the finish could be improved. With ABS plastic, one can smooth the finish by placing the model in a acetone vapor bath. Acetone is in fingernail polish remover, so is reasonably safe to work with. With PLA, the same thing can be accomplished with Tetrahydrofuran, but since I didn't have any of that, I had a different idea. Since the models are formed by heating plastic to a melting point of about 210 degrees F, I thought that by treating the model with heat, I could melt just the outside a little bit and make it smooth.

    While heating can make it a little bit smooth, it also causes the model to deform quite a bit!

    I had a full keyboard done in the wrong size, so I tried that with the heat treatment. As you can see, the keys bent quite a bit, long before the surface finish had any noticeable change.So, maybe not heat treatment...

  • Still Fighting Autodesk Fusion 360

    Tim Trzepacz08/16/2016 at 19:49 0 comments

    Parametric modeling has so very much promise. Change a single value and your whole model updates perfectly! What's not to love!


    So it is unfortunate that none of the software I've been able to try works reliably. I'm still fighting with Autodesk Fusion 360, and while it is nice in many ways, it seems to be bad at recalculating all of the dependencies in a heavily parametric model. So bad that it will crash on a fairly regular basis. When it isn't crashing, it is deforming my model in strange ways every time I try to update a parameter. I can do a lot of rework to get one parameter to work, and then the next one still breaks the model very reliably.

    The only real advice I have to offer is to avoid trying to use constraints to calculate your sketches. By all means, use constraints like vertical/horizontal, coincident, perpendicular, and parallel. But avoid using "equal" on a long chain of items to get the spacing right, or midpoint. Instead, use "Parameters" to calculate the position using your own math, and just add a dimension to attach that value.

    Be aware that "Offset" will use the value of a parameter, but not actually refer to it until you click on the dimension for the offset and add the parameter again.

    The only way to have a sketch refer to something on a sketch or another body is to do a projection. The latest update seems to do this automatically, but it still is the same thing. Use these sparingly, especially when projecting edges from bodies, as I've noticed troubles with them not updating. It is better to project from another sketch than from an edge on a body.

    Constraints applied to a projected line do not seem to propagate backwards through the history chain, which can be very handy in forcing it to update correctly. You can make layers of sketches, each fairly simple, that proceed from the projected output of the previous layer. Again, less use of projection is generally better, but this is one place that it might help you get around the terribleness of the recalculation engine.

    Also, test your Parameters by changing them often and making sure the sketches and model respond as expected. It is a lot easier to fix the constraints as you do them than have to walk back through the history and try to change things after the whole model is done. Easier, and less prone to crash.

    I have learned all of these things, and yet I still keep making the mistake of trusting the software to work. I am a fool.

  • Autodesk Fusion 360: The Honeymoon is Over

    Tim Trzepacz08/12/2016 at 21:34 0 comments
  • New Keyboard Test

    Tim Trzepacz08/11/2016 at 01:57 0 comments

    So, I made a test print of the new keyboard model I made in Autodesk Fusion 360 the other day. In case you didn't read the last post, it looked kinda like this:

    It took a few tries to get a reasonable 3d model out of the Rostock printers. It didn't like some text I had placed on the bottom of a few small parts, and I had set the resolution fairly high, so the extruder would sometimes clip the model and move bits around. 3d printing kinda sucks.

    But after a couple of tries I had to leave the office, so I just let it go, and it came up with passable prints in the morning!

    There were some strange artifacts, tho.

    Some sort of "ghost wind"?

    As always, I made separate models for white keys and black keys. The black keys had to be split into two parts because there needs to be a flat surface somewhere for 3d printing, so there is a top and bottom for each black key. I also added some parts to act as "cookies" or joiners to hold the two halves together. I had hoped for a friction fit, but it did not quite turn out that way, so I had to glue them.

    The white keys could be printed as a single solid.

    I added some cookies to hold the black and white key sections together too.

    And I wrapped the whole thing in rubber bands to keep tension while the glue dried.

    Already, I've found a number of things to fix, so chances are this print won't actually end up in a prototype, but it does help to check the scale of things.

    Speaking of which., I was tired of having so much trouble with not having a good throw on the keys, I decided to disassemble a stack of toy keyboards and take down some metrics. Hopefully this helps me make something that it actually playable.

    More to come!