rs_audio/
lib.rs

1/*!
2# RS-AUDIO
3rs-audio is a Rust library for making retro music programmatically.<br>
4  Currently, it has support for:
5  * Sine waves,
6  * Squares,
7  * Sawtooths,
8  * and Triangles.<br>
9
10This library is MIT licensed. <br>Learn more in our repository: <https://github.com/xshotss/rs-audio/blob/main/LICENSE><br><br>
11## Usage:<br>
12
13To create a default song (to make sure everything is working):
14```
15use rs_audio::*;
16
17let mut audio_manager = AudioManager::new(); // This creates an audio thread which handles audio.
18
19audio_manager.play(Song::default()); // Plays a default song.
20```
21<br>To create custom notes:
22```
23use rs_audio::*;
24
25let mut audio_manager = AudioManager::new();
26
27let mut song = Song::new(vec![
28Note { freq: 880.0, dur: 1.0, vol: 0.20, wave: WaveForm::Sine },
29Note { freq: 220.0, dur: 1.0, vol: 0.20, wave: WaveForm::Square },
30Note { freq: 880.0, dur: 1.0, vol: 0.20, wave: WaveForm::Sine },
31Note { freq: 220.0, dur: 1.0, vol: 0.20, wave: WaveForm::Triangle },
32], BPMChoice::Default);
33
34audio_manager.play(song);
35```
36
37# NOTE
38This priject has recently moved to a new version. Due to drastic changes, I have started rewriting all documentation.<br>
39So some documentation may not be precise enough or just bad. Please report bad documentation to the GitHub repository.
40*/
41
42pub mod note;
43pub mod player;
44pub mod wav;
45pub mod waveform;
46
47pub use note::Note;
48pub use player::{AudioManager, Song};
49pub use waveform::WaveForm;
50pub use BPMChoice::*;
51
52/**
53The BPMChoice is an enum for picking the <b>beats per minute</b> for making songs.<br>
54Usage:
55```
56use rs_audio::*;
57
58let song = Song::new(vec![
59Note { freq: 880.0, dur: 1.0, vol: 0.20, wave: WaveForm::Sine },
60Note { freq: 220.0, dur: 1.0, vol: 0.20, wave: WaveForm::Square },
61Note { freq: 880.0, dur: 1.0, vol: 0.20, wave: WaveForm::Sine },
62Note { freq: 220.0, dur: 1.0, vol: 0.20, wave: WaveForm::Triangle },
63], BPMChoice::Default);
64```
65*/
66#[derive(Debug, Clone)]
67pub enum BPMChoice {
68    Default,
69    Custom(u32),
70}