-
Notifications
You must be signed in to change notification settings - Fork 172
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
Work In Progress: Probability 2.0 #525
base: development
Are you sure you want to change the base?
Work In Progress: Probability 2.0 #525
Conversation
Hi @elpescado , I'm having time that I can put on Hydrogen and I'd like to help you with testing this. Unfortunately, it looks like this branch doesn't build against master anymore. Could you please have a look to the conflicting file and rebase against master then I can build and test? Cheers. |
009a7a0
to
39f137b
Compare
Hi, I rebased my branch against current master, so it should apply cleanly. |
Thank @elpescado . I'm adding it to my "Hydrogen todo" list which is now around 25 items (and was a few days ago around 70). Will report back after trying but too late for tonight! |
Hi @elpescado , I've build from your feature/probability20 branch and here is my first report. Issue: Only a small one here, the second knob (the Randomize one) is half visible on the mixer as shown on this screenshot: Visual improvement suggestion: It'd be great for consistency if visually, the 2 knobs on the master track could be the same than the 3 humanize already on place (velocity, timing and swing), with adding the name on the track, a "0" and a "+" and the lines below each of them. Here is a mockup of this suggestion: About the discoverability/usability: Playing with it a few minutes without reading precisely at the explanations in your first comment (aka: what most users will do anyway), here is my impressions (using only a hit hat line, filled every two hits):
2a) (the "randomize" knob is at 0%) the "fill" knob is having an impact on how often the notes are played with roughly:
2b) (the "fill" knob is at 0%) the "randomize" knob is having an impact on how often the notes are played in a pretty roughly linear way, ie: ~0 time when ~0% and often enough when ~100% (with still some non-played hit) After writing it, I'm taking time now to read at your explanation in order to try to understand it better. OK, I've read at it quickly and I do not understand it better :) I'll leave the night on it and re-read tomorrow ! Hope that helps. |
42293e2
to
b26ebd8
Compare
39f137b
to
9ec9c1f
Compare
Hi, I have rebased this branch against current master. I have also created a demo song. That song is made of only one pattern. That pattern is looped while I play with probability controls. Happy drumming and have fun! |
OMG !!! |
ok, this seriously rocks ! what might be even more intuitive is to have the dots (or bars) in the pattern editor change color (yellow/red/green) in real time of course :-) That way you dont have to look at the probability bars to see what note will be played. This would also give you a complete overview of all notes for all instruments. |
I'm totally +1 on this. Is it something doable @elpescado ? |
Hi! I'm back from vacations! Thanks for your feedback. I appreciate it greatly. I like the idea of rendering "probability areas" in note editor. I'll try to implement that, but I'd want to finish this task in original scope first. |
Welcome back then :) |
… and fill value & randomize
9ec9c1f
to
ff8f6dc
Compare
hi @elpescado ! i finally found the time to upgrade to the latest H2 code (from the main repo) and now i really want to start playing around with the probability feature, but ... Is this expected? or did something go wrong during the merge of your code in to the main branch ? Grtz |
Hi, Unfortunately, this feature hasn't been merged yet (the pull request is in "Open" as opposed to "Merged" state). Moreover, I'm afraid it might take some time to be merged, as currently Hydrogen is in 1.0.0 release process, so new features are unlikely to be accepted before 1.0.0 is released:( |
Hmmm... |
This might indeed be a bit confusing. "Probability bars" were "Probability 1.0" feature that was merged back in 2016. This pull requests extends that feature. |
I've noticed that this branch diverged from |
great stuff ! I did notice 1 bug : So when you add a note, change the probability bar then delete that note again the bar stays |
Hi @elpescado |
Hi! I've started to look into this pull request. I don't want to merge it for the release of 1.0, but this could be merged after the start of the development of the next version. I hope that this will be quite soon, maybe in the next month. About the feature itself: As you already noted, the term "Fill" seems to be problematic. When first seeing the parameter, i thought of "drum fills" and thought that hydrogen is now able to throw in drum fills :) I believe other virtual drums have this function.. Could it be described as "Density"? I'm really not shure.. In addition, we really would need an entry for the manual for this feature 😄 The idea to the coloring to the note properties view is very appealing!! |
Forgot one thing in my last comment.. You could also add OSC support for the new controls (as well as swing). I suppose OSC support wasn't there when you started this pull request. If you don't find the time to implement this, i can assist and do the implementation. |
Thanks for the fantastic feature! |
This is currently on the 1.1 milestone; I'm guessing largely because at the time that meant "not quite 1.0". @elpescado do you want to get this in for 1.1? If not I'll change the milestone to 1.2 for the sake of having that milestone be meaningful, but it can always be changed back to 1.1 if the fancy takes you :) |
@elpescado any news here? |
Hi all! Sorry for late reply, I've been extremely busy recently. I'd really like to see this feature released, but at the same time I don't want to delay any release. I think it's already too late for 1.1 release (I'm not sure, I've been out of the loop for last few months). As far as I see, there are a few conflicts with |
Jupp. For 1.1 only bug fixes could still be added. But development for 1.2 has already started so it would fit in there.
Could you target branch |
Hey @elpescado , Development phase for release 1.3 just began. Are you up to tackle this PR in the foreseeable future? But it needs some work and not just a mere rebasing. Lot's of stuff changed internally. Most notably handling of GUI widgets. |
I've been playing with probability attribute for notes and this got me some new ideas how to further improve this feature. I'd like to:
Rename "probability" note attribute to "weight" or "importance". The semantics would be same, but it would place less emphasis on randomness.
Add two global controls, like "fill" and "randomize" (and invent some more descriptive names). "Fill" would define threshold for note "importance" in order to be played - higher values of "fill" would cause more notes to be played, while lower settings would make patterns more "sparse". "Randomize" would define how that threshold would be randomized. So, instead of note "probability" compared with random value, now note "importance" would be compared with threshold computed from "fill" and "randomize". With "randomize" set to 0, there would be no randomness at all, and every note above threshold will be played. Setting "randomness" to 1 would preserve current behavior - threshold is totally random. Those controls are added to mixer, below humanize controls.
Both "fill" and "randomize" are controllable by MIDI. Users could program a pattern with a few notes with lesser "importance" and while playing song live adjust number of notes ("sparse/fullness") of pattern by twisting a knob on a MIDI controller.
As an extra, this branch allows MIDI control of humanize time, humanize velocity and swing controls, which was not previously possible.
As with previous pull request, this branch should have no impact on legacy behavior - default "importance" value for notes is 1.0 so unless explicitly changed, all notes are played regardless of "fill" and "randomize" values.
Status:
[x] fill and randomize controls
[x] MIDI actions
[x] sampler
[x] MIDI export
[x] rename parameters
[x] graphics
[ ] documentation