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.
2use cd_da_reader::CdReader;
3
4fn main() -> Result<(), Box<dyn std::error::Error>> {
5    let reader = CdReader::open_default()?;
6    let toc = reader.read_toc()?;
7
8    let first_audio = toc
9        .tracks
10        .iter()
11        .find(|t| t.is_audio)
12        .ok_or("no audio tracks found")?;
13
14    println!("Reading track {}...", first_audio.number);
15    let data = reader.read_track(&toc, first_audio.number)?;
16
17    let wav = CdReader::create_wav(data);
18    let filename = format!("track{:02}.wav", first_audio.number);
19    std::fs::write(&filename, wav)?;
20    println!("Saved {}", filename);
21
22    Ok(())
23}