Overview
I made a video about this last week, but I figured I should get around to making a post on the forum as well. Over the past year or so, I had the naive brilliant idea to try to learn some more about the CE C toolchain's USB libraries, and I decided that making a program to output USB MIDI events would not be too hard. It probably wouldn't have taken nearly as long if I had known what I was doing, but going into it completely unknowledgeable was certainly an... interesting experience.

The program is compatible with the official USB MIDI standard, which means it should work with anything that can receive USB MIDI input (such as a DAW on a computer) without needing any additional programs or drivers on the computer side. I've tested on Windows, Linux, macOS, ChromeOS, and Android (not iOS but pretty sure that would work too) and it works, so I'm pretty confident that it should work on other devices without issue.

Interestingly, this is also the first program I've made where a bug crashed my computer instead of my calculator (apparently Windows really doesn't like bad USB descriptors):




Key layout


I decided it made more sense to rotate the calculator during use, so I also designed the settings screen with that in mind. Here's what all the different highlighted keys do:

Green - Regular note input. Each horizontally adjacent key is one whole step greater than the previous and each vertically adjacent key is one half step.
Orange - Note input designated to drums (exclusively channel 10).
Purple - Mappable MIDI controls. Each pair of two keys can be mapped to one control, where the left key decreases the value and the right key increases it.
Pink (Salmon?) - Sustain when held.
Red - Increase or decrease the current octave.
Yellow - Increase or decrease the pitchbend value.
▪ Light Gray - Enter settings edit mode.
▪ White - Exit the program.

(More information is also in the readme)

Download
Available in the Cemetech archives.

Source
On GitHub!

I'm pretty happy with how this turned out and it's actually a lot of fun to mess around with (and the key layout surprisingly works pretty well). Looking forward to hearing what you all think! Smile
I don't mean to be rude but the BSOD isn't green and you have the browser window open.

But still, I'd love to try this out when I can, especially being a MIDI enthusiast myself. It'll have to wait for now, though.
Nice project Smile

And a host OS / its drivers should never crash because of an USB device (that is a vulnerability, Denial of Service if nothing else), so Microsoft ought to be interested in a report about your computer crashing with whatever your calculator exposed onto its USB port Wink
HydrideGS wrote:
I don't mean to be rude but the BSOD isn't green and you have the browser window open.

But still, I'd love to try this out when I can, especially being a MIDI enthusiast myself. It'll have to wait for now, though.


Update: apparently windows insider uses green BSODs. First time I've seen that.

Also, apparently BSODs can sustain image data if the crash is severe enough. I have no idea what could've possibly caused such a crash to occur over a USB cable, but this is Windows we're talking here, so meh. It could also be the reason why the QR is still blue.

Sorry for my ignorance, but I genuinely didn't know this. That aside, I've always wanted to try out a MIDI keyboard of my own. This might be the closest I can get.
Here's a quick demo video of it in action:

Here's a short list of MIDI CC inputs I would like to see supported:

1 = Modulation wheel
7 = Volume
11 = Expression
64 = Sustain Pedal (on/off)
124-125 = Set Omni mode
126-127 = Poly mode

Further, selecting an unused on for octave and possibly channel would be cool.

A "midi learn" mode where e.g. if I hold the Y= button and one of the pads, it sets that pad to output whatever it's sees during listen mode (just a single message, it doesn't need to learn a whole buffer).

Also, saving and recalling presets with PC messages.
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement