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:
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.option (the non-intuitive location of the mixer operator), displaying the two-line visual view if it’s set to
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.
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.
@dymaxion cool! Also a great way to see taxicab geometry in action (e.g. walking for 30 minutes in Salt Lake City). I tried making a similar project a few years ago to visualise how cities distort space-time, not as polished or useful as this one but showed individual tracks which is nice.
Seeing a lot of people talking about Germany in response to #Cville. Unfortunately, DE has it’s own problems with rising “alt” far-right. Saw this in town today:
It’s an election poster for the AfD (“Alternative for Germany”). Roughly translated it says “Burkas? We like Bikinis. Trust yourself, Germany!”. They’re growing in popularity, especially in places like this town, historically with strong (10%) NPD (Nazi) voting base. Their posters are either bullshit like this, or cleverly framed statements about borders, pensions, schools, children, “taking back control” etc.
@w03_ I’m surprised people get so annoyed about pooing in the wild in Iceland, the landscape is so devoid of humus it could benefit from some good healthy biomass, no?
@ztsamudzi although honestly I have no idea in what sort of religious context this dance culture fitted into, I will have to read up on that and try to learn more.
@ztsamudzi there are various pan-european dances found all over the continent, e.g. polka, schottish, waltz, mazur/mazurek/mazurka, polska, slängpolska/polonaise/ländler/steyrer/wickler (modern term), minuet, quadrille, etc. Each dance form typically retains the same basic step everywhere but has regional variants, or is related to dances from different areas, as the dances and music travelled along trade routes. Many fascinating examples exist of tunes or dances which are found in parallel sources in many different areas, which is a nice way of getting rid of nationalists who try to appropriate this stuff for nationalism. A lot of these dances made their way over to America too, and in a lot of cases (IIRC) mixed with black dance+music culture and became the basis for a lot of n. american traditional dances.
Most of these were danced a lot in Europe over the past 300 years but then more or less died out in the 19th century (as the style of music changed and Europe started to import and appropriate e.g. latin dances), before being rediscovered as part of the various folk revivals in the 70s. Now they’re danced casually as “balfolk” or “eurodance”. Not widespread in the mainstream, but not totally obscure either (e.g. google “balfolk”) with widespread events and a more and more progressive pedagogy.
Video: The Poisonous Polonaise (Polonoise No. 19, Wittenberger Apothekenhandschrift, Deutschland)
More music from Emilyn, John and me!
This one is a beautiful polonaise found in the Wittenberger Apothekenhandschrift, a hand written dance manuscript found in the Giftschrank (poisonous substance cabinet) in an old pharmacy in Wittenberge, Germany.
Sheet music for this piece, and many other amazing northern German traditional music, can be found in volumes 1-3 of Neues aus Alten Büchern (new things from old books) published by Tramudea e.V., and also on tanzmusikarchiv.de and the TradTanzMusik youtube channel.
Recorded in Toronto, Canada on 2017-05-12
Finally figured out how to format a memory stick for optimal compromise between compatibility and file sizes.
The goal is to be able to stick this memory stick in anything from the last 15 years and be able to load files on and off. The implementation idea was to have two partitions, one FAT32 for compatibility with everything, and one ExFAT for wide compatibility allowing larger files.
The mistake I made last time was using a GUID-based partition map, which rules out compatibility with older hardware which uses a BIOS. This can be rectified by using the older Master Boot Record partition map, which has some restrictions, but nothing particularly relevant in this case.
I had no end of problems trying to achieve this with the Gnome Disks tool and GParted, and on Mac OS 10.11 it’s not possible in the Disk Utility GUI. It is, however, very easy using the command line Disk Utility tools.
to find out the descriptor for the device you want to format (e.g.
/dev/disk2, referred to in future examples as
diskutil unmountDisk /dev/diskX
to unmount it in preparating for formatting. I’m formatting a 64GB flash drive with 62.1GB actual capacity into two equal portions, so my command ends up looking like this:
diskutil partitionDisk /dev/diskX MBR ExFAT NAME_OF_FIRST_PARTITION 31.1g FAT32 NAME_OF_SECOND_PARTITION 0g
where the format is pretty self explanatory:
volume partition_map partition_1_format partition_1_name partition_1_size partition_2_format partition_2_name partition_2_size
The size of partition two is given as 0g, which results in the rest of the available space being taken.
A list of available filesystems for formatting can be browsed with:
I just tested the newly formatted universal memory stick with a computer with which it previously didn’t work, and it worked perfectly, so I’m confident that this approach achieves my original goal.
Video: Lights in the Sky (Barnaby Walters)
Finally the first video from my trip to Canada last month! Playing with Emilyn and John is always a blast, and this time we recorded a bunch of tunes. More to come!
A waltz I wrote whilst living in Iceland, recorded for the first time with Emilyn Stam and John David Williams on 2017-05-12 in Toronto, Canada.