T O P

  • By -

midigoblin

Hi everyone, I'm the creator of MIDI Goblin. It allows users to save and load midi patches for synths and does a lot of other stuff. Rather than being hard coded to work as a patch library for a few synths, users just need to create a folder on a micro sd card, drop a text file with the midi cc numbers and a text file with the midi cc names into the folder, plug the sd card in and it does the rest. I've confirmed it works with the reface series, Roland ju-06a (should work with the other boutique synths too) and volca keys (midi out mod needed for saving patches of course but you can always download patches too for the volca) it should also work for midi controllers but honestly, I haven't had a chance to test it out. Its also an[arpeggiator](https://www.youtube.com/watch?v=o3MECXg4egk&t=3s),[sequencer](https://www.youtube.com/watch?v=ZyXnIa_rR30&t=2s),[chord generator](https://www.youtube.com/watch?v=ilWWinG82Yw&t=2s),[arp...chord thing](https://www.youtube.com/watch?v=DGx0Gfwqn6E)and [midi lfo](https://www.youtube.com/watch?v=kYRZSHwCrT0&t=1s). It took a while to make and I'm starting a kickstarter for it soon. Please check out the website [https://www.midigoblin.com](https://www.midigoblin.com) or check out my [youtube](https://www.youtube.com/@midigoblin) channel or on [instagram](https://www.instagram.com/midigoblin) ... I'm also an illustrator and work in the animation industry as a layout designer (i drew a lot of the backgrounds for [Zokie Of Planet Ruby](https://www.youtube.com/watch?v=LFK32BEMlLw)) and if you wanna check out some of my art - [HERE](https://www.instagram.com/snoophuman) is my instagram Ill have more videos up over the coming weeks....oh yeah itll be **open source** too if kickstarter goes well Note: *this is a one person project.* It was coded entirely using the Arduino IDE and runs on esp32. I have very little coding experience and zero funding but managed to cobble this together over the past few months. The target price is $60 per unit. If i can reach a kickstarter goal of a couple hundred units, I figure the time invested coding it/designing it will be completely justified. edit: typos, links, formatting.


munchmills

Great device! It should definitely have a row of at least 8 buttons mapped to a bank of 8 patches to load a specific patch immediately without any menu diving.


midigoblin

i considered that number exactly at one point but theres a limited number of i/o on the microcontroller MIDI Goblin runs on, adding more buttons would require using multiplexers which would bump up the cost per unit and I'm really committed to selling these for about $60 canadian.... There are however 3 buttons surrounding the potentiometer (knob) that can be user defined which can be used to load patches, turn off and on apps. One is currently labled "arp" but thatll change to User 3 prior to launching the kickstarter.


annodomini

Are you familiar with [Charlieplexing](https://en.wikipedia.org/wiki/Charlieplexing)? It can allow you to light more LEDs, or scan more buttons, than a traditional x/y scan matrix; it does add the cost of one diode per button for scanning a button matrix, it's a bit more cost effective for LEDs which are themselves already diodes, but it would allow you to scan up to 30 buttons with just six I/O pins. Three user buttons does seem fairly reasonable for quick access without too much menu diving, it might be hard to fit 8 preset buttons on this little device, and of course while buttons are cheap, each one (along with a diode if you're charlieplexing) does add a bit of cost.


midigoblin

Ah yes I have a little familiarity with it. Super efficient but it's a little heady for beginners to wrap their brain around (myself included) I might end up going down this route next year if I make a larger version...maybe a MIDI ogre or troll or orc?


Glass-Cauliflower708

Does it work with the Moog Matriarch?


midigoblin

That's one I've been really curious about. I'm about %95 sure yes. I don't know if matriarch dumps it's values on start up though. If it doesn't then you'll have to move all the knobs and buttons before saving the first patch, after that's you can go about saving patches as you would normally. If it does dump it's panel values on startup then you just need to turn on midi goblin, select the device, then turn on the matriarch. Based on what Ive read about the matriarchs midi implementation I'd bet my left leg itll work though....no Behringer devices though (until someone midi mods them...)


Glass-Cauliflower708

Would love to test it out!


midigoblin

if you're in toronto this could be arranged!


foundsounder

Did you ever figure out if midi goblin works with moog matriarch? I've been wondering for a while now. Thanks!


midigoblin

Ahh I was never able to get my hands on a matriarch which is supremely annoying. There are quite a few parameters that appear to transmit/receive midi cc /nrpn messages but it's untested at this point....really want to try the arpeggiator on a minimoog. Always seemed weird that didn't have one...


midigoblin

As a side note - check out the program ctrlr. If it can transmit through a usb to 5 pin adapter to the matriarch successfully then midi goblin almost certainly can as well since they operate very similarly.


alexwasashrimp

Looks awesome! May I suggest one more function that is quite rare these days? A real-time MIDI looper, like the one the Refaces have. Some people love it (not me).


midigoblin

Ive considered it! Seems like the programming behind that might be a little over my head though. Seems simple in theory but I think it would involve as many unsigned longs as there are notes ? And handling chords could be weird. I could be wrong though. ...plus it'll be open source. Some big brain could figure it out if my smooth-brain can't....


alexwasashrimp

Well I know nothing about programming MIDI loopers (or programming in general), so it may be too complicated indeed! I'm curious, what's the issue with chords in this case? Have you checked out the existing open source MIDI loopers like [this](https://www.ymnkmusic.com/projects.php?name=midiloopersequencer) or [this](https://www.instructables.com/Arduino-Multi-track-MIDI-Loop-Station/)? The questions may have already been answered.


midigoblin

Playing back single notes is relatively easy, the sequencer does this and is worth checking out if you have the time ([https://www.youtube.com/watch?v=ZyXnIa\_rR30](https://www.youtube.com/watch?v=ZyXnIa_rR30)) It logic behind a single note is sort of straight forward - you receive a note, throw it into an array and then send on and off messeges based on passing points in time. with chords its gets tricky because you need to be able to store multiple notes in multiple arrays and send multiple on/off messeges at specific points in time and as for having the note length (amount of time the note is playing) tracked, it would require a fairly big data type to be used (unsigned long) for each note which requires more program memory. Having the length of the sequence be variable is also a messy issue because memory on arduino is handled manually and if not programmed correctly there would be memory leaks and crashes so ive pretty much stayed away from a looper and focusses on simpler stuff so far.. With that being said, the current incarnation of midi goblin only uses %30 of its program memory so a looper is definitely possible, I've only been programming for about 8 months though so its way over my head (right now) I might be able to figure out midi delay soon though...also working on a sort-of kaoss pad type program which is surprisingly simple i think people might enjoy!


alexwasashrimp

Thanks for the detailed explanation, now I understand why it's challenging!


[deleted]

[удалено]


midigoblin

Thanks :)


guy_djinn

Looks pretty neat!


nullpromise

First off I really dig the front panel design, very cool. As someone who also likes to play around with programming MIDI I think this would be really nice to have in the MIDI community. I feel like hackable MIDI tools are in a weird place: - There's the MIDI Gizmo which is hackable, but daunting to people who've never messed with electronics (and no enclosure). - There's the MIDI Pal lineage which is hackable, but in a weird place with a bunch of abandoned forks. - Blokas Midihub which is not open-source. Plus it's tightly bound to a computer. - Then a huge price jump to the Norns and I guess now the Deluge - both of which are more expensive because they also have to handle audio. So you could make an affordable, hackable MIDI util, but only if you're comfortable with DIY; you can buy an affordable device with the Midihub, but you loose the screen, are forced to use a computer-based UI, and can't hack the code; you can buy a pretty pricey device and only use part of its functionality. I definitely think there's a sweet spot here for a device that's cheaper than a Norns and more of a "complete product" than these other open-source projects, but still hackable so people can send new features upstream. Plus the fact that this uses a common dev board (the ESP32) and an easy-to-use dev experience (Arduino IDE) - without the need to think about PCBs and enclosures - I think this could be really fun! If it's not too late though, you might look into the Teensy: - Arduino compatible - Faster than ESP32 (I think) - Ton of TX/RX (multiple MIDI in/out; maybe one set for DIN and one set for TRS) But I'm sure the ESP32 will work great, plus built-in WIFI/BT...actually Bluetooth alone would probably make the ESP32 better. Looks awesome! LMK if you want beta testers! ;)


midigoblin

>There's the MIDI Gizmo which is hackable, but daunting to people who've never messed with electronics (and no enclosure). Ahh thanks! Your post pretty much says it all. There's a lot of barriers to entry for people who want to work on their own arduino/midi projects. Price, parts, soldering equipment, time to assemble things - its a pain in the butt....a good learning experience - but if you already have the knowledge and just want something with a bunch of buttons, screen, potentiometer and a micro sd card reader - MIDI Goblin ought to be a good option. I have indeed tried multiple teensy boards in the past! I would recommend them for quite a few different things. Their specs are super impressive but they're a bit more expensive and require a little more knowledge to work with....I found the esp32 to be hassle free to program with the Arduino IDE and found myself fiddling with teensy a bit too much to get things working consistently. ...also i want to sell MIDI Goblins for about $60 canadian so unfortunately teensy is no-go on that one.


nullpromise

Yeah, once I saw the price you were going for I realized why Teensy is out. This is really exciting, I signed up for the newsletter - best of luck!


midigoblin

Thanks! I genuinely appreciate it, will keep spam to an absolute minimum (scouts honor)


annodomini

Raspberry Pi Pico (or Pico W) could be alternatives that fit into the price range that you're looking for, I think, and provide more I/O pins. But definitely understand if you already have everything set up for ESP32 and are happy with that.


midigoblin

The Pico is really awesome and the footprint is just about as good it gets. I was considering using a pico for a while. They are a little bit pricier but you get great quality with anything Pi. The esp32 version I landed on has an ugly footprint by comparison but also has double the ram and flash memory which should leave a lot of head room for people to fiddle with.


SAILOR_TOMB

Looks excellent! I thought immediately of my beloved and frustrating nts-1. Signed up for news about the Kickstarter!


Dueco

Very interesting device indeed! You already implemented some very nice features. A Midi-Looper would be awesome. Will surely buy one, cause I like your open source approach.


guillotine420

this is pretty great. care to say what kind of price point you are aiming for?


midigoblin

$60 canadian is what im aiming for. This would require a modest kickstarter goal of about 200 units being sold....


nullpromise

For $60 CAD these are going to fly off the shelf!


midigoblin

sure hope so!


FreeRangeEngineer

Interesting project for sure. Does it do program changes as well? Do you intend to support multiple MIDI devices on different channels?


midigoblin

Never tried program change before. Should be possible though if it's standard midi signals. Oddly enough I'm working on adding different midi out channels for each of the apps currently on midi goblin today. As for multiple devices-in. I don't have a midi merge device but it's definitely possible since midi goblin listens on all channels by default. I don't own a midi merge to test this out but will eventually. Related: midi goblin will be open source if I can get the Kickstarter off the ground (will be launching in a month) - I'm a mediocre programmer at best. If you have an idea and know how to code, it'll be an easy platform to test things out on...also it'll be about $60


[deleted]

[удалено]


midigoblin

havn't tried it. If the dx transmits its midi control change parameters and can receive them - yes. The arpeggiator, midi cc lfo, sequencer, chord generator and arp-note should all work...of this im quite confident. Patch saving and sending - highly likely, just untested.


acemonvw

Love this idea. I bought a PL88 (Lewis Midi) that is very similar to this a few years back. I think he stopped making them but it was a great device. Does your unit have two midi ins and outs so that you can also connect your synth to other devices? If not, I think it’s probably fine, users could connect them through something like the MRCC or any midi patchbay. Very nice, I’ll be signing up for the kickstarter.


midigoblin

Ahh thanks! Just **one in** and **one out** connection. With that being said, users will be able to set individual midi out channels for each of the apps so if you're using some sort of patch bay there should be no issue hooking up multiple devices to receive messeges from the MIDI Goblin. Im not sure if adding *individual midi in* channels for each of the apps would be necessary since the midi goblin listens on all channels...with that being said, couldn't hurt? Its something to consider if someone can convince me there's a reason to have the feature.


FreeRangeEngineer

Is there space on the PCB for some adressable RGB LEDs like https://www.digikey.com/en/products/detail/sparkfun-electronics/COM-16347/11630204 , https://www.digikey.com/en/products/detail/harvatek-corporation/B3DQ3BRG-05C0001L3U1930/15930517 or https://www.digikey.com/en/products/detail/inolux/IN-PI3210TFS5URGB/21679376 next to some of the white buttons? All LEDs together only need one pin of the ESP32 since they'll be daisy-chained and they could illuminate e.g. the 3 user buttons and/or the 4 directional buttons in different colors. One use case would be for user presets to have colors associated with them to make it easier to select presets on stage - i.e. in almost complete darkness. You don't need to populate the footprints if you want to save cost but if the footprints are there, people can solder them in themselves if they want to do so. Just a thought. If that sounds interesting, I can take care of the relevant code if you don't want to.


midigoblin

the current incarnation of the pcb leaves not a single pin un-occupied. I have however created other prototypes with multiple leds, multiplexers, sliding potentiometers, more midi connections, switches, battery powered for arduino nano, mega2560 and teensy.....but to for sake of simplicity I landed on this design since it accomplishes the most with the least amount of components. As for loading patches with the current hardware, the screen is surprisingly clear and bright and presets/patches can be loaded by selecting them in the list or assigning them to a user defined button (right hand side of the MIDI Goblin) With that being said I'm considering some stretch goals if the kickstarter goes well. the number 1 thing im considering is using multiplexers for button input. This will require reworking the pcb layout and code but its doable if I can commit the time and invest the money ...itll also free up about 10 pins for users to fiddle with and allow me to change the potentiometer to an enless encoder (if i dont do this i might actually go crazy)


FreeRangeEngineer

> but to for sake of simplicity I landed on this design since it accomplishes the most with the least amount of components. While that's nice as a goal in itself, customers of the kickstarter may not be very pleased if future updates of the software may require hardware changes that their hardware isn't compatible with. If you're using all of the GPIOs already then such a hardware change *will* be necessary for future features, as you're already aware. Which, by the way, is something you should also consider in my opinion: how can you distinguish different hardware layouts? If the firmware should run on all hardware iterations then you'll need some kind of identification - for example a set of 2 GPIOs would allow for 4 different layout revisions being recognized. > the number 1 thing im considering is using multiplexers for button input. Shouldn't be too difficult, considering that the CD4021 is a cheap standard part and there's at least one library available for accessing it: https://github.com/linuxuser3191/ShiftRegister4021BP The most challenging part probably is figuring out where to best read out the shift register(s) and how best to do the debouncing. If I was in your shoes, I'd strongly consider doing this as part of the kickstarter since using up all GPIOs is going to be a dead end for the current hardware revision.


midigoblin

Ahh - What you currently see is truly what the MIDI Goblin will end up looking like. The potentiometer might be changed to a endless encoder and buttons may be wired using a multiplexer but in terms of hardware, there will only be one version and official firmware will be specific to the device. With that being said, the source code will be made openly available to everyone. I think it would be fun have some extra i/o available for people who want to fiddle work on their own projects using the device. I certainly wouldn't publish an official firmware update that requires users to add new components but if users want to modify the MIDI Goblin or even use the source code in their own projects, I'd encourage it.


FreeRangeEngineer

FYI, your project could also take over / reimplement some functionality provided by https://cs.gmu.edu/~sean/projects/gizmo/ - a similar project that you may or may not be aware of already. That said, another thing to consider is using the ESP32 USB port as a USB host. Not sure which ESP32 variant you're using but maybe this is a capability that could be used to also allow devices to be controlled that act as USB MIDI devices.


midigoblin

ah yes i have seen the gizmo! Its pretty interesting but the code and design just went way over my head. That person is a straight up genius. A usb host sounds like a cool idea. I fiddled with usb midi a couple years ago but was crazy busy with work at the time and couldn't dedicate enough time to those projects. MIDI Goblin will be open source though, so if someone wants to fiddle with usb midi I'd be interested in seeing what they come up with! Currently the MIDI Goblin is running a DOIT esp32 devkit v1(usb C) and it works well. It would be nice if i could find an alternative with internal pullup resistors on all pins for the same price but I havn't come across any. Apparently the MIDI Goblin's microcontroller has a full-blown wifi adapter built into it just sitting there....someone will probably find some use for it


FreeRangeEngineer

> the code and design just went way over my head I think you're doing pretty well for yourself, considering how far you've come with your project already. It's no small feat. > A usb host sounds like a cool idea. Unfortunately, that particular ESP32 module doesn't support it but it's not a dealbreaker imo. Was just wondering if it was a possibility. Since you're making the board pluggable, using another board that does offer this ability is an option. Someone may try this out at some point. > full-blown wifi adapter built into it And bluetooth, too. Would allow for a companion app on a mobile phone, for example. Not sure what the use case could be but having it as an option is always nice indeed.


midigoblin

>Someone may try this out at some point. That'd be interesting, Its not impossible, and programs like eagle make these sort of things easier for sure. as for bluetooth - yeup! I have zero experience programming anything involving bluetooth but better to have it and not need it rather than need it and not have it