OpenLearnr
OpenLearnr copied to clipboard
build(deps): bump maven-enforcer-plugin from 3.0.0-M3 to 3.1.0
Bumps maven-enforcer-plugin from 3.0.0-M3 to 3.1.0.
Release notes
Sourced from maven-enforcer-plugin's releases.
3.1.0
🚀 New features and improvements
- [MENFORCER-420] - cache dependencies across rules (#152)
@josephw- [MENFORCER-409] - Log at ERROR level when is set (#133)
@electrum🐛 Bug Fixes
- [MENFORCER-389] - Allow filtering of parent in requireReleaseDeps (#157)
@slawekjaranowski- [MENFORCER-421] - Use currently build artifacts in IT tests (#159)
@slawekjaranowski- [MENFORCER-402] - fix provided dependencies in RequireUpperBoundDeps (#140)
@subes📦 Dependency updates
- Bump mockito.version from 4.6.0 to 4.6.1 (#161)
@dependabot- Bump assertj-core from 3.23.0 to 3.23.1 (#160)
@dependabot- Bump assertj-core from 3.22.0 to 3.23.0 (#158)
@dependabot- Bump mockito.version from 4.5.1 to 4.6.0 (#156)
@dependabot- [MENFORCER-419] - Upgrade Maven to 3.2.5 (#154)
@slawekjaranowski- [MENFORCER-418] - Upgrade Parent to 36 (#153)
@slawekjaranowski- Bump plexus-utils from 3.4.1 to 3.4.2 (#151)
@dependabot- Bump maven-dependency-tree from 3.1.0 to 3.1.1 (#150)
@dependabot- Bump maven-javadoc-plugin from 3.3.1 to 3.4.0 (#147)
@dependabot- Bump maven-surefire-plugin from 3.0.0-M5 to 3.0.0-M6 (#148)
@dependabot- Bump maven-project-info-reports-plugin from 3.2.2 to 3.3.0 (#149)
@dependabot- Bump mockito.version from 4.4.0 to 4.5.1 (#146)
@dependabot- Bump assertj-core from 3.21.0 to 3.22.0 (#134)
@dependabot- Bump mockito.version from 4.2.0 to 4.4.0 (#142)
@dependabot- Bump maven-jxr-plugin from 3.1.1 to 3.2.0 (#143)
@dependabot- Bump maven-project-info-reports-plugin from 3.1.2 to 3.2.2 (#144)
@dependabot- Bump mrm-maven-plugin from 1.2.0 to 1.3.0 (#129)
@dependabot- Bump mockito.version from 4.1.0 to 4.2.0 (#132)
@dependabot- Bump maven-javadoc-plugin from 3.2.0 to 3.3.1 (#130)
@dependabot- Bump mockito.version from 4.0.0 to 4.1.0 (#127)
@dependabot- Bump junit-jupiter-api from 5.8.1 to 5.8.2 (#128)
@dependabot- Bump mockito-core from 3.12.4 to 4.0.0 (#114)
@dependabot- Bump extra-enforcer-rules from 1.3 to 1.4 (#112)
@dependabot- Bump assertj-core from 3.20.2 to 3.21.0 (#110)
@dependabot- Bump sisu-maven-plugin from 0.3.4 to 0.3.5 (#109)
@dependabot- Bump actions/setup-java from 2.3.0 to 2.3.1 (#111)
@dependabot- Bump mockito-core from 3.12.0 to 3.12.4 (#106)
@dependabot- Bump plexus-utils from 3.3.0 to 3.4.1 (#107)
@dependabot- Bump mockito-core from 3.11.2 to 3.12.0 (#103)
@dependabot- Bump actions/setup-java from 2.1.0 to 2.2.0 (#101)
@dependabot📝 Documentation updates
- (doc) - Require OS web page improvements (#122)
@WilliamCollishaw- (doc) - Require Java Version web page improvements (#120)
@WilliamCollishaw
... (truncated)
Commits
543e46f[maven-release-plugin] prepare release enforcer-3.1.002d4036[maven-release-plugin] prepare for next development iteratione3475ec[maven-release-plugin] prepare release enforcer-3.0.1588e3d0Add MojoHaus - Extra Enforcer Rules to third party7c026faBump mockito.version from 4.6.0 to 4.6.107257fbRemove always updates policy for snapshot from mock repository827e806Remove always updates policy for snapshot from mock repository8cca653Add release-drafterfa8f7f2[MENFORCER-389] Allow filtering of parent in requireReleaseDepsfd574ecBump assertj-core from 3.23.0 to 3.23.1- Additional commits viewable in compare view
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot mergewill merge this PR after your CI passes on it@dependabot squash and mergewill squash and merge this PR after your CI passes on it@dependabot cancel mergewill cancel a previously requested merge and block automerging@dependabot reopenwill reopen this PR if it is closed@dependabot closewill close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Just thought I'd share the technique I used to handle releases in my ADSRs.
When I evaluate the ADSR at time t(in samples), if Some(tr) <= t (that is time of release <= t_now), then I calculate the curve¹ from level to 0.0 where level is established with a recursive call into the ADSR function with the same arguments, but with tr=None and t=t_release for the release phase. This snapshots the amplitude from t=t_release without using state. This way the release always descends from the correct level.
(Since I'm using floats, I could have used infinity instead of Option, still considering it to avoid the match.)
¹ using the same curves you do, I cribbed off this project to implement them because mine were klunky. ;)
I switched my project to OCaml because DSP is all math and OCaml makes that easy (and super composable.) I may port it back to Rust when I have it working. Anyway, hopefully you can get the gist of it. This code isn't quite finished, but it does the job:
let rec adsr ?(curves=(0.,0.,0.)) at dt sl rt =
let (ac, dc, rc) = curves in
fun tr t ->
let mul = match tr with
| Some tr -> (* release case *)
let self = adsr ~curves:curves at dt sl rt in (* get a copy of this ADSR *)
let delt = t -. tr in (* delt = t_now - t_release *)
if delt < 0. then self None t (* relase is in the future; evaluate up to t_now without release *)
else if delt > rt then 0. (* release is over, output 0.0 *)
else
let level = self None tr in
curve rc level 0. (delt /. rt) (* compute the curve *)
| None ->
if t < at then curve ac 0. 1. (t /. at)
else if t < dt +. at
then
let delt = t -. at in
curve dc 1. sl (delt /. dt)
else sl
in mul
Some plots with curves=(1.0,1.0,1.0) and varying t_release to test the different phases:
Release during sustain:

Release during decay:

Release during attack:

Looking at that last plot I just realized there's a bug. The falloff isn't immediately exponential. (Frustratingly, the previous version I wrote accounted for this and did it right.) Anyway, I updated the code above and here's a new plot:

I hope this helps if you need any help for the design. You might want to consider state instead for performance. I didn't bother because I would have to recurse the first time anyway to create the state and this thing is aready running quite fast even when supersampled at 16x and with a dumb plotting frontend attached to it.
There is a foible. The function blindly returns a value when the release is over so there's no indication that the note is finished. I thought about making it an Option, but instead I plan to track the detla in the voice logic and let it work out the logic. It probably makes more sense to blindly mix the voice output into the stream even after release for the remainder of the chunk and then deallocate it after the chunk is processed instead of checking at each sample.
Peace.
Thanks a lot for this! Will have a proper read through it soon :+1:
Np. And yeah... sorry about the length. When I started I didn't think I'd go on so much.
@smosher Impressive!