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.1588e3d0
Add MojoHaus - Extra Enforcer Rules to third party7c026fa
Bump mockito.version from 4.6.0 to 4.6.107257fb
Remove always updates policy for snapshot from mock repository827e806
Remove always updates policy for snapshot from mock repository8cca653
Add release-drafterfa8f7f2
[MENFORCER-389] Allow filtering of parent in requireReleaseDepsfd574ec
Bump 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 rebase
will rebase this PR -
@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it -
@dependabot merge
will merge this PR after your CI passes on it -
@dependabot squash and merge
will squash and merge this PR after your CI passes on it -
@dependabot cancel merge
will cancel a previously requested merge and block automerging -
@dependabot reopen
will reopen this PR if it is closed -
@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually -
@dependabot ignore this major version
will 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 version
will 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 dependency
will 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!