mirror of
https://github.com/storytold/soundcraft.git
synced 2026-10-28 12:36:47 -06:00
Merge pull request #128 from vbasky/fix/89-surround-import
Import multichannel audio onto a track of the same width.
This commit is contained in:
@@ -389,7 +389,6 @@ mod tests {
|
||||
assert!(res["missing"].as_array().is_some_and(|m| !m.is_empty()), "{res}");
|
||||
let _ = std::fs::remove_dir_all(&dir);
|
||||
}
|
||||
|
||||
fn tone_engine() -> (Engine, u64) {
|
||||
let mut e = Engine::default();
|
||||
e.execute("track.new", &json!({"count": 1, "name": "Tone", "format": "mono"})).unwrap();
|
||||
@@ -485,6 +484,30 @@ mod tests {
|
||||
let _ = std::fs::remove_dir_all(&dir);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn import_surround_creates_a_matching_track() {
|
||||
let channels: Vec<Vec<f32>> = (0..6).map(|ch| vec![0.1 * (ch as f32 + 1.0); 32]).collect();
|
||||
let buf = AudioBuffer { sample_rate: 48_000, channels };
|
||||
let bytes = soundcraft_audio_io::encode(&buf, &EncodeOptions::default()).unwrap();
|
||||
let mut e = Engine::default();
|
||||
let v = crate::io::import_audio_bytes(&mut e, "bed.wav", &bytes, None, None, 0).unwrap();
|
||||
assert_eq!(v["channels"], 6);
|
||||
assert_eq!(e.session().tracks.len(), 1);
|
||||
assert_eq!(e.session().tracks[0].format, ChannelFormat::Surround51);
|
||||
let src = e.session().sources[0].id;
|
||||
let audio = e.session().pool.get(src).unwrap();
|
||||
assert_eq!(audio.buffer.channels.len(), 6);
|
||||
assert!((audio.buffer.channels[5][0] - 0.6).abs() < 1e-3);
|
||||
|
||||
let mut e = Engine::default();
|
||||
e.execute("track.new", &json!({"name": "Bed", "format": "5.1"})).unwrap();
|
||||
let id = e.session().tracks[0].id;
|
||||
crate::io::import_audio_bytes(&mut e, "bed.wav", &bytes, None, Some(id), 0).unwrap();
|
||||
assert_eq!(e.session().tracks.len(), 1);
|
||||
assert_eq!(e.session().tracks[0].format, ChannelFormat::Surround51);
|
||||
assert_eq!(e.session().tracks[0].clips().len(), 1);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn repeated_consolidate_keeps_distinct_audio_files() {
|
||||
let (mut e, track) = tone_engine();
|
||||
|
||||
Reference in New Issue
Block a user