Skip to main content

read_first_track/
read_first_track.rs

1/// Reads the first audio track from the default CD drive and saves it as a WAV file.
2mod common;
3
4use cd_da_reader::{CdReader, create_wav};
5
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7    let output_dir = common::fresh_output_dir("read_first_track")?;
8    let reader = CdReader::open_default()?;
9    let toc = reader.read_toc()?;
10
11    let first_audio = toc
12        .tracks
13        .iter()
14        .find(|t| t.is_audio)
15        .ok_or("no audio tracks found")?;
16
17    println!("Reading track {}...", first_audio.number);
18    let data = reader.read_track(&toc, first_audio.number)?;
19
20    let wav = create_wav(data);
21    let output_path = output_dir.join(format!("track{:02}.wav", first_audio.number));
22    std::fs::write(&output_path, wav)?;
23    println!("Saved {}", output_path.display());
24
25    Ok(())
26}