Remix.run Logo
catapart a day ago

Just a quick compatibility issue: for some reason, my midi board triggers a key input both when I press it down, and when I let it go. I'm assuming that it might just be something wrong with my board, but I did want to let you know in case there might be some nuance you haven't considered with respect to the midi commands. I know my first crack at it didn't distinguish between note-on and note-off commands, for instance.

ta2112 a day ago | parent | next [-]

I can add a bit of information to what might be behind this bug.

In MIDI, there are NOTE_ON and NOTE_OFF events, for when you press and release each key. The NOTE_ON has pitch and velocity parameters. The NOTE_OFF just has pitch parameter (maybe it has velocity as well I can't quite remember, it's off the point). So if you push middle C, it might look like this:

NOTE_ON 60 (middle C) 98 (velocity), NOTE_OFF 60

Some keyboards never send NOTE_OFF events, instead they send NOTE_ON with velocity 0. On these keyboards, pressing middle C looks like this:

NOTE_ON 60 98, NOTE_ON 60 0

Both are valid MIDI streams, and all stream processors should react appropriately to both. This app likely does not correctly map zero velocity NOTE_ON events to NOTE_OFF with the same pitch.

vunderba a day ago | parent | prev [-]

Hey catapart,

Thanks for the feedback. Oof that's weird. Maybe I'm triggering some kind of odd aftertouch?

EDIT: Just saw ta2112's note. That's super helpful I'm definitely only responding to standard MIDI NOTE_ON and NOTE_OFF messages.

I'll try to get this fixed this evening.

catapart a day ago | parent [-]

Sweet! Thanks for the follow up. I hope it's a straightforward fix!

Aside from that, nice work on the app! Looking forward to giving it another try.

ETA: a shameless plug, but since you may have an interest in this kind of thing - I built and published a free, online midi piano (and drum kit) available for anyone to use. It's pretty bare-bones and doesn't really explain itself, but in case you ever want to use it, check out https://midi-speaker.com/

works with midi input as well as keyboard and touch/mouse input. it only has the two sampled instruments, but it's great for a groove in a pinch!

vunderba a day ago | parent [-]

Okay I think it's fixed - I'm testing for NOTE_ON with velocity of 0. Let me now if that solves it for you. I simulated a test of it because my midi controller just sends the regular NOTE_ON/NOTE_OFF messages!

Tried out your site - super clean interface. I noticed you are using the Salamander Grand Piano samples. For some weird reason I thought that those samples were pretty huge (50+ MB) but it loaded up pretty quick so great job!

catapart 13 hours ago | parent [-]

Working as expected. Thanks for the fix! Now that I'm actually able to use it, it's pretty great. It's a really great experience, exploring to fill out the notes. I do get that rogue-like itch for immediacy, when I make a simple mistake, but it feels like having to wait gives a nice buffer. I also really like how configurable it is. That's something that is often overlooked.

Also, thanks for checking out the site! Yeah, I compressed the files down to .mp3, myself, and then only used a single velocity, so that they were around 2MB in total. They sound terrible, in comparison, but good enough for phone speakers and non-recordable jamming. You can find the same-sized, better-sounding .opus versions in all velocities on the repo's base-functionality branch, if you're interested in those samples.