Author: derrick

  • DJBB Midi Loopster

    DJBB Midi Loopster

    If you want to stay up to date on when I start selling kits of this, and other things related to this project, sign up for the mailing list here

    Background

    I created the DJBB Arcade Button MIDI Drumpad as an experiment on how to use a Raspberry Pi Pico microcontroller as a Midi controller.

    It worked pretty well but I honestly don’t like the super loud arcade buttons so I never really used it. I wanted an excuse to try designing my first PCB, so I decided to go for a version two of my original design except with these changes:

    • Use Cherry style key switches for the buttons (quieter but still feel nice. Also smaller)
    • Uses a custom PCB for max compactness and ease of build
    • Switch out controls for a function button and encoder
    • Software updates and optimization

    Features

    • 16 Cherry MX style key switches for the pads, with one additional for the function button
    • A nice encoder with a button for navigation
    • Change midi banks
    • Set velocity for each pad via encoder
    • encoder modeexperimental way to send notes by twisting encoder
    • looper mode simple but fun and easy to use midi looper with overdub.
    • Scale Select – filter down to midi notes in a scale

    Demo

    Components

    1 x DJBB Midi Loopster PCB

    1 x Raspberry Pi Pico or Pico W With Headers**djt depends on wifi stuff

    1 x SSD1306 OLED Screen

    5 x 10k Resistors

    1 x 10 Ohm Resistor

    1 x 33 Ohm Resistor

    17 x Cherry MX Style key switches

    1 x Rotary Encoder

    1 x 3.5mm Audio Jack

    3 x 10nF Capacitors

    1 x 3D printed case (optional)

    1 x 3D printed screen case (optional)

    1 x 4 pin female large headers for screen (optional)

    17 x Cherry style key switches (technically optional… but you want em)

    BOM in csv format can be found in this GitHub repo (along with the code for this project)

    The PCB

    Designing my first circuit in KiCad was surprisingly easy. This DigiKey tutorial series was extremely helpful.

    Here is the schematic

    Device Schematic

    Here is the Layout

    PCB Layout of DJBB Midi Drumpad

    Assembly

    PCBs came in looking good. Time to assemble.

    all required parts and the PCB

    all optional but recommended parts. 3D printed screen case, and overall case.

    !! IMPORTANT – MAKE SURE TO DO THIS FIRST !!

    First, solder in the two key switches opposite of the Pico on the PCB (the Function key and Pad 1 keys – upper left).

    If you do this AFTER you solder in the Pico, you won’t be able to get to the contacts on the back of the board. I fried a Pico trying to jamming a soldering iron up in there to try to solder in the switches…

    PCB with 2 switches soldered in on the top left portion of the board. DO THIS FIRST.

    Solder in the resistors and capacitors.

    PCB with resistors and capacitors soldered to the front

    Flip the board over and clip the excess leads.

    Clipping off extra leads on the back

    If your Pico doesn’t have headers, solder those on now. Solder the 2 remaining resistors, the aux jack, and the Pico to the back of the board.

    Back of PCB with resistors, aux jack, and pico soldered

    Solder on the encoder – you may need to bend the two mounting tabs on the encoder if they don’t fit in the PCB holes.

    Now solder on the switches. I found it helpful to just tape them in place, flip the board, and then solder them all in one shot.

    Board with buttons taped in to hold them in place

    Board with all components soldered except for the screen

    We saved the screen for last simply because it’s the most delicate part. Time to put it on. If you are using the 3D printed spacer / protection case, screw the screen and top on in with M2.5 screws.

    Back of screen in its case. The side you see here will be facing the top of the PCB. Note that the long headers attached here are not permanent – these represent the ones soldered into the board in the above step.

    Solder in the large 4 pin female header for the screen. This is optional, but without it, once keycaps are added, the screen sits pretty far below the buttons.

    Front of board with screen headers soldered in

    Here is the whole thing put together with the screen unit assembled. Once you confirm the screen works, put a few drops of CA glue (superglue) where the screen unit meets the PCB to lock it in place. If you ever need to replace the screen, you can simply unscrew the front of the screen unit, remove the screen, and insert a new one into the female headers we soldered to the board.

    Complete DJBB Midi Loopster

    Here is another view of a different unit. This one does not use the screen assembly setup.

    Complete PCB example with no screen case. Screen is soldered directly to the PCB.

    Software

    The software is written in CircuitPython – Adafruit’s version of MicroPython with some nice ease of use upgrades.

    1. Use this guide to configure your Pico
    2. Go to this GitHub Repo and download everything in the “src” folder.
    3. Drag the contents of the src folder to your Pico in Finder / Explorer (to the root directory)
    4. Unplug and then plug in the Pico. The screen should light up.

    Troubleshooting

    • If the Pico isn’t showing up on your computer, make sure your USB cable isn’t power only. if it isn’t, check your soldering.

    Design Decisions

    Use a screen.

    I kinda didn’t want to because it adds to the cost and is kinda fragile. But I also didn’t want an awful user interface, which I think would happen without a screen (with the level of features I wanted, anyway). To combat the fragility problem, I designed a 3d printed spacer <**djt add link here > that solves a few other problems as well. It has a lip to protect the screen, lifts it off the PCB to get it more in line with the other higher components, and can accept a lid, for transport protection. I also designed the screen to be easily replaceable, just in case it cracks or something.

    Use quality parts, where possible.

    I basically got good components unless prohibitively expensive. The PCBs are from JLPCB, but honestly they look great and are literally 5x the price to get USA made :(.

    The screen was another issue. I wanted to use the little SSD1206 screens from familiarity (and cause they use less pins on the pico), but the ones from Aliexpress are like 8x cheaper than the ones sold by Adafruit, etc. I couldn’t find any other suppliers (but please let me know if you know of one). The Adafruit ones looked to me like the same thing as the Chinese ones, with perhaps some quality control on Adafruit’s part. I decided to order a bunch from Aliexpress and do my own quality control. So far so good.

    SO:

    Good: encoder, key switches, resistors, capacitors

    Eh: screen, PCB

    Refresh the screen as little as possible.

    I knew from my last go-around that the screen refreshing eats up a LOT of processing power on the Pico and makes the midi output laggy if done too much.

    The downside is that I can’t do fun little animations or display real time information (what midi note was just played for example). It only updates part of the screen and only when an important setting change happens (changing the menu, etc.).

    Use Cherry-style key switches.

    Last time I used arcade buttons but they were loud as heck. These silver Kailua switches are quiet and feel nice, and are quite affordable. Could have skimped and used Aliexpress for these but I really wanted to like the buttons this time.

    Change navigation from buttons to encoder.

    The old version used little buttons which made menu navigation no fun. The encoder effectively has 3 inputs in one: left, right, or push.

    Make a PCB.

    I have always wanted to but it was intimidating. KiCad was thankfully very intuitive and I was surprised at how relatively easy it was to pick up.

    Make it easy to modify

    I wanted to make this open source, so I want it to be easy to interact with. I chose Circuitpython because:

    1. It has all the Midi and display libraries I need.
    2. It’s still fast enough for MIDI stuff (as compared to C).
    3. It’s easy to get to the code on and off the Pico.

    Enhancement Ideas

    See my list here in GitHub

    Change Log

    Nov 2023

    • Created loopster_settings.json file for easy default config
    • Added performance mode congig option
    • Added looper feature – twist encoder ccw to remove a random loop note
    • Added more scales
  • DIY Dirty Video Mixer

    DIY Dirty Video Mixer

    Demo vid here

    Buy

    Assembly

    • Make sure the goofy faces are facing UP (or else the case won’t fit)

    • You may need to slightly bend the pot legs inwards to fit into the hole. Just a lil though.
    • Switches need at least the center 3 pins soldered. The outer ones are tough due to thermal mass – feel free to skip.
    • Place all parts, flip over, and assemble.
      • I usually do the switches first, then add the RCA jacks, then the pot (shortest to longest)
    • Screw it into the case

    done

    Extra headers are for experimenting if that’s ya jam

  • Designing a Tiny USB MIDI Drumpad

    Designing a Tiny USB MIDI Drumpad

    I wanted to experiment a bit more with getting PCBs assembled, and also wanted to see how small I could make a lil drumpad. I ended up here.

    Features:

    • 16 x Drum Pads w/ RGB LEDs (membrane style keys)
    • Control up to 51 parameters with sliders (3 global, 48 pad-specific – 3 per)
    • CC Mode – Latch buttons to send pad-specific CC messages with sliders
    • PETG membrane keyboard and case

    the completed Mini MIDI Slider 51

    Circuit Design

    Basically it’s just a Raspberry Pi Pico, WS2812 LEDs and some mini faders from Digikey. I had the PCB assembled by JLCPCB and they came out great. The WS2812s are dirt cheap, though they do cost a bit extra in setup fees when ordering. I’m planning to use these a lot more now that I know how easy it is to have these made for a reasonable amount of money.

    Code: https://github.com/derrickthomin/DJBB-Mini-Midi-Slider-51

    Case Design

    I wanted the case to bee minimal, durable and 3D-printable. I chose PETG as the material to use for its durability, relatively good heat resistance (shouldn’t warp in a hot car), best of all – its flexibility. The membrane keypad is only 0.5 mm thick in the button areas – just thick enough to hold up, but thin enough to let the pads flex indepently.

    Demos

  • MicroKORG module mod – cut those trash keys off

    MicroKORG module mod – cut those trash keys off

    My keys have been busted forever, then I saw this post the other day which inspired me to finally hack em’ off. The integrated battery was an excellent idea and had a 20,000 mAh battery that I kinda hate lying around so it was perfect (I use them for lower power stuff and this thing needs a decent current draw to not auto shut off…).

    I also make little DIY midi controllers (featured in a few pics here), and wanted to power them from the same battery, so I spliced in a female USB port and have it accessible from the back panel. And now my MicroKORG can charge my phone if needed as well, I guess?

    The mod wheel I just replaced with a spare twist pot (1k? 10K? I didn’t even measure lol). I 3D printed a lil cap for it.

    With the pitch bend wheel I tried to get clever with a series of switches to enable me to do goofy octave switching. Unfortunately, I never figured the math out right on the resistors, so some of the positions are out of tune. Thankfully if they are all switched up, it’s in tune. I always figured I could just adjust the master tune if I messed it up too bad.

    Front panel is a spare strip of walnut that was miraculously the right width. It’s super glued to just the top part of the synth case so I can still take the back off.

    Procedure

    • Use a screwdriver to disassemble the MicroKORG from the back. Open the case and un plug the cable connecting the halves (power)
    • Unplug the connectors to the keyboard (on the keyboard side). Unplug the mod wheel and pitch wheel. Plug in resistors to bypass them if you don’t wanna do something fancy with them (see this post)
    • Use double sided tape to tape a LiPO battery on the bottom side of the case. Make sure it’s not in the way – you want to be able to close the case at the end.
    • Thread a spare USB C cable through a hole in the ttery compartment and plug it into the charging port of the battery -this will let you charge without taking it all back apart.
    • Get a spare usb cable and cut the end off that doesn’t go into the battery. If you want an extra USB port like me, get a male to female USB cable and cut it in half. Splice the power and ground together of both of the cables, then solder / screw the power and ground into where the original battery terminals were (little PCB on the bottom side of the case).
    • Cut holes into your case for the extra USB port if you have one, and also for a twist pot if you chose to replace the mod wheel with one.
    • Find a way to cover the hole in the front. I used a strip of walnut and super glued it to the top of the case.

    Bottom side of MicroKORG – Inside

    Inside of top of microkorg

    Top of finished MicroKORG module

    USB port added to back – connected to internal battery

    Final module from the front

  • DJBB – The Intelligent Body Tapes

    DJBB – The Intelligent Body Tapes

    Guy talking about moving your body about or something. Nice n clear.

    Get it on Gumroad

  • DJBB – Pack Up Your Gloomies Tapes

    DJBB – Pack Up Your Gloomies Tapes

    Some lady whose life is SO HARD because her son is gay. sheesh.

    Get it on Gumroad

  • DJBB – To Write is To Know Tapes

    DJBB – To Write is To Know Tapes

    Lady administering a writing class, or something of the like

    Get it on Gumroad

  • DJBB – Welcome To the World (for Women) Tapes

    DJBB – Welcome To the World (for Women) Tapes

    A woman talking softly, sometimes with a man overlayed saying the same thing. This one is PRIMO I tell ya.

    Get it on Gumroad

  • DJBB – Be Happy Attitudes Tapes 2

    DJBB – Be Happy Attitudes Tapes 2

    More fun quotes from the be-happy-with-god guy

    Get it on Gumroad