mrbluexav / dekrispator Goto Github PK
View Code? Open in Web Editor NEWExperimental Music synthesizer based on an STM32F4 Discovery board (ARM Cortex M4F from STM32 series) with USB MIDI Host function for interaction and automatic mode.
Experimental Music synthesizer based on an STM32F4 Discovery board (ARM Cortex M4F from STM32 series) with USB MIDI Host function for interaction and automatic mode.
Dear fellows,
I wanted to try out Dekrispator on my STM board, controlling it with my CME MIDI Controller.
I couldn't get any response from the controller. With GDB I could see that it would always give me "unrecognized device".
After some investigation, I found out that my controller has two interface descriptors. The first is some audio interface (maybe to send audio back from a hypothetical usb synth?) and the second is the real midi interface.
So I had to make changes in two places:
1)
.../Dekrispator/USB/usbh_conf.h around line 48
Then obviously it would not decode my second interface. I just changed it to:
Now I had to tell Dekrispator to get data from that second interface:
.../Dekrispator/USB/MIDIstream_class/usbh_midi_core.c
In function USBH_MIDI_InterfaceInit, whenever there was a Itf_Desc[0][0], I changed to Itf_Desc[interfaceToUse][0]
interfaceToUse is a constant int = 1.
Next step is making this selection automatic (don't want to mess with the support for the Korg Controller).
I am gonna request to pull after I reorganize my code (and maybe make the interface selection automatic).
Very nice project to work with!
PS. Compiling all in Ubuntu 12.10, running make from the Release dir. Debugging with GDB/Emacs.
I did a quick and dirty port of this nice synth using the STK library for midi and low-level sound playback.
See https://github.com/erwincoumans/StkDekrispatorSynthesizer
Perhaps you can add a mention in your readme and close this issue.
The midi in control is all working but it could be handled a lot better for the end user, it's laid out as a specification and a lot of the CC messages are assigned specific functions on a synth, this is generally so that you can plug a keybooard into a synth, set the fader to send CC 7 and know that it's going to affect the master volume, or set it to CC 91 and know that you're going to affect the reverb send level etc.
Deskriptor is of course a unique synth, and it has many functions that aren't really in the midi spec but to start off with I propose going through the midi controls and altering them as far as possible to match the midi spec, this would make it way more accessible to a lot of people.
Forgetting 7bit midi for a second, what is the actual resolution of some of the controls? because it's possible to implement much higher resolution using standard midi messages (pitchbend is 14bit in a 3byte message), and higher with sysex, I'm sure some of the functions could really benefit from higher resolution control (master tempo for instance, or finer granularity on filters?).
I also wonder whether it's worth doing the extra maths for functions that don't use the full range of 0-127? if a function is only going to use values between 0-5 for instance?
I'll take a look and see what I can implement on my fork, it would be really useful to have some kind of spec for the synth though if that's possible?
Hi,
I'am reusing your MIDI USB Host driver. (Good work)
Have you thought about implementing Midi Send ?
I like to use it for controlling the LEDs on the nanoKONTROL.
This might be useful for your project too.
Regards
Sebastian
It seems like a very important line 'MIDI_Handle = phost->pActiveClass->pData;' got commented at the end of line 97 of usbh_MIDI.c, which cause uninitiated variable warnings and a hard fault. Thank you for your work!
EDIT: Sorry, this issue is meant for Dekrispator_v2, my bad. Googled too fast ;)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.