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>
39This should do for now.
40*/
41
42pub(crate) mod assets;
43pub mod legacyplayer;
44pub mod note;
45pub mod player;
46pub mod wav;
47pub mod waveform;
48
49pub use legacyplayer::BasicSong;
50pub use note::Note;
51pub use player::{AudioManager, Song};
52pub use waveform::WaveForm;
53pub use BPMChoice::*;
54
55/**
56The BPMChoice is an enum for picking the <b>beats per minute</b> for making songs.<br>
57Usage:
58```
59use rs_audio::*;
60
61let song = Song::new(vec![
62Note { freq: 880.0, dur: 1.0, vol: 0.20, wave: WaveForm::Sine },
63Note { freq: 220.0, dur: 1.0, vol: 0.20, wave: WaveForm::Square },
64Note { freq: 880.0, dur: 1.0, vol: 0.20, wave: WaveForm::Sine },
65Note { freq: 220.0, dur: 1.0, vol: 0.20, wave: WaveForm::Triangle },
66], BPMChoice::Default);
67```
68*/
69#[derive(Debug, Clone)]
70pub enum BPMChoice {
71    Default,
72    Custom(u32),
73}