1. Turns out that it’s possible to use cheaply available (~2€ each) 7-pin SPI OLED displays with the magpie modular 8hp microbraids PCBs. A hardware and software modification are required, although as the ATMega is using software SPI it may be possible to work around the hardware modification with further software modifications.

    Please note that I would not recommend building the magpie modular micro braids module! Instead, try one of the newer adaptions (e.g. the one from Antumbra) which uses normal LED displays and have prettier panels. This guide is intended as reference for people who still have one of the old boards lying around and want to get it working without shelling out 20€ or more for a tiny OLED module.

    The seven pin SPI header on the cheap OLEDs I bought maps to the eight pin header of the original Adafruit OLED (and therefore the microbraids PCB) like this:

    CS DC RS MOSI CLK Vin GND
    |    X      X      |        \
    CS RS DC CLK MOSI Vin 3.3v GND

    I cut the relevant traces on the OLED board, scratched away some solder mask and used enamel-insulated wire to connect the traces to their new pins. Then, I installed a 7 pin female header on the braids PCB, and bridged the 3.3v and GND pins, which sounds like a terrible idea, but the board doesn’t make any use of the 3.3v pin, I’m just using it as a convenient way of connecting the OLED GND pin to the braids GND pin.

    If your OLED module has the same layout as mine, it should end up looking something like this:

    The display ends up being in a slightly different place to the original, but five minutes of filing the aluminium panel fixed that. It ended up looking a little bit messy, but the panel (from pusherman, not a magpie modular original) is extremely ugly anyway so it didn’t make much difference. I quickly cut out and filed a 3mm acrylic screen, wedged it in place and secured it with some high-viscoscity superglue.

    After reflowing and flashing both the ATMega and STM, everything was working perfectly, except the display was upside-down. Looking through the Adafruit graphics library led to a simple solution: adding the following line to the init function on line 39 of mbraidsv3.ino:

    display.setRotation(2); // Invert display for use with cheap Aliexpress 7-pin OLED

    After re-flashing the ATMega, everything worked perfectly.

    It was only after I made the hardware modification that I noticed the ATMega is using a software SPI library, with the pin definitions on lines 9-13 of mbraidsv3.ino. It should therefore be possible to achieve exactly the same result by leaving the OLED module unmodified, bridging the 3.3V and GND pins on the 8 pin OLED header on the PCB, and swapping the pin definitions around so they look like this:

    #define OLED_MOSI   10
    #define OLED_CLK   9
    #define OLED_DC    13
    #define OLED_CS    12
    #define OLED_RESET 11

    The display rotation mod will still be necessary, unless your display module is oriented differently. If anyone attempts the software modification please let me know, I’d be curious to know if it works!

  2. Has anybody tried using concentric pots (like this one) on a module to have the control and attenuverter for a parameter in the same place? i.e. the upper knob is the value/offset, and the lower knob would control CV input attenuvertion.

    Generally I prefer having a real knob for control and a trimmer for attenuvertion, but stacking them could save space for “micro” modules.

  3. Software upgrade for the MI Shruthi: Visual Sequencer

    One particularly cool feature of the Shruthi is being able to set the mixer mode to seqmix and have the control values in the step sequencer determine which sound sources are active on each step. The problem with this is (or, was!) that, even with the clever binary-based approach for determining how combinations of sound sources map to hexadecimal (0-15) values, it’s incredibly hard to remember the mappings.

    I spent an hour or so trawling through the synth code, and documentation for the LCD module, before managing to create a version of the software which, when the mixer operator is set to seqmix, replaces the 0-f step sequencer view with a two-line visual step sequencer, where the four lines from bottom to top represent osc2, osc1, sub and noise*

    The controls for the view are exactly the same as before, i.e. pretty unintuitive, but this visualisation of the sequence data makes designing patterns way easier than before.

    Here’s the software, as .hex and .syx for flashing or SYSEX dumping:

    shruthi1-102-b01.zip

    I originally wanted to have this view all on one line, by creating sixteen custom characters, one representing each combination of sound sources by a bar of pixels. Unfortunately, the HD44780 LCD module only supports eight custom characters, and the Shruthi already defines all of them. I got around this by spreading the display over two lines, reducing the number of characters needed to four, and taking advantage of the “=” default character as the “11” character, and the blank space as the “00” character. I then replaced the two decorative custom characters used on the Shruthi splash screen with single bar characters based on the “=” for “01” and “10”. Finally, in the Editor::DisplayStepSequencerPage function in editor.cc, I made a conditional block based on the state of part.patch().osc[0].option (the non-intuitive location of the mixer operator), displaying the two-line visual view if it’s set to OP_PING_PONG_SEQ.

    This is the first of several UI upgrades I plan on making to the Shruthi firmware, depending on how much I can tolerate working on old embedded code in a language I barely know!

    *according to the shruthi manual, osc1 and osc2 should be the other way round, but that’s how it ends up working so I accepted it as it is.

  4. I built a Shruthi XT!

    The circuit boards and panel were group bought with the Pusherman facebook group, I ordered the components from Mouser, and built the case myself out of walnut left over from a dulcimer build.

    I used the BOM from the Shruthi XT build page, with Mouser’s BOM import tool. Generally everything worked fine with a couple of caveats: it auto-detected the wrong encoder (the horizontal mounting version of the same model) so I had to order another one. The MIDI sockets it found were also different, and had a metal spring on the outside which I had to remove in order to get them to fit the case.

    Watch out when soldering the board-to-board connectors! I put them on the wrong way round the first time and had to remove them, which was tedious.

    On my future MI builds I’m going to try using Bourns PTV09 potentiometers instead of the Alps ones on the BOM, as they cost significantly less and should be approximately the same quality.

    I built the SMR4 MkII filter board but am going to upgrade to the 4 Pole Mission as soon as I get the board and components for it (along with boards for an Ambika, and a normal size Shruthi to inherit the SMR4…)

    Overall I’m very impressed with the synth! It sounds great and is a lot of fun to make sounds with, although it’ll take me a little while longer to get to grips with all the features and wavetables.

    If you want to get into DIY synths, but skip past the “circuit which makes bleeping sounds” straight to “professionally usable synthesizer” I’d definitely recommend building a Shruthi.

    Future improvements planned: upgrade to a 4 Pole Mission filter board, make a laser-etched walnut front panel, more UI improvements in the software, maybe a built in battery and USB port for powering MIDI controllers.

  5. A tip for #wacom #tablet owners: If the pen 'click' stops working but the cursor still moves and the buttons still work, try taking the nib out (needlenose pliers), blowing in the hole, tapping on the table and putting the nib back in. Fixed mine! #diy #fix

    A tip for owners: If the pen 'click' stops working but the cursor still moves and the buttons still work, try taking the nib out (needlenose pliers), blowing in the hole, tapping on the table and putting the nib back in. Fixed mine!