mirror of
https://github.com/italicsjenga/agb.git
synced 2024-12-23 08:11:33 +11:00
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:
commit
16c1fade94
|
@ -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"] }
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,4 +19,4 @@ proc-macro2 = "1"
|
||||||
quote = "1"
|
quote = "1"
|
||||||
syn = "2"
|
syn = "2"
|
||||||
|
|
||||||
xmrs = "=0.8.1"
|
xmrs = "=0.8.5"
|
||||||
|
|
|
@ -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"
|
||||||
|
|
Loading…
Reference in a new issue