Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MIDI Implementation #1

Closed
ghost opened this issue Apr 20, 2021 · 4 comments
Closed

MIDI Implementation #1

ghost opened this issue Apr 20, 2021 · 4 comments

Comments

@ghost
Copy link

ghost commented Apr 20, 2021

I've come up with a way to use your app to drive external synths and drum machines using WebMIDI (currently supported by Chrome).

There's a squashed commit here that has a rough draft: https://github.com/nagytech/acid-banger/commit/bf0cc4764623ec82bb618f7c13c0655516fc0f6e

I'm wondering if you would be interested in this as a feature. And, if you might have some insight on how you would offer the user the option to select a MIDI output (if found and supported).

I'll continue to clean up my implementation, hopefully it will be less of a hack soon.

Summary

  • Notes for saw osc are sent to MIDI channel 8
  • Notes for square osc are sent to MIDI channel 9
  • Drum tracks are sent to channels 1,2,3 and 4 using note 35

TODO

  • Velocity is set to a static value, will need to map this to the appropriate MIDI values
  • Filter values, accents and glides are not implemented yet (will need to look up the right CC values for this)
  • Different synths will have different retrig rules, so ties (glide) notes might be tricky to implement - I can do what works for me, but no guarantee it works for others.

Hardware

WebMIDI Out -> Digitakt MIDI via USB -> Tracks 1-4 -> Drum Samples
                                        Tracks 10-11 -> MIDI Out -> MIDI to CV -> Synth A/B

Demo

AT-cm.11436226992.mp4
@doctea
Copy link

doctea commented Apr 21, 2021

Instead of using separate MIDI channels for the different drum tracks, I'd suggest using the GM standard channel 10 for percussion: https://en.wikipedia.org/wiki/General_MIDI#Percussive

@vitling
Copy link
Owner

vitling commented Apr 21, 2021

Great stuff! I'm really glad that you have been so inspired to add MIDI support for this and the video looks really cool - I wish I had that kind of gear to play with then maybe I wouldn't have to write so much software to do it instead :-D

For the time being I consider the version I released online to be "complete" in terms of having all the features that I wanted it to have. I've added a small note about that to the README. I do, however, strongly encourage you to keep working on your MIDI version if you want to, and I'll happily share your fork across my networks if it ends up working well.

@ghost
Copy link
Author

ghost commented Apr 21, 2021

Instead of using separate MIDI channels for the different drum tracks, I'd suggest using the GM standard channel 10 for percussion: https://en.wikipedia.org/wiki/General_MIDI#Percussive

Sounds like a good idea, but my gear already has separate channels for each track. I have no way to test or validate the alternative protocol.

@ghost
Copy link
Author

ghost commented Apr 21, 2021

For the time being I consider the version I released online to be "complete" in terms of having all the features that I wanted it to have. I've added a small note about that to the README.

No worries, I'll close this one then.

@ghost ghost closed this as completed Apr 21, 2021
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants