Princeton-CDH / bitKlavier

The piano, digitally reinvented.
http://bitklavier.com/
GNU General Public License v3.0
37 stars 5 forks source link

Synchronic fixes/adjustments #44

Closed dantrueman closed 7 years ago

dantrueman commented 7 years ago
  1. I think it's important at this stage to keep the parameter interface definitions the same as the current release (with the exception of the Sync Mode), and i'd like to always talk in ms for now. i am changing the "clusterThresh" to be in straight ms, as opposed to a multiplier of the pulse length as it is now. we can add the multiplier approach later, but for now to avoid confusion, I need the original definition

  2. removed (!inPulses) from conditional for keyReleased; when in LastNoteOffSync, we should be able to interrupt a cluster => more to the story; see 4

  3. it sounds like repeated notes get added multiple times when in a cluster, so they get louder and louder. changing to "cluster.addIfNotAlreadyThere(noteNumber);" =>actually, a bit more complicated. see 7 below.

  4. when in LastNoteOffSync, the pulses should not begin until ALL the keys are released; we need to keep track of which keys are down. it looks like the "on" array was meant for that, and is unused otherwise, so i've implemented this using it, and renamed it "keysDepressed"

  5. changed rampOff time to 30ms, to match current release; makes a clear difference to the sound. at some point we may want the user to be able to set these individually within the preparation

  6. added "if(LastNoteOffSync) shouldPlay = false;" to keyPressed() -- sometimes the pulses would continue when a note was pressed.

  7. so it turns out that bK has an effective max cluster size of... 8 and if more than that are added to a cluster, then the oldest ones are replaced. without this, rapid passages can result in a huge build-up. 8 is stupid arbitrary (should be 10 at least), but i'm going to put that in there so we can reproduce the sound of existing preparations, but we may want to make it settable in the Synchronic preparations. doh! => I've added a "clusterCap" variable to the Preparation, set to 8 for now; comments in the code as to how clusterCap and clusterMax differ. we may want to expose clusterCap to the user eventually, as long as we can do it without sowing confusion; it may also be just one of those things that remains hidden as part of the design of the instrument.

  8. ok! i've gotten Etude #1 to sound the way it should, playing as a plugin within Sibelius! there is only one caveat: there is a little strangeness with playback when velocity is 127 (it seems to poke out really loud all of a sudden). i wonder if that is possibly a consequence of the reduced sample setup we are currently using now though, so i'm not sure i want to spend more time on it until we try all the samples.

  9. i don't think we are doing the tuning of resonance properly yet! trying this with Etude 2. => fixed.

  10. rename "beatsToSkip" to "offset"?

mulshine commented 7 years ago

Sounds good. Sorry for that little discrepancy - I had been meaning to revert to absolute milliseconds. Keep me posted on what you learn experimenting!

dantrueman commented 7 years ago

no prob. will keep adding to this list as i go, for recording keeping.