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:
commit
776b771f59
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ pub fn import_audio_bytes(e: &mut Engine, name: &str, bytes: &[u8], path: Option
|
|||
Some(t) => t,
|
||||
None => {
|
||||
let stem = Path::new(name).file_stem().and_then(|x| x.to_str()).unwrap_or("Audio").to_string();
|
||||
s.add_track(TrackKind::Audio, ChannelFormat::for_channels(channels.min(2)), Some(&stem))
|
||||
s.add_track(TrackKind::Audio, ChannelFormat::for_channels(channels), Some(&stem))
|
||||
}
|
||||
};
|
||||
let cid = s.new_clip_id();
|
||||
|
|
|
|||
Loading…
Reference in New Issue