TIL: in #kicad, clicking on a component in eeschema will navigate to and select the corresponding component in pcbnew
#TIL the direction of a pcbnew (KiCAD) selection changes its behaviour. LtoR only selects completely surrounded parts, RtoL selects partially selected parts.
I can’t find this feature documented anywhere, but the selection colours are different so I assume it’s supposed to be like this.
EDIT: apparently it’s something of a de-facto UI standard in CAD apps, probably started by AutoCAD.
It just took me about 30 mins to figure it out, so here’s how to install python plugins in KiCad 5.0 on a Mac.
KICAD_SCRIPTING_flags are set to ON.
import pcbnew; print pcbnew.PLUGIN_DIRECTORIES_SEARCHand you’ll see a list of folders which pcbnew will search for plugins
Cookin’ up a new gurdy preamp with even less noise than before. The secret ingredient? The pot itself! Turns out EM shielding is every bit as important as all those grumpy people on guitar forums spend their spare time telling each other.
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!
Augmented Hurdy Gurdy Experiments
As I can’t currently commit to building a new series of gurdies due to my living situation, I’ve been keeping myself busy developing the MIDI system for my instruments, to develop new extended, augmented playing techniques.
This video is the first demonstration of some hybrid electronic-acoustic experiments using the prototype MIDI system installed on my hurdy gurdy.
0:22 Technique: Pitch-shifting Polyphony
Gurdy MIDI and Audio → Apogee ONE → Macbook running a puredata patch
Monophonic acoustic gurdy signal is pitch-shifted down in real time to play chords and harmonies. Chords and intervals on the keyboard can also be used to pitch-shift the trompette signal (0:55) or the drones. Inspired by an idea from Sébastien Tron.
1:18 Technique: Expressive MIDI Controller
Hurdy Gurdy MIDI → DIY Hybrid Poly Synth based off Mutable Instruments Ambika
The keyboard and wheel sensors send MIDI note, expression and polyphonic aftertouch messages to a polyphonic synthesizer. In this case a split keyboard effect is used to play two sounds.
1:36 Technique: Layered Acoustic and Electronic Sound
Hurdy Gurdy Acoustic audio, Gurdy MIDI → DIY Hybrid Poly Synth based off Mutable Instruments Ambika
1:36 The acoustic string plays a melody, the bottom half of the keyboard controls a synthesizer with a long release for subtle held chords
2:08 Using trompette technique can send MIDI messages, used here to play synthesized percussion on an Ambika voice assigned to MIDI channel 10, whilst the keyboard plays chords.
2:30 Acoustic trompette and melody string sound layered over subtle polyphonic synthesized chords
Some tips for building a Mutable Instruments Ambika, based on my experiences:
Based on the part numbers in the BOM, suppliers will sometimes pick a CD4050 chip. These are not fast enough and will cause SD card access to fail, it’s necessary to use a 74HC4050.
If you’re using a 74HC4050 and SD card access is still failing, check whether communication with all of the voicecards works. I had a lot of issues where failing or badly connected voicecards would interfere with the serial lines and prevent SD card access from working.
The 3.3V regulator, DACs and all the MCUs can be obtained free from the Microchip samples service if you’re willing to do it over a few months in limited quantities of two part numbers at a time.
My Pololu USB AVR Programmer wasn’t able to provide enough power whilst programming, so I had to power the boards for programming. For the voicecards, having both 6 pin headers connected interfered with programming because of data being sent to the voicecards over the serial lines. I ended up powering up the motherboard, placing a stackable connector in the power/audio socket voicecard socket and plugging the voicecard into that for flashing, so that it’s powered but the serial lines are disconnected.
I programmed my Ambika with the YAM firmware to get those smooth sounding PolyBlep square and saw waves. I built the firmware myself, downloading CrossPack 2010-01-15 which provides avr-gcc 4.3.3, the correct version for compiling most old MI AVR firmwares.
I would recommend buying higher quality pots and encoder with metal shafts rather than the flimsy plastic ones in the BOMs. There are so few on the Ambika that the added expense is only a few euros in total. An Ambika is such a large time and financial investment that there’s really no reason to use flimsy, wobbly plastic pots.
I got my PCBs from the Pusherman group-buy, they‘re very cheap and work fine.
I built an Ambika to join my family of Walnut Mutables!
I messed up the LED holes in this one, but the laser engraved front panel graphics and text came out really well. The back panel is acrylic so I can admire my electronics handiwork and Emilie’s amazing design any time.
I took the opportunity to give my Shruthi a knob upgrade, too.
Anyone trying to buy stackable ("Arduino-style") headers from eBay, "elec_mall2012" is the only Chinese seller I've come across who actually shipped stackable headers. All the others shipped normal ones.
The other sellers were always very good about refunds, but shipping takes so long that it's still a waste of time. Would recommend buying from elec_mall2012, or just shelling out the extra few euros to buy the headers from a US or EU component dealer.