Bleached (DIY midi controller)

Phew! That’s a relief! Thank you so much for the project - I hugely appreciate it!

Well, I’ve ordered boards and potentiometers, and a Teensy LC is sat in front of me on my desk, so I should be able to test whether I’ve borked it or not in the next week or so. In fact, my first upload had (groan) reversed pot pins, which was a mortifyingly embarrassing mistake now rectified. I’ve just uploaded one with a slight edit to the silkscreen, so that the pot names are easily visible for anyone who wants to hack the code further without breaking open KiCad.

Thanks again for the kind words!

Have these been made available as a pre-built design or strictly diy?

It’s strictly DIY, but an excellent first project for someone who wants to try their hand at soldering.

Your mod made me think: How many knobs would you get if you elongated the pcb to match the length of a Grid? Would that be practical at all?

1 Like

20 characters of like This?

3 Likes

I was going to say the exact same thing! There’s another one with three(?) groupings of pots which I’ve forgotten the name of, but that looked lovely.

edit:
Four-n midi controller

You beat me to it!!
Also for what it’s worth, if you don’t know a lot about getting PCBs made but can drill and cut and solder wires, a free wire version where you just solder a bunch of 10k pots or sliders to a teensys analouge ins, use the code of one of these linked above and mount it in some kind of box also works great. The actual circuitry is super super simple and there are plenty of youTube videos on teensy midi controllers :slight_smile:

3 Likes

So cuuuuute. Ive cobbled together a breadboard norns friend which just pushes MIDI cc, but this thread makes me want to get fancier knobs than those for protoing, and maybe build enough of a case so that it can be moved without pieces falling off.


Figure 1. Typical protoboard.

5 Likes

Before I go making my own (which I’d be happy to share assuming that’s ok!), has anyone made a 3d printed version of this?

I was going to throw something together in Fusion 360 over the next couple of weeks, but if someone else already has, I figured I’d just use that. I’m wanting to make a fully enclosed version as opposed to just extruding the panels so one can just hand wire the whole. The circuit is so simple, if someone has the parts and a 3d printer, I feel like it can be soldered built in just a few hours, excluding print time.

1 Like


Finally got the boards and could build it up!
Works perfectly!

Using it as a 2x8 bank for controlling Sines

29 Likes

beautiful !! :ok_hand: :chef’s_20_character_kiss_:100::

3 Likes

Aww thanks. Couldn’t have done it without your original design and code and @Justmat’s great code additions for the bank changing. Haven’t coded anything in donkeys so it was a lovely nudge back into that world.
I’m going to take a look at the Mutable Instruments code for the Clouds mode pot and see if I can make sense of it. It would be excellent to be able to bank change and the have the pots hold their value until you sweep past their existing value as is done in Clouds. It would prevent any sudden jumps in value as can be the case as is.
Quite pleased with how my DIY “lightpipe” worked out - I just drilled a 2mm hole directly above the Teensy LED, stuck in a bit of acrylic rod from the local DIY store, superglued it and then cut it flush with the top panel.

6 Likes

Since updating my Norns shield, I have an issue where my Norns seemingly freezes on certain tasks when my bleached is connected. I described the issue in the Arcologies thread as this was where I first noticed it.

Other than the very reproducible Arcologies issue, it happens for instance when loading Firstlight and some other scripts; it gets stuck on the loading screen until I unplug my bleached. Then the script starts as normal. I can replug my bleached after and everything seems then fine.

Does anyone else experience the same issue?

Could there be anything that creates such an issue from the teensy? The code is not process heavy and only pushes new data upon change. Mapping and controlling parameters otherwise works as it should.

Weird. have you tried any other midi controllers? Do they do the same thing?

is there any output from the matron REPL?

people have had issues with ableton because the bleached firmware fires too many messages - i think there’s a fixed firmware to top ? i forget

p.s.: PRs would be greatly appreciated if someone feels like fixing firmware issues (or has). I haven’t kept up with this project much

I have the non spammy version installed. It should only push midi upon change.

Here is repl for arcologies init, toggle and untoggle play. At this point my norns is frozen:

# script clear
# script load: /home/we/dust/code/arcologies/arcologies.lua
including /home/we/dust/code/arcologies/lib/includes.lua
including /home/we/dust/code/arcologies/lib/config.lua
including /home/we/dust/code/arcologies/lib/structures.lua
including /home/we/dust/code/arcologies/lib/Cell.lua
including /home/we/dust/code/arcologies/lib/mixins/bearing_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/capacity_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/channel_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/charge_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/clockwise_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/crow_out_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/crumble_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/deflect_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/device_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/docs_stub_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/drift_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/duration_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/er_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/level_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/metabolism_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/network_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/notes_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/offset_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/operator_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/output_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/ports_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/probability_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/psyop_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/pulses_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/range_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/resilience_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/state_index_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/structure_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/target_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/territory_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/topography_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/turing_mixin.lua
including /home/we/dust/code/arcologies/lib/mixins/velocity_mixin.lua
including /home/we/dust/code/arcologies/lib/Signal.lua
including /home/we/dust/code/arcologies/lib/functions.lua
including /home/we/dust/code/arcologies/lib/saveload.lua
including /home/we/dust/code/arcologies/lib/_arc.lua
including /home/we/dust/code/arcologies/lib/_crow.lua
including /home/we/dust/code/arcologies/lib/counters.lua
including /home/we/dust/code/arcologies/lib/docs.lua
including /home/we/dust/code/arcologies/lib/filesystem.lua
including /home/we/dust/code/arcologies/lib/_grid.lua
including /home/we/dust/code/arcologies/lib/glyphs.lua
including /home/we/dust/code/arcologies/lib/graphics.lua
including /home/we/dust/code/arcologies/lib/keeper.lua
including /home/we/dust/code/arcologies/lib/menu.lua
including /home/we/dust/code/arcologies/lib/_midi.lua
including /home/we/dust/code/arcologies/lib/page.lua
including /home/we/dust/code/arcologies/lib/parameters.lua
including /home/we/dust/code/arcologies/lib/popup.lua
including /home/we/dust/code/arcologies/lib/_softcut.lua
including /home/we/dust/code/arcologies/lib/sound.lua
including /home/we/dust/code/arcologies/lib/api.lua
including /home/we/dust/code/arcologies/lib/sharer.lua
# script run
loading engine: PolyPerc
>> reading PMAP /home/we/dust/data/arcologies/arcologies.pmap
m.read: /home/we/dust/data/arcologies/arcologies.pmap not read.
Engine.register_commands; count: 7
___ engine commands ___
amp	 	f
cutoff	 	f
gain	 	f
hz	 	f
pan	 	f
pw	 	f
release	 	f
___ polls ___
amp_in_l
amp_in_r
amp_out_l
amp_out_r
cpu_avg
cpu_peak
pitch_in_l
pitch_in_r
# script init
need to donwload norns.online
pset >> read: /home/we/dust/data/arcologies/arcologies-01.pset
pset :: /home/we/dust/data/arcologies/arcologies-01.pset not read.

Unplugging and replugging bleached gives the following continuation:

midi inconsistency for device: bleached
ALSA lib rawmidi_hw.c:111:(snd_rawmidi_hw_status) SNDRV_RAWMIDI_IOCTL_STATUS failed: No such device
rm_dev_tty: /dev/ttyACM0
dev_monitor: an unrecognized TTY device was removed.
device monitor: unmatched tty device
device_monitor(): adding midi device bleached
device_monitor(): adding midi device bleached
_norns.midi.add: 3, bleached, userdata: 0x65d0d618

I have no presets saved for Arcologies.

I have already tried a reset.

Edit: trying other scripts which freezes upon startup, there is a traceback to arcologies:

lua: /home/we/dust/code/arcologies/lib/counters.lua:106: attempt to index a nil value (global 'counters')
stack traceback:
	/home/we/dust/code/arcologies/lib/counters.lua:106: in field 'event'
	/home/we/norns/lua/core/metro.lua:164: in function </home/we/norns/lua/core/metro.lua:160>

Clearing the script kills the loading issue.

Edit 2: Tried with Midi Fighter Twister. Was not able to reproduce the issue with this device.

wooooo that’s a weird one.

sort of random thought, but perhaps try disabling the serial port, if you can?

comment this out

and in arduino IDE > Tools > USB Type, select “MIDI” (isntead of MIDI+Serial)

pretty weird though. (for proximate cause i’d guess a MIDI event stuck in the queue, but i don’t know why the controller would matter. will take a look)

1 Like

That is a pretty good suggestion, thank you. I’ll try and report back.

FWIW- Event loop for the main sketch should include a midi read (even if it’s not being used)

EDIT for code:

// MIDI Controllers should discard incoming MIDI messages.
  while (usbMIDI.read()) {
  }

from here

MIDI controllers which only transmit data should be designed to read and ignore all incoming messages. If MIDI-OX or similar software is sending messages to Teensy, this simple code will prevent problems with USB buffers filling up with never-read messages.

EDIT #2 - did a test flashing the Bleached code to my teensy based OMX-27 with the above change (and modification for only 5 pots), loaded arcologies, no apparent problems so far.

5 Likes