Update Rust crate xmrs to v0.8.5 (#786)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [xmrs](https://codeberg.org/sbechet/xmrs) | dependencies | patch |
`=0.8.1` -> `=0.8.5` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/agbrs/agb).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC4xMjAuMSIsInVwZGF0ZWRJblZlciI6IjM4LjEyMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->
This commit is contained in:
Gwilym Inzani 2024-11-06 10:08:13 +00:00 committed by GitHub
commit 16c1fade94
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 20 additions and 19 deletions

View file

@ -16,4 +16,4 @@ syn = "2"
agb_tracker_interop = { version = "0.21.1", path = "../agb-tracker-interop", default-features = false } agb_tracker_interop = { version = "0.21.1", path = "../agb-tracker-interop", default-features = false }
agb_fixnum = { version = "0.21.1", path = "../../agb-fixnum" } agb_fixnum = { version = "0.21.1", path = "../../agb-fixnum" }
xmrs = { version = "=0.8.1", features = ["std", "import"] } xmrs = { version = "=0.8.5", features = ["std", "import"] }

View file

@ -63,16 +63,17 @@ pub fn parse_module(module: &Module) -> agb_tracker_interop::Track {
let volume = Num::from_f32(sample.volume); let volume = Num::from_f32(sample.volume);
let sample = match &sample.data { let sample = match &sample.data {
SampleDataType::Depth8(depth8) => depth8 SampleDataType::Mono8(depth8) => depth8
.iter() .iter()
.map(|value| *value as u8) .map(|value| *value as u8)
.take(sample_len) .take(sample_len)
.collect::<Vec<_>>(), .collect::<Vec<_>>(),
SampleDataType::Depth16(depth16) => depth16 SampleDataType::Mono16(depth16) => depth16
.iter() .iter()
.map(|sample| (sample >> 8) as i8 as u8) .map(|sample| (sample >> 8) as i8 as u8)
.take(sample_len) .take(sample_len)
.collect::<Vec<_>>(), .collect::<Vec<_>>(),
_ => panic!("Stereo samples not supported"),
}; };
let fadeout = Num::from_f32(instrument.volume_fadeout); let fadeout = Num::from_f32(instrument.volume_fadeout);
@ -652,7 +653,7 @@ static AMIGA_FREQUENCIES: &[u32] = &[
457, 457,
]; ];
#[derive(PartialEq, Eq, Hash, Clone)] #[derive(PartialEq, Eq, Hash, Clone, Debug)]
struct EnvelopeData { struct EnvelopeData {
amounts: Vec<Num<i16, 8>>, amounts: Vec<Num<i16, 8>>,
sustain: Option<usize>, sustain: Option<usize>,
@ -684,30 +685,30 @@ impl EnvelopeData {
let first_point = &e.point[index]; let first_point = &e.point[index];
let second_point = &e.point[index + 1]; let second_point = &e.point[index + 1];
let amount = EnvelopePoint::lerp(first_point, second_point, xm_frame) / 64.0; let amount = EnvelopePoint::lerp(first_point, second_point, xm_frame);
let amount = Num::from_f32(amount); let amount = Num::from_f32(amount);
amounts.push(amount); amounts.push(amount);
} }
let sustain = if e.sustain_enabled { let sustain = if e.sustain_enabled {
Some( Some(Self::envelope_frame_to_gba_frame(
Self::envelope_frame_to_gba_frame(e.point[e.sustain_point as usize].frame, bpm) e.point[e.sustain_point].frame,
as usize, bpm,
) ))
} else { } else {
None None
}; };
let (loop_start, loop_end) = if e.loop_enabled { let (loop_start, loop_end) = if e.loop_enabled {
( (
Some(Self::envelope_frame_to_gba_frame( Some(Self::envelope_frame_to_gba_frame(
e.point[e.loop_start_point as usize].frame, e.point[e.loop_start_point].frame,
bpm, bpm,
) as usize), )),
Some(Self::envelope_frame_to_gba_frame( Some(Self::envelope_frame_to_gba_frame(
e.point[e.loop_end_point as usize].frame, e.point[e.loop_end_point].frame,
bpm, bpm,
) as usize), )),
) )
} else { } else {
(None, None) (None, None)
@ -748,13 +749,13 @@ impl EnvelopeData {
} }
} }
fn envelope_frame_to_gba_frame(envelope_frame: u16, bpm: u32) -> u16 { fn envelope_frame_to_gba_frame(envelope_frame: usize, bpm: u32) -> usize {
// FT2 manual says number of ticks / second = BPM * 0.4 // FT2 manual says number of ticks / second = BPM * 0.4
// somehow this works as a good approximation :/ // somehow this works as a good approximation :/
(envelope_frame as u32 * 250 / bpm) as u16 (envelope_frame as u32 * 250 / bpm) as usize
} }
fn gba_frame_to_envelope_frame(gba_frame: u16, bpm: u32) -> u16 { fn gba_frame_to_envelope_frame(gba_frame: usize, bpm: u32) -> usize {
(gba_frame as u32 * bpm / 250) as u16 (gba_frame as u32 * bpm / 250) as usize
} }
} }

View file

@ -19,4 +19,4 @@ proc-macro2 = "1"
quote = "1" quote = "1"
syn = "2" syn = "2"
xmrs = "=0.8.1" xmrs = "=0.8.5"

View file

@ -13,6 +13,6 @@ agb_tracker = { version = "0.21.1", path = "../agb-tracker", default-features =
agb_fixnum = { version = "0.21.1", path = "../../agb-fixnum" } agb_fixnum = { version = "0.21.1", path = "../../agb-fixnum" }
anyhow = "1" anyhow = "1"
xmrs = "=0.8.1" xmrs = "=0.8.5"
cpal = "0.15" cpal = "0.15"