Crate mod_player

Source
Expand description

§mod_player

mod_player is a crate that reads and plays back mod audio files. The mod_player decodes the audio one sample pair (left,right) at a time that can be streamed to an audio device or a file.

For playback, only two functions are needed;

  • read_mod_file to read the file into a Song structure
  • next_sample to get the next sample

To use the library to decode a mod file and save it to disk ( using the hound audio crate for WAV saving )

use hound;
  
fn main() {
    let spec = hound::WavSpec {
    channels: 2,
        sample_rate: 48100,
        bits_per_sample: 32,
        sample_format: hound::SampleFormat::Float,
    };

    let mut writer = hound::WavWriter::create( "out.wav", spec).unwrap();
    let song = mod_player::read_mod_file("mod_files/BUBBLE_BOBBLE.MOD");
    let mut player_state : mod_player::PlayerState = mod_player::PlayerState::new(
                                song.format.num_channels, spec.sample_rate );
    loop {
        let ( left, right ) = mod_player::next_sample(&song, &mut player_state);
        writer.write_sample( left  );
        writer.write_sample( right  );
        if player_state.song_has_ended || player_state.has_looped {
            break;
        }
    }
 }

Modules§

textout
for printing information about the mod song

Structs§

FormatDescription
The features of the song
Note
Describes what sound sample to play and an effect (if any) that should be applied.
Pattern
PlayerState
Keeps track of all the dynamic state required for playing the song.
Sample
Holds the info and sample data for a sample
Song
Contains the entire mod song

Functions§

next_sample
Calculates the next sample pair (left, right) to be played from the song. The returned samples have the range [-1, 1]
read_mod_file
Reads a module music file and returns a song structure ready for playing