diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6599ab0..b8fdb94 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,3 +64,10 @@ jobs: package: esp-hal-smartled soc: ${{ matrix.device.soc }} target: ${{ matrix.device.target }} + + - name: Check esp-hal-buzzer + uses: ./.github/actions/check-package + with: + package: esp-hal-buzzer + soc: ${{ matrix.device.soc }} + target: ${{ matrix.device.target }} diff --git a/CODEOWNERS b/CODEOWNERS index e0bd866..500fa72 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1 +1,2 @@ /esp-hal-smartled/ @jessebraham +/esp-hal-buzzer/ @AnthonyGrondin diff --git a/esp-hal-buzzer/.cargo/config.toml b/esp-hal-buzzer/.cargo/config.toml new file mode 100644 index 0000000..eda6cee --- /dev/null +++ b/esp-hal-buzzer/.cargo/config.toml @@ -0,0 +1,30 @@ +[alias] +esp32 = "run --release --features=esp32 --target=xtensa-esp32-none-elf" +esp32c2 = "run --release --features=esp32c2 --target=riscv32imc-unknown-none-elf" +esp32c3 = "run --release --features=esp32c3 --target=riscv32imc-unknown-none-elf" +esp32c6 = "run --release --features=esp32c6 --target=riscv32imac-unknown-none-elf" +esp32h2 = "run --release --features=esp32h2 --target=riscv32imac-unknown-none-elf" +esp32s2 = "run --release --features=esp32s2 --target=xtensa-esp32s2-none-elf" +esp32s3 = "run --release --features=esp32s3 --target=xtensa-esp32s3-none-elf" + +[target.'cfg(target_arch = "riscv32")'] +runner = "espflash flash --monitor" +rustflags = [ + "-C", "link-arg=-Tlinkall.x", + "-C", "force-frame-pointers", +] + +[target.'cfg(target_arch = "xtensa")'] +runner = "espflash flash --monitor" +rustflags = [ + # GNU LD + "-C", "link-arg=-Wl,-Tlinkall.x", + "-C", "link-arg=-nostartfiles", + + # LLD + # "-C", "link-arg=-Tlinkall.x", + # "-C", "linker=rust-lld", +] + +[unstable] +build-std = ["core"] diff --git a/esp-hal-buzzer/CHANGELOG.md b/esp-hal-buzzer/CHANGELOG.md new file mode 100644 index 0000000..3765a51 --- /dev/null +++ b/esp-hal-buzzer/CHANGELOG.md @@ -0,0 +1,18 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## Unreleased + +### Added + +### Changed + +### Fixed + +### Removed + +## 0.1.0 - 2024-08-21 - Initial release diff --git a/esp-hal-buzzer/Cargo.toml b/esp-hal-buzzer/Cargo.toml new file mode 100644 index 0000000..1afc5be --- /dev/null +++ b/esp-hal-buzzer/Cargo.toml @@ -0,0 +1,50 @@ +[package] +name = "esp-hal-buzzer" +version = "0.1.0" +edition = "2021" +rust-version = "1.76.0" +description = "Buzzer driver for esp-hal" +repository = "https://github.com/esp-rs/esp-hal-community" +license = "MIT OR Apache-2.0" + +[package.metadata.docs.rs] +features = ["esp32c3"] +targets = ["riscv32imc-unknown-none-elf"] + +[dependencies] +defmt = { version = "0.3.8", optional = true } +document-features = "0.2.10" +esp-hal = "0.20.1" +fugit = "0.3.7" + +[dev-dependencies] +esp-backtrace = { version = "0.14.1", features = [ + "exception-handler", + "panic-handler", + "println", +] } +esp-println = "0.11.0" + +[features] +## Implement `defmt::Format` on certain types. +defmt = ["dep:defmt", "esp-hal/defmt"] + +#! ### Chip Support Feature Flags +## Target the ESP32. +esp32 = ["esp-backtrace/esp32", "esp-hal/esp32", "esp-println/esp32"] +## Target the ESP32-C2. +esp32c2 = ["esp-backtrace/esp32c2", "esp-hal/esp32c2", "esp-println/esp32c2"] +## Target the ESP32-C3. +esp32c3 = ["esp-backtrace/esp32c3", "esp-hal/esp32c3", "esp-println/esp32c3"] +## Target the ESP32-C6. +esp32c6 = ["esp-backtrace/esp32c6", "esp-hal/esp32c6", "esp-println/esp32c6"] +## Target the ESP32-H2. +esp32h2 = ["esp-backtrace/esp32h2", "esp-hal/esp32h2", "esp-println/esp32h2"] +## Target the ESP32-S2. +esp32s2 = ["esp-backtrace/esp32s2", "esp-hal/esp32s2", "esp-println/esp32s2"] +## Target the ESP32-S3. +esp32s3 = ["esp-backtrace/esp32s3", "esp-hal/esp32s3", "esp-println/esp32s3"] + +# Patch until next esp-hal release +[patch.crates-io] +esp-hal = { git = "https://github.com/esp-rs/esp-hal", rev = "a787a13" } diff --git a/esp-hal-buzzer/README.md b/esp-hal-buzzer/README.md new file mode 100644 index 0000000..82d459a --- /dev/null +++ b/esp-hal-buzzer/README.md @@ -0,0 +1,35 @@ +# esp-hal-buzzer + +[![Crates.io](https://img.shields.io/crates/v/esp-hal-buzzer?labelColor=1C2C2E&color=C96329&logo=Rust&style=flat-square)](https://crates.io/crates/esp-hal-buzzer) +[![docs.rs](https://img.shields.io/docsrs/esp-hal-buzzer?labelColor=1C2C2E&color=C96329&logo=rust&style=flat-square)](https://docs.rs/esp-hal-buzzer) +![MSRV](https://img.shields.io/badge/MSRV-1.76-blue?labelColor=1C2C2E&style=flat-square) +![Crates.io](https://img.shields.io/crates/l/esp-hal-buzzer?labelColor=1C2C2E&style=flat-square) +[![Matrix](https://img.shields.io/matrix/esp-rs:matrix.org?label=join%20matrix&labelColor=1C2C2E&color=BEC5C9&logo=matrix&style=flat-square)](https://matrix.to/#/#esp-rs:matrix.org) + +Provides a driver to easily interact with piezo-electric buzzers for `esp-hal`. The crate uses the underlying Ledc driver and provides a user-friendly API. + +A few songs are included in the [songs](./src/songs.rs) module. Contributions are welcome. + +## [Documentation] + +[documentation]: https://docs.rs/esp-hal-buzzer/ + +## Minimum Supported Rust Version (MSRV) + +This crate is guaranteed to compile on stable Rust 1.76 and up. It _might_ +compile with older versions but that may change in any new patch release. + +## License + +Licensed under either of: + +- Apache License, Version 2.0 ([LICENSE-APACHE](../LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) +- MIT license ([LICENSE-MIT](../LICENSE-MIT) or http://opensource.org/licenses/MIT) + +at your option. + +### Contribution + +Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in +the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without +any additional terms or conditions. diff --git a/esp-hal-buzzer/examples/buzzer.rs b/esp-hal-buzzer/examples/buzzer.rs new file mode 100644 index 0000000..435b1dd --- /dev/null +++ b/esp-hal-buzzer/examples/buzzer.rs @@ -0,0 +1,3429 @@ +//! Play songs through a piezo-electric buzzer plugged on GPIO6. +//! +//! This assumes that a piezo-electric buzzer is connected to the pin assigned +//! to `buzzer`. (GPIO6) + +#![no_std] +#![no_main] + +use esp_backtrace as _; +use esp_hal::{ + gpio::Io, + ledc::{channel, timer, LSGlobalClkSource, Ledc}, + prelude::*, +}; +use esp_hal_buzzer::{notes::*, song, Buzzer, ToneValue}; +use esp_println::println; + +#[entry] +fn main() -> ! { + let peripherals = esp_hal::init(esp_hal::Config::default()); + + let io = Io::new(peripherals.GPIO, peripherals.IO_MUX); + + let mut ledc = Ledc::new(peripherals.LEDC); + ledc.set_global_slow_clock(LSGlobalClkSource::APBClk); + + let mut buzzer = Buzzer::new( + &ledc, + timer::Number::Timer0, + channel::Number::Channel1, + io.pins.gpio6, + ); + + buzzer.play_song(DOOM).unwrap(); + buzzer.play_song(FURELISE).unwrap(); + buzzer.play_song(MERRY_CHRISTMAS).unwrap(); + buzzer.play_song(MII_CHANNEL).unwrap(); + buzzer.play_song(NEVER_GONNA_GIVE_YOU_UP).unwrap(); + buzzer.play_song(ODE_TO_JOY).unwrap(); + buzzer.play_song(PACMAN).unwrap(); + buzzer.play_song(STAR_WARS).unwrap(); + buzzer.play_song(SUPER_MARIO_BROS).unwrap(); + buzzer.play_song(TAKE_ON_ME).unwrap(); + buzzer.play_song(TETRIS).unwrap(); + buzzer.play_song(THE_LION_SLEEPS_TONIGHT).unwrap(); + buzzer.play_song(ZELDA_LULLABY).unwrap(); + buzzer.play_song(ZELDA_THEME).unwrap(); + + println!("Done"); + + loop {} +} + +/// Credit: Songs have been adapted from https://github.com/robsoncouto/arduino-songs +pub const DOOM: [ToneValue; 680] = song!( + 225, + [ + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, DOTTED_HALF_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, DOTTED_HALF_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, DOTTED_HALF_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_FS3, DOTTED_SIXTEENTH_NOTE), + (NOTE_D3, DOTTED_SIXTEENTH_NOTE), + (NOTE_B2, DOTTED_SIXTEENTH_NOTE), + (NOTE_A3, DOTTED_SIXTEENTH_NOTE), + (NOTE_FS3, DOTTED_SIXTEENTH_NOTE), + (NOTE_B2, DOTTED_SIXTEENTH_NOTE), + (NOTE_D3, DOTTED_SIXTEENTH_NOTE), + (NOTE_FS3, DOTTED_SIXTEENTH_NOTE), + (NOTE_A3, DOTTED_SIXTEENTH_NOTE), + (NOTE_FS3, DOTTED_SIXTEENTH_NOTE), + (NOTE_D3, DOTTED_SIXTEENTH_NOTE), + (NOTE_B2, DOTTED_SIXTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, DOTTED_HALF_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_B3, DOTTED_SIXTEENTH_NOTE), + (NOTE_G3, DOTTED_SIXTEENTH_NOTE), + (NOTE_E3, DOTTED_SIXTEENTH_NOTE), + (NOTE_G3, DOTTED_SIXTEENTH_NOTE), + (NOTE_B3, DOTTED_SIXTEENTH_NOTE), + (NOTE_E4, DOTTED_SIXTEENTH_NOTE), + (NOTE_G3, DOTTED_SIXTEENTH_NOTE), + (NOTE_B3, DOTTED_SIXTEENTH_NOTE), + (NOTE_E4, DOTTED_SIXTEENTH_NOTE), + (NOTE_B3, DOTTED_SIXTEENTH_NOTE), + (NOTE_G4, DOTTED_SIXTEENTH_NOTE), + (NOTE_B4, DOTTED_SIXTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A3, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_G3, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_F3, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_DS3, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_F3, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A3, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_G3, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_F3, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_DS3, DOTTED_HALF_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A3, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_G3, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_F3, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_DS3, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_F3, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A3, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_G3, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A3, DOTTED_SIXTEENTH_NOTE), + (NOTE_F3, DOTTED_SIXTEENTH_NOTE), + (NOTE_D3, DOTTED_SIXTEENTH_NOTE), + (NOTE_A3, DOTTED_SIXTEENTH_NOTE), + (NOTE_F3, DOTTED_SIXTEENTH_NOTE), + (NOTE_D3, DOTTED_SIXTEENTH_NOTE), + (NOTE_C4, DOTTED_SIXTEENTH_NOTE), + (NOTE_A3, DOTTED_SIXTEENTH_NOTE), + (NOTE_F3, DOTTED_SIXTEENTH_NOTE), + (NOTE_A3, DOTTED_SIXTEENTH_NOTE), + (NOTE_F3, DOTTED_SIXTEENTH_NOTE), + (NOTE_D3, DOTTED_SIXTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, DOTTED_HALF_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, DOTTED_HALF_NOTE), + (NOTE_CS3, EIGHTEENTH_NOTE), + (NOTE_CS3, EIGHTEENTH_NOTE), + (NOTE_CS4, EIGHTEENTH_NOTE), + (NOTE_CS3, EIGHTEENTH_NOTE), + (NOTE_CS3, EIGHTEENTH_NOTE), + (NOTE_B3, EIGHTEENTH_NOTE), + (NOTE_CS3, EIGHTEENTH_NOTE), + (NOTE_CS3, EIGHTEENTH_NOTE), + (NOTE_A3, EIGHTEENTH_NOTE), + (NOTE_CS3, EIGHTEENTH_NOTE), + (NOTE_CS3, EIGHTEENTH_NOTE), + (NOTE_G3, EIGHTEENTH_NOTE), + (NOTE_CS3, EIGHTEENTH_NOTE), + (NOTE_CS3, EIGHTEENTH_NOTE), + (NOTE_GS3, EIGHTEENTH_NOTE), + (NOTE_A3, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_B3, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_A3, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_G3, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_F3, DOTTED_HALF_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_B3, DOTTED_SIXTEENTH_NOTE), + (NOTE_G3, DOTTED_SIXTEENTH_NOTE), + (NOTE_E3, DOTTED_SIXTEENTH_NOTE), + (NOTE_G3, DOTTED_SIXTEENTH_NOTE), + (NOTE_B3, DOTTED_SIXTEENTH_NOTE), + (NOTE_E4, DOTTED_SIXTEENTH_NOTE), + (NOTE_G3, DOTTED_SIXTEENTH_NOTE), + (NOTE_B3, DOTTED_SIXTEENTH_NOTE), + (NOTE_E4, DOTTED_SIXTEENTH_NOTE), + (NOTE_B3, DOTTED_SIXTEENTH_NOTE), + (NOTE_G4, DOTTED_SIXTEENTH_NOTE), + (NOTE_B4, DOTTED_SIXTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, DOTTED_HALF_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_FS3, DOTTED_SIXTEENTH_NOTE), + (NOTE_DS3, DOTTED_SIXTEENTH_NOTE), + (NOTE_B2, DOTTED_SIXTEENTH_NOTE), + (NOTE_FS3, DOTTED_SIXTEENTH_NOTE), + (NOTE_DS3, DOTTED_SIXTEENTH_NOTE), + (NOTE_B2, DOTTED_SIXTEENTH_NOTE), + (NOTE_G3, DOTTED_SIXTEENTH_NOTE), + (NOTE_D3, DOTTED_SIXTEENTH_NOTE), + (NOTE_B2, DOTTED_SIXTEENTH_NOTE), + (NOTE_DS4, DOTTED_SIXTEENTH_NOTE), + (NOTE_DS3, DOTTED_SIXTEENTH_NOTE), + (NOTE_B2, DOTTED_SIXTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, DOTTED_HALF_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E4, DOTTED_SIXTEENTH_NOTE), + (NOTE_B3, DOTTED_SIXTEENTH_NOTE), + (NOTE_G3, DOTTED_SIXTEENTH_NOTE), + (NOTE_G4, DOTTED_SIXTEENTH_NOTE), + (NOTE_E4, DOTTED_SIXTEENTH_NOTE), + (NOTE_G3, DOTTED_SIXTEENTH_NOTE), + (NOTE_B3, DOTTED_SIXTEENTH_NOTE), + (NOTE_D4, DOTTED_SIXTEENTH_NOTE), + (NOTE_E4, DOTTED_SIXTEENTH_NOTE), + (NOTE_G4, DOTTED_SIXTEENTH_NOTE), + (NOTE_E4, DOTTED_SIXTEENTH_NOTE), + (NOTE_G3, DOTTED_SIXTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, DOTTED_HALF_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A3, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_G3, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_F3, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_DS3, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_F3, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A3, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_G3, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A2, EIGHTEENTH_NOTE), + (NOTE_A3, DOTTED_SIXTEENTH_NOTE), + (NOTE_F3, DOTTED_SIXTEENTH_NOTE), + (NOTE_D3, DOTTED_SIXTEENTH_NOTE), + (NOTE_A3, DOTTED_SIXTEENTH_NOTE), + (NOTE_F3, DOTTED_SIXTEENTH_NOTE), + (NOTE_D3, DOTTED_SIXTEENTH_NOTE), + (NOTE_C4, DOTTED_SIXTEENTH_NOTE), + (NOTE_A3, DOTTED_SIXTEENTH_NOTE), + (NOTE_F3, DOTTED_SIXTEENTH_NOTE), + (NOTE_A3, DOTTED_SIXTEENTH_NOTE), + (NOTE_F3, DOTTED_SIXTEENTH_NOTE), + (NOTE_D3, DOTTED_SIXTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, DOTTED_HALF_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, DOTTED_HALF_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, DOTTED_HALF_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_AS2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_B2, EIGHTEENTH_NOTE), + (NOTE_C3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_D3, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_E2, EIGHTEENTH_NOTE), + (NOTE_B3, DOTTED_SIXTEENTH_NOTE), + (NOTE_G3, DOTTED_SIXTEENTH_NOTE), + (NOTE_E3, DOTTED_SIXTEENTH_NOTE), + (NOTE_B2, DOTTED_SIXTEENTH_NOTE), + (NOTE_E3, DOTTED_SIXTEENTH_NOTE), + (NOTE_G3, DOTTED_SIXTEENTH_NOTE), + (NOTE_C4, DOTTED_SIXTEENTH_NOTE), + (NOTE_B3, DOTTED_SIXTEENTH_NOTE), + (NOTE_G3, DOTTED_SIXTEENTH_NOTE), + (NOTE_B3, DOTTED_SIXTEENTH_NOTE), + (NOTE_G3, DOTTED_SIXTEENTH_NOTE), + (NOTE_E3, DOTTED_SIXTEENTH_NOTE) + ] +); + +pub const FURELISE: [ToneValue; 603] = song!( + 80, + [ + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_C4, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_GS4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_C4, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_C4, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_GS4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_C4, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_E5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_G4, SIXTEENTH_NOTE), + (NOTE_F5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_D5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_F4, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_E6, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_C4, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_GS4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_C4, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_E5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_G4, SIXTEENTH_NOTE), + (NOTE_F5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_D5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_F4, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_E6, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_C4, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_GS4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_C4, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_F5, DOTTED_SIXTEENTH_NOTE), + (NOTE_E5, THIRTYSECOND_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_AS5, DOTTED_SIXTEENTH_NOTE), + (NOTE_A5, THIRTYSECOND_NOTE), + (NOTE_A5, SIXTEENTH_NOTE), + (NOTE_G5, SIXTEENTH_NOTE), + (NOTE_F5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_AS4, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_A4, THIRTYSECOND_NOTE), + (NOTE_G4, THIRTYSECOND_NOTE), + (NOTE_A4, THIRTYSECOND_NOTE), + (NOTE_B4, THIRTYSECOND_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_F5, SIXTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_D5, DOTTED_SIXTEENTH_NOTE), + (NOTE_B4, THIRTYSECOND_NOTE), + (NOTE_C5, THIRTYSECOND_NOTE), + (NOTE_G5, THIRTYSECOND_NOTE), + (NOTE_G4, THIRTYSECOND_NOTE), + (NOTE_G5, THIRTYSECOND_NOTE), + (NOTE_A4, THIRTYSECOND_NOTE), + (NOTE_G5, THIRTYSECOND_NOTE), + (NOTE_B4, THIRTYSECOND_NOTE), + (NOTE_G5, THIRTYSECOND_NOTE), + (NOTE_C5, THIRTYSECOND_NOTE), + (NOTE_G5, THIRTYSECOND_NOTE), + (NOTE_D5, THIRTYSECOND_NOTE), + (NOTE_G5, THIRTYSECOND_NOTE), + (NOTE_E5, THIRTYSECOND_NOTE), + (NOTE_G5, THIRTYSECOND_NOTE), + (NOTE_C6, THIRTYSECOND_NOTE), + (NOTE_B5, THIRTYSECOND_NOTE), + (NOTE_A5, THIRTYSECOND_NOTE), + (NOTE_G5, THIRTYSECOND_NOTE), + (NOTE_F5, THIRTYSECOND_NOTE), + (NOTE_E5, THIRTYSECOND_NOTE), + (NOTE_D5, THIRTYSECOND_NOTE), + (NOTE_G5, THIRTYSECOND_NOTE), + (NOTE_F5, THIRTYSECOND_NOTE), + (NOTE_D5, THIRTYSECOND_NOTE), + (NOTE_C5, THIRTYSECOND_NOTE), + (NOTE_G5, THIRTYSECOND_NOTE), + (NOTE_G4, THIRTYSECOND_NOTE), + (NOTE_G5, THIRTYSECOND_NOTE), + (NOTE_A4, THIRTYSECOND_NOTE), + (NOTE_G5, THIRTYSECOND_NOTE), + (NOTE_B4, THIRTYSECOND_NOTE), + (NOTE_G5, THIRTYSECOND_NOTE), + (NOTE_C5, THIRTYSECOND_NOTE), + (NOTE_G5, THIRTYSECOND_NOTE), + (NOTE_D5, THIRTYSECOND_NOTE), + (NOTE_G5, THIRTYSECOND_NOTE), + (NOTE_E5, THIRTYSECOND_NOTE), + (NOTE_G5, THIRTYSECOND_NOTE), + (NOTE_C6, THIRTYSECOND_NOTE), + (NOTE_B5, THIRTYSECOND_NOTE), + (NOTE_A5, THIRTYSECOND_NOTE), + (NOTE_G5, THIRTYSECOND_NOTE), + (NOTE_F5, THIRTYSECOND_NOTE), + (NOTE_E5, THIRTYSECOND_NOTE), + (NOTE_D5, THIRTYSECOND_NOTE), + (NOTE_G5, THIRTYSECOND_NOTE), + (NOTE_F5, THIRTYSECOND_NOTE), + (NOTE_D5, THIRTYSECOND_NOTE), + (NOTE_E5, THIRTYSECOND_NOTE), + (NOTE_F5, THIRTYSECOND_NOTE), + (NOTE_E5, THIRTYSECOND_NOTE), + (NOTE_DS5, THIRTYSECOND_NOTE), + (NOTE_E5, THIRTYSECOND_NOTE), + (NOTE_B4, THIRTYSECOND_NOTE), + (NOTE_E5, THIRTYSECOND_NOTE), + (NOTE_DS5, THIRTYSECOND_NOTE), + (NOTE_E5, THIRTYSECOND_NOTE), + (NOTE_B4, THIRTYSECOND_NOTE), + (NOTE_E5, THIRTYSECOND_NOTE), + (NOTE_DS5, THIRTYSECOND_NOTE), + (NOTE_E5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_C4, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_GS4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_C4, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_E5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_G4, SIXTEENTH_NOTE), + (NOTE_F5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_D5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_F4, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_E6, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_C4, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_GS4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_C4, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_CS5, DOTTED_QUARTER_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_F5, SIXTEENTH_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_QUARTER_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_A4, DOTTED_QUARTER_NOTE), + (NOTE_CS5, DOTTED_QUARTER_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_F5, SIXTEENTH_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_F5, DOTTED_QUARTER_NOTE), + (NOTE_DS5, QUARTER_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_AS4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_GS4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_A4, DOTTED_QUARTER_NOTE), + (NOTE_B4, QUARTER_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_A3, DOTTED_THIRTYSECOND_NOTE), + (NOTE_C4, DOTTED_THIRTYSECOND_NOTE), + (NOTE_E4, DOTTED_THIRTYSECOND_NOTE), + (NOTE_A4, DOTTED_THIRTYSECOND_NOTE), + (NOTE_C5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_E5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_D5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_C5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_B4, DOTTED_THIRTYSECOND_NOTE), + (NOTE_A4, DOTTED_THIRTYSECOND_NOTE), + (NOTE_C5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_E5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_A5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_C6, DOTTED_THIRTYSECOND_NOTE), + (NOTE_E6, DOTTED_THIRTYSECOND_NOTE), + (NOTE_D6, DOTTED_THIRTYSECOND_NOTE), + (NOTE_C6, DOTTED_THIRTYSECOND_NOTE), + (NOTE_B5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_A4, DOTTED_THIRTYSECOND_NOTE), + (NOTE_C5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_E5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_A5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_C6, DOTTED_THIRTYSECOND_NOTE), + (NOTE_E6, DOTTED_THIRTYSECOND_NOTE), + (NOTE_D6, DOTTED_THIRTYSECOND_NOTE), + (NOTE_C6, DOTTED_THIRTYSECOND_NOTE), + (NOTE_B5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_AS5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_A5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_GS5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_G5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_FS5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_F5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_E5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_DS5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_D5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_CS5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_C5, DOTTED_THIRTYSECOND_NOTE), + (NOTE_B4, DOTTED_THIRTYSECOND_NOTE), + (NOTE_AS4, DOTTED_THIRTYSECOND_NOTE), + (NOTE_A4, DOTTED_THIRTYSECOND_NOTE), + (NOTE_GS4, DOTTED_THIRTYSECOND_NOTE), + (NOTE_G4, DOTTED_THIRTYSECOND_NOTE), + (NOTE_FS4, DOTTED_THIRTYSECOND_NOTE), + (NOTE_F4, DOTTED_THIRTYSECOND_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_C4, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_GS4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_C4, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (REST, DOTTED_EIGHTEENTH_NOTE), + (REST, DOTTED_EIGHTEENTH_NOTE), + (NOTE_G4, SIXTEENTH_NOTE), + (NOTE_F5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (REST, EIGHTEENTH_NOTE), + (REST, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_B4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_E6, DOTTED_EIGHTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_C4, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_GS4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (REST, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_E5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_C4, SIXTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E4, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_QUARTER_NOTE) + ] +); + +pub const MERRY_CHRISTMAS: [ToneValue; 195] = song!( + 140, + [ + (NOTE_C5, QUARTER_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_G5, QUARTER_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_A5, QUARTER_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_AS5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_G5, QUARTER_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_F5, HALF_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_G5, QUARTER_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_A5, QUARTER_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_AS5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_G5, QUARTER_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_F5, HALF_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_E5, HALF_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_C5, HALF_NOTE), + (NOTE_A5, QUARTER_NOTE), + (NOTE_AS5, QUARTER_NOTE), + (NOTE_A5, QUARTER_NOTE), + (NOTE_G5, QUARTER_NOTE), + (NOTE_C6, QUARTER_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_G5, QUARTER_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_F5, HALF_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_G5, QUARTER_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_A5, QUARTER_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_AS5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_G5, QUARTER_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_F5, HALF_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_E5, HALF_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_C5, HALF_NOTE), + (NOTE_A5, QUARTER_NOTE), + (NOTE_AS5, QUARTER_NOTE), + (NOTE_A5, QUARTER_NOTE), + (NOTE_G5, QUARTER_NOTE), + (NOTE_C6, QUARTER_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_G5, QUARTER_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_F5, HALF_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_G5, QUARTER_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_A5, QUARTER_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_AS5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_G5, QUARTER_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_F5, HALF_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_G5, QUARTER_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_A5, QUARTER_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_AS5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_G5, QUARTER_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_F5, HALF_NOTE), + (REST, QUARTER_NOTE) + ] +); + +pub const MII_CHANNEL: [ToneValue; 286] = song!( + 114, + [ + (NOTE_FS4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_FS4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_CS4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_FS4, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_QUARTER_NOTE), + (NOTE_DS5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (NOTE_GS4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_FS4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_GS4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_FS4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (NOTE_DS4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_CS4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_FS4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_FS4, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_E5, HALF_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_CS4, QUARTER_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_CS4, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_FS4, EIGHTEENTH_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_B3, QUARTER_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_B3, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (REST, QUARTER_NOTE), + (NOTE_AS4, QUARTER_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (REST, HALF_NOTE), + (NOTE_A3, QUARTER_NOTE), + (NOTE_AS3, QUARTER_NOTE), + (NOTE_A3, DOTTED_QUARTER_NOTE), + (NOTE_A3, EIGHTEENTH_NOTE), + (NOTE_A3, HALF_NOTE), + (REST, QUARTER_NOTE), + (NOTE_A3, EIGHTEENTH_NOTE), + (NOTE_AS3, EIGHTEENTH_NOTE), + (NOTE_A3, EIGHTEENTH_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_A3, DOTTED_QUARTER_NOTE), + (NOTE_A3, EIGHTEENTH_NOTE), + (NOTE_A3, HALF_NOTE), + (REST, HALF_NOTE), + (NOTE_B3, QUARTER_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_CS4, DOTTED_QUARTER_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_CS4, HALF_NOTE), + (REST, QUARTER_NOTE), + (NOTE_CS4, EIGHTEENTH_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_CS4, EIGHTEENTH_NOTE), + (NOTE_GS4, QUARTER_NOTE), + (NOTE_DS4, EIGHTEENTH_NOTE), + (NOTE_CS4, DOTTED_QUARTER_NOTE), + (NOTE_DS4, EIGHTEENTH_NOTE), + (NOTE_B3, NOTE), + (NOTE_E4, QUARTER_NOTE), + (NOTE_E4, QUARTER_NOTE), + (NOTE_E4, QUARTER_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_FS4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_FS4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_CS4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_FS4, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_QUARTER_NOTE), + (NOTE_DS5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (NOTE_GS4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_FS4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_GS4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_FS4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (NOTE_DS4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_CS4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_FS4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_FS4, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_E5, HALF_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_CS4, QUARTER_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_CS4, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_FS4, EIGHTEENTH_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_B3, QUARTER_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_B3, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (REST, QUARTER_NOTE), + (NOTE_AS4, QUARTER_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (REST, HALF_NOTE), + (NOTE_A3, QUARTER_NOTE), + (NOTE_AS3, QUARTER_NOTE), + (NOTE_A3, DOTTED_QUARTER_NOTE), + (NOTE_A3, EIGHTEENTH_NOTE), + (NOTE_A3, HALF_NOTE), + (REST, QUARTER_NOTE), + (NOTE_A3, EIGHTEENTH_NOTE), + (NOTE_AS3, EIGHTEENTH_NOTE), + (NOTE_A3, EIGHTEENTH_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_A3, DOTTED_QUARTER_NOTE), + (NOTE_A3, EIGHTEENTH_NOTE), + (NOTE_A3, HALF_NOTE), + (REST, HALF_NOTE), + (NOTE_B3, QUARTER_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_CS4, DOTTED_QUARTER_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_CS4, HALF_NOTE), + (REST, QUARTER_NOTE), + (NOTE_CS4, EIGHTEENTH_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_CS4, EIGHTEENTH_NOTE), + (NOTE_GS4, QUARTER_NOTE), + (NOTE_DS4, EIGHTEENTH_NOTE), + (NOTE_CS4, DOTTED_QUARTER_NOTE), + (NOTE_DS4, EIGHTEENTH_NOTE), + (NOTE_B3, NOTE), + (NOTE_E4, QUARTER_NOTE), + (NOTE_E4, QUARTER_NOTE), + (NOTE_E4, QUARTER_NOTE), + (REST, EIGHTEENTH_NOTE) + ] +); + +pub const NEVER_GONNA_GIVE_YOU_UP: [ToneValue; 340] = song!( + 114, + [ + (NOTE_D5, DOTTED_QUARTER_NOTE), + (NOTE_E5, DOTTED_QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_E5, DOTTED_QUARTER_NOTE), + (NOTE_FS5, DOTTED_QUARTER_NOTE), + (NOTE_A5, SIXTEENTH_NOTE), + (NOTE_G5, SIXTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_D5, DOTTED_QUARTER_NOTE), + (NOTE_E5, DOTTED_QUARTER_NOTE), + (NOTE_A4, HALF_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_D5, DOTTED_QUARTER_NOTE), + (NOTE_E5, DOTTED_QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_E5, DOTTED_QUARTER_NOTE), + (NOTE_FS5, DOTTED_QUARTER_NOTE), + (NOTE_A5, SIXTEENTH_NOTE), + (NOTE_G5, SIXTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_D5, DOTTED_QUARTER_NOTE), + (NOTE_E5, DOTTED_QUARTER_NOTE), + (NOTE_A4, HALF_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (REST, QUARTER_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_CS5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_A4, HALF_NOTE), + (REST, QUARTER_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_B4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_QUARTER_NOTE), + (REST, QUARTER_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_A4, DOTTED_QUARTER_NOTE), + (REST, QUARTER_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (REST, QUARTER_NOTE), + (NOTE_D5, HALF_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (REST, HALF_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_QUARTER_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_FS5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_FS5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_QUARTER_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_E5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_D5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_CS5, SIXTEENTH_NOTE), + (NOTE_B4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_CS5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_D5, HALF_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_FS5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_FS5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_QUARTER_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_A5, QUARTER_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_D5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_CS5, SIXTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_CS5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_D5, HALF_NOTE), + (REST, QUARTER_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (REST, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_A4, DOTTED_QUARTER_NOTE), + (REST, QUARTER_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_A4, DOTTED_QUARTER_NOTE), + (REST, QUARTER_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (REST, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_FS5, QUARTER_NOTE), + (NOTE_E5, DOTTED_QUARTER_NOTE), + (NOTE_D5, HALF_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (REST, DOTTED_QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_QUARTER_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_FS5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_FS5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_QUARTER_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_E5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_D5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_CS5, SIXTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_CS5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_D5, HALF_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_FS5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_FS5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_QUARTER_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_A5, QUARTER_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_D5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_CS5, SIXTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_CS5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_D5, HALF_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_FS5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_FS5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_QUARTER_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_A5, QUARTER_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_D5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_CS5, SIXTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_CS5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_D5, HALF_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_FS5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_FS5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_QUARTER_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_A5, QUARTER_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_D5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_CS5, SIXTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_CS5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_D5, HALF_NOTE), + (REST, QUARTER_NOTE) + ] +); + +pub const ODE_TO_JOY: [ToneValue; 62] = song!( + 114, + [ + (NOTE_E4, QUARTER_NOTE), + (NOTE_E4, QUARTER_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_E4, QUARTER_NOTE), + (NOTE_D4, QUARTER_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_D4, QUARTER_NOTE), + (NOTE_E4, QUARTER_NOTE), + (NOTE_E4, DOTTED_QUARTER_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_D4, HALF_NOTE), + (NOTE_E4, QUARTER_NOTE), + (NOTE_E4, QUARTER_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_E4, QUARTER_NOTE), + (NOTE_D4, QUARTER_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_D4, QUARTER_NOTE), + (NOTE_E4, QUARTER_NOTE), + (NOTE_D4, DOTTED_QUARTER_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_C4, HALF_NOTE), + (NOTE_D4, QUARTER_NOTE), + (NOTE_D4, QUARTER_NOTE), + (NOTE_E4, QUARTER_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_D4, QUARTER_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_E4, QUARTER_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_D4, QUARTER_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_E4, QUARTER_NOTE), + (NOTE_D4, QUARTER_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_D4, QUARTER_NOTE), + (NOTE_G3, HALF_NOTE), + (NOTE_E4, QUARTER_NOTE), + (NOTE_E4, QUARTER_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_E4, QUARTER_NOTE), + (NOTE_D4, QUARTER_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_D4, QUARTER_NOTE), + (NOTE_E4, QUARTER_NOTE), + (NOTE_D4, DOTTED_QUARTER_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_C4, HALF_NOTE) + ] +); + +pub const PACMAN: [ToneValue; 31] = song!( + 105, + [ + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_B5, SIXTEENTH_NOTE), + (NOTE_FS5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_B5, THIRTYSECOND_NOTE), + (NOTE_FS5, DOTTED_SIXTEENTH_NOTE), + (NOTE_DS5, EIGHTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_C6, SIXTEENTH_NOTE), + (NOTE_G6, SIXTEENTH_NOTE), + (NOTE_E6, SIXTEENTH_NOTE), + (NOTE_C6, THIRTYSECOND_NOTE), + (NOTE_G6, DOTTED_SIXTEENTH_NOTE), + (NOTE_E6, EIGHTEENTH_NOTE), + (NOTE_B4, SIXTEENTH_NOTE), + (NOTE_B5, SIXTEENTH_NOTE), + (NOTE_FS5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_B5, THIRTYSECOND_NOTE), + (NOTE_FS5, DOTTED_SIXTEENTH_NOTE), + (NOTE_DS5, EIGHTEENTH_NOTE), + (NOTE_DS5, THIRTYSECOND_NOTE), + (NOTE_E5, THIRTYSECOND_NOTE), + (NOTE_F5, THIRTYSECOND_NOTE), + (NOTE_F5, THIRTYSECOND_NOTE), + (NOTE_FS5, THIRTYSECOND_NOTE), + (NOTE_G5, THIRTYSECOND_NOTE), + (NOTE_G5, THIRTYSECOND_NOTE), + (NOTE_GS5, THIRTYSECOND_NOTE), + (NOTE_A5, SIXTEENTH_NOTE), + (NOTE_B5, EIGHTEENTH_NOTE) + ] +); + +pub const STAR_WARS: [ToneValue; 88] = song!( + 108, + [ + (NOTE_AS4, EIGHTEENTH_NOTE), + (NOTE_AS4, EIGHTEENTH_NOTE), + (NOTE_AS4, EIGHTEENTH_NOTE), + (NOTE_F5, HALF_NOTE), + (NOTE_C6, HALF_NOTE), + (NOTE_AS5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F6, HALF_NOTE), + (NOTE_C6, QUARTER_NOTE), + (NOTE_AS5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F6, HALF_NOTE), + (NOTE_C6, QUARTER_NOTE), + (NOTE_AS5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_AS5, EIGHTEENTH_NOTE), + (NOTE_G5, HALF_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_F5, HALF_NOTE), + (NOTE_C6, HALF_NOTE), + (NOTE_AS5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F6, HALF_NOTE), + (NOTE_C6, QUARTER_NOTE), + (NOTE_AS5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F6, HALF_NOTE), + (NOTE_C6, QUARTER_NOTE), + (NOTE_AS5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_AS5, EIGHTEENTH_NOTE), + (NOTE_G5, HALF_NOTE), + (NOTE_C5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_D5, DOTTED_QUARTER_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_AS5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_G5, QUARTER_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_C5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_D5, DOTTED_QUARTER_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_AS5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_C6, DOTTED_EIGHTEENTH_NOTE), + (NOTE_G5, SIXTEENTH_NOTE), + (NOTE_G5, HALF_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, DOTTED_QUARTER_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_AS5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_G5, QUARTER_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_C6, DOTTED_EIGHTEENTH_NOTE), + (NOTE_C6, SIXTEENTH_NOTE), + (NOTE_F6, QUARTER_NOTE), + (NOTE_DS6, EIGHTEENTH_NOTE), + (NOTE_CS6, QUARTER_NOTE), + (NOTE_C6, EIGHTEENTH_NOTE), + (NOTE_AS5, QUARTER_NOTE), + (NOTE_GS5, EIGHTEENTH_NOTE), + (NOTE_G5, QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_C6, NOTE) + ] +); + +pub const SUPER_MARIO_BROS: [ToneValue; 321] = song!( + 200, + [ + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_G5, QUARTER_NOTE), + (REST, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (NOTE_C5, DOTTED_QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (NOTE_E4, DOTTED_QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_B4, QUARTER_NOTE), + (NOTE_AS4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_G5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A5, QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_B4, DOTTED_QUARTER_NOTE), + (NOTE_C5, DOTTED_QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (NOTE_E4, DOTTED_QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_B4, QUARTER_NOTE), + (NOTE_AS4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_G5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A5, QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_B4, DOTTED_QUARTER_NOTE), + (REST, QUARTER_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_DS5, QUARTER_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_GS4, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (NOTE_DS5, QUARTER_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_D5, DOTTED_QUARTER_NOTE), + (NOTE_C5, HALF_NOTE), + (REST, HALF_NOTE), + (REST, QUARTER_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_DS5, QUARTER_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_GS4, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (NOTE_DS5, QUARTER_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_D5, DOTTED_QUARTER_NOTE), + (NOTE_C5, HALF_NOTE), + (REST, HALF_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_G4, HALF_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_G4, HALF_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_G5, QUARTER_NOTE), + (REST, QUARTER_NOTE), + (NOTE_G4, QUARTER_NOTE), + (REST, QUARTER_NOTE), + (NOTE_C5, DOTTED_QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (NOTE_E4, DOTTED_QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_B4, QUARTER_NOTE), + (NOTE_AS4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_G5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A5, QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_B4, DOTTED_QUARTER_NOTE), + (NOTE_C5, DOTTED_QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (NOTE_E4, DOTTED_QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_B4, QUARTER_NOTE), + (NOTE_AS4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_G5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A5, QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_B4, DOTTED_QUARTER_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (NOTE_GS4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_A4, HALF_NOTE), + (NOTE_D5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_G5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_F5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_G4, HALF_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (NOTE_GS4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_A4, HALF_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_F5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_D5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_E4, QUARTER_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_C4, HALF_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (NOTE_GS4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_A4, HALF_NOTE), + (NOTE_D5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_G5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_F5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_G4, HALF_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (NOTE_GS4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_A4, HALF_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_F5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_D5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_E4, QUARTER_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_C4, HALF_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_G4, HALF_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_G5, QUARTER_NOTE), + (REST, QUARTER_NOTE), + (NOTE_G4, QUARTER_NOTE), + (REST, QUARTER_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (NOTE_GS4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_A4, HALF_NOTE), + (NOTE_D5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_G5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_F5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_G4, HALF_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (REST, QUARTER_NOTE), + (NOTE_GS4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_A4, HALF_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_F5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_D5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_E4, QUARTER_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_C4, HALF_NOTE), + (NOTE_C5, DOTTED_QUARTER_NOTE), + (NOTE_G4, DOTTED_QUARTER_NOTE), + (NOTE_E4, QUARTER_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_B4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_GS4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_AS4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_GS4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_E4, DOTTED_HALF_NOTE) + ] +); + +pub const TAKE_ON_ME: [ToneValue; 128] = song!( + 140, + [ + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_GS5, EIGHTEENTH_NOTE), + (NOTE_GS5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_B5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_GS5, EIGHTEENTH_NOTE), + (NOTE_GS5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_B5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_GS5, EIGHTEENTH_NOTE), + (NOTE_GS5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_B5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_GS5, EIGHTEENTH_NOTE), + (NOTE_GS5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_B5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_A5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE), + (NOTE_FS5, EIGHTEENTH_NOTE), + (NOTE_E5, EIGHTEENTH_NOTE) + ] +); + +pub const TETRIS: [ToneValue; 99] = song!( + 144, + [ + (NOTE_E5, QUARTER_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_B4, DOTTED_QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, DOTTED_QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_A5, QUARTER_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_B4, QUARTER_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (REST, QUARTER_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_B4, DOTTED_QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, DOTTED_QUARTER_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_A5, QUARTER_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_E5, DOTTED_QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_D5, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_B4, QUARTER_NOTE), + (NOTE_B4, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (REST, QUARTER_NOTE), + (NOTE_E5, HALF_NOTE), + (NOTE_C5, HALF_NOTE), + (NOTE_D5, HALF_NOTE), + (NOTE_B4, HALF_NOTE), + (NOTE_C5, HALF_NOTE), + (NOTE_A4, HALF_NOTE), + (NOTE_GS4, HALF_NOTE), + (NOTE_B4, QUARTER_NOTE), + (REST, EIGHTEENTH_NOTE), + (NOTE_E5, HALF_NOTE), + (NOTE_C5, HALF_NOTE), + (NOTE_D5, HALF_NOTE), + (NOTE_B4, HALF_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_E5, QUARTER_NOTE), + (NOTE_A5, HALF_NOTE), + (NOTE_GS5, HALF_NOTE) + ] +); + +pub const THE_LION_SLEEPS_TONIGHT: [ToneValue; 301] = song!( + 122, + [ + (NOTE_F4, QUARTER_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_AS4, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_C4, NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_AS4, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_C4, DOTTED_HALF_NOTE), + (REST, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_AS4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_AS4, SIXTEENTH_NOTE), + (NOTE_AS4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_AS4, SIXTEENTH_NOTE), + (NOTE_AS4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_AS4, SIXTEENTH_NOTE), + (NOTE_AS4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_AS4, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_G4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_G4, SIXTEENTH_NOTE), + (NOTE_G4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_G4, SIXTEENTH_NOTE), + (NOTE_G4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_G4, SIXTEENTH_NOTE), + (NOTE_G4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_G4, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_AS4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_AS4, SIXTEENTH_NOTE), + (NOTE_AS4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_AS4, SIXTEENTH_NOTE), + (NOTE_AS4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_AS4, SIXTEENTH_NOTE), + (NOTE_AS4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_AS4, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_G4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_G4, SIXTEENTH_NOTE), + (NOTE_G4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_G4, SIXTEENTH_NOTE), + (NOTE_G4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_G4, SIXTEENTH_NOTE), + (NOTE_G4, DOTTED_EIGHTEENTH_NOTE), + (NOTE_G4, SIXTEENTH_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_AS4, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_AS4, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, NOTE), + (NOTE_C5, NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_AS4, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_AS4, HALF_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_C4, NOTE), + (REST, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_D4, NOTE), + (REST, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_D4, NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_AS4, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_AS4, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, NOTE), + (NOTE_C5, NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_AS4, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_AS4, HALF_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_C4, NOTE), + (REST, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_D4, NOTE), + (REST, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_D4, NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_AS4, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_C4, NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_AS4, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_AS4, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, NOTE), + (NOTE_C5, NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_AS4, EIGHTEENTH_NOTE), + (NOTE_C5, EIGHTEENTH_NOTE), + (NOTE_AS4, HALF_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_C4, NOTE), + (REST, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_D4, NOTE), + (REST, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_D4, NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_A4, EIGHTEENTH_NOTE), + (NOTE_AS4, QUARTER_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_G4, EIGHTEENTH_NOTE), + (NOTE_A4, QUARTER_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_C4, NOTE) + ] +); + +pub const ZELDA_LULLABY: [ToneValue; 48] = song!( + 108, + [ + (NOTE_E4, HALF_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_D4, HALF_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_E4, HALF_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_D4, DOTTED_HALF_NOTE), + (NOTE_E4, HALF_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_D5, HALF_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_G4, HALF_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_D4, DOTTED_HALF_NOTE), + (NOTE_E4, HALF_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_D4, HALF_NOTE), + (NOTE_C4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_E4, HALF_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_D4, DOTTED_HALF_NOTE), + (NOTE_E4, HALF_NOTE), + (NOTE_G4, QUARTER_NOTE), + (NOTE_D5, HALF_NOTE), + (NOTE_C5, QUARTER_NOTE), + (NOTE_G4, HALF_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_C4, HALF_NOTE), + (NOTE_F4, HALF_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_D4, EIGHTEENTH_NOTE), + (NOTE_A3, HALF_NOTE), + (NOTE_G4, HALF_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_E4, EIGHTEENTH_NOTE), + (NOTE_C4, QUARTER_NOTE), + (NOTE_F4, QUARTER_NOTE), + (NOTE_C5, DOTTED_HALF_NOTE) + ] +); + +pub const ZELDA_THEME: [ToneValue; 110] = song!( + 88, + [ + (NOTE_AS4, DOTTED_HALF_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_AS4, EIGHTEENTH_NOTE), + (NOTE_GS4, SIXTEENTH_NOTE), + (NOTE_FS4, SIXTEENTH_NOTE), + (NOTE_GS4, DOTTED_HALF_NOTE), + (NOTE_AS4, DOTTED_HALF_NOTE), + (NOTE_FS4, EIGHTEENTH_NOTE), + (NOTE_FS4, EIGHTEENTH_NOTE), + (NOTE_AS4, EIGHTEENTH_NOTE), + (NOTE_A4, SIXTEENTH_NOTE), + (NOTE_G4, SIXTEENTH_NOTE), + (NOTE_A4, DOTTED_HALF_NOTE), + (REST, NOTE), + (NOTE_AS4, QUARTER_NOTE), + (NOTE_F4, DOTTED_QUARTER_NOTE), + (NOTE_AS4, EIGHTEENTH_NOTE), + (NOTE_AS4, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_F5, HALF_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_FS5, SIXTEENTH_NOTE), + (NOTE_GS5, SIXTEENTH_NOTE), + (NOTE_AS5, DOTTED_HALF_NOTE), + (NOTE_AS5, EIGHTEENTH_NOTE), + (NOTE_AS5, EIGHTEENTH_NOTE), + (NOTE_GS5, EIGHTEENTH_NOTE), + (NOTE_FS5, SIXTEENTH_NOTE), + (NOTE_GS5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_FS5, SIXTEENTH_NOTE), + (NOTE_F5, HALF_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_DS5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_F5, SIXTEENTH_NOTE), + (NOTE_FS5, HALF_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_DS5, EIGHTEENTH_NOTE), + (NOTE_CS5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_F5, HALF_NOTE), + (NOTE_DS5, EIGHTEENTH_NOTE), + (NOTE_CS5, EIGHTEENTH_NOTE), + (NOTE_C5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_E5, HALF_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F5, SIXTEENTH_NOTE), + (NOTE_F4, SIXTEENTH_NOTE), + (NOTE_F4, SIXTEENTH_NOTE), + (NOTE_F4, SIXTEENTH_NOTE), + (NOTE_F4, SIXTEENTH_NOTE), + (NOTE_F4, SIXTEENTH_NOTE), + (NOTE_F4, SIXTEENTH_NOTE), + (NOTE_F4, SIXTEENTH_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_F4, SIXTEENTH_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_AS4, QUARTER_NOTE), + (NOTE_F4, DOTTED_QUARTER_NOTE), + (NOTE_AS4, EIGHTEENTH_NOTE), + (NOTE_AS4, SIXTEENTH_NOTE), + (NOTE_C5, SIXTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_DS5, SIXTEENTH_NOTE), + (NOTE_F5, HALF_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_F5, EIGHTEENTH_NOTE), + (NOTE_FS5, SIXTEENTH_NOTE), + (NOTE_GS5, SIXTEENTH_NOTE), + (NOTE_AS5, DOTTED_HALF_NOTE), + (NOTE_CS6, QUARTER_NOTE), + (NOTE_C6, QUARTER_NOTE), + (NOTE_A5, HALF_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_FS5, DOTTED_HALF_NOTE), + (NOTE_AS5, QUARTER_NOTE), + (NOTE_A5, QUARTER_NOTE), + (NOTE_F5, HALF_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_FS5, DOTTED_HALF_NOTE), + (NOTE_AS5, QUARTER_NOTE), + (NOTE_A5, QUARTER_NOTE), + (NOTE_F5, HALF_NOTE), + (NOTE_D5, QUARTER_NOTE), + (NOTE_DS5, DOTTED_HALF_NOTE), + (NOTE_FS5, QUARTER_NOTE), + (NOTE_F5, QUARTER_NOTE), + (NOTE_CS5, HALF_NOTE), + (NOTE_AS4, QUARTER_NOTE), + (NOTE_C5, DOTTED_EIGHTEENTH_NOTE), + (NOTE_D5, SIXTEENTH_NOTE), + (NOTE_E5, HALF_NOTE), + (NOTE_G5, EIGHTEENTH_NOTE), + (NOTE_F5, SIXTEENTH_NOTE), + (NOTE_F4, SIXTEENTH_NOTE), + (NOTE_F4, SIXTEENTH_NOTE), + (NOTE_F4, SIXTEENTH_NOTE), + (NOTE_F4, SIXTEENTH_NOTE), + (NOTE_F4, SIXTEENTH_NOTE), + (NOTE_F4, SIXTEENTH_NOTE), + (NOTE_F4, SIXTEENTH_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE), + (NOTE_F4, SIXTEENTH_NOTE), + (NOTE_F4, EIGHTEENTH_NOTE) + ] +); diff --git a/esp-hal-buzzer/src/lib.rs b/esp-hal-buzzer/src/lib.rs new file mode 100644 index 0000000..334d5dc --- /dev/null +++ b/esp-hal-buzzer/src/lib.rs @@ -0,0 +1,362 @@ +//! # Buzzer +//! +//! ## Overview +//! This driver provides an abstraction over LEDC to drive a piezo-electric +//! buzzer through a user-friendly API. +//! +//! The [songs] module contains pre-programmed songs to play through the buzzer. +//! ## Example +//! +//! ```rust,ignore +//! let io = Io::new(peripherals.GPIO, peripherals.IO_MUX); +//! +//! let mut ledc = Ledc::new(peripherals.LEDC, &clocks); +//! ledc.set_global_slow_clock(LSGlobalClkSource::APBClk); +//! +//! let mut buzzer = Buzzer::new( +//! &ledc, +//! timer::Number::Timer0, +//! channel::Number::Channel1, +//! io.pins.gpio6, +//! &clocks, +//! ); +//! +//! // Play a 1000Hz frequency +//! buzzer.play(1000).unwrap() +//! ``` +//! +//! ## Feature Flags +#![doc = document_features::document_features!()] +#![doc(html_logo_url = "https://avatars.githubusercontent.com/u/46717278")] +#![deny(missing_docs)] +#![no_std] + +use core::{fmt::Debug, ops::DerefMut}; + +use esp_hal::{ + clock::Clocks, + delay::Delay, + gpio::{AnyPin, Level, Output, OutputPin, Pin}, + ledc::{ + channel::{self, Channel, ChannelIFace}, + timer::{self, Timer, TimerHW, TimerIFace, TimerSpeed}, + Ledc, LowSpeed, + }, + peripheral::{Peripheral, PeripheralRef}, +}; +use fugit::RateExtU32; + +pub mod notes; + +/// Errors from Buzzer +#[derive(Debug)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] +pub enum Error { + /// Errors from [channel::Error] + Channel(channel::Error), + + /// Errors from [timer::Error] + Timer(timer::Error), + + /// Error when the volume pin isn't set and we try to use it + VolumeNotSet, + + /// When the volume level is out of range. Either too low or too high. + VolumeOutOfRange, +} + +/// Converts [channel::Error] into [self::Error] +impl From for Error { + fn from(error: channel::Error) -> Self { + Error::Channel(error) + } +} + +/// Converts [timer::Error] into [self::Error] +impl From for Error { + fn from(error: timer::Error) -> Self { + Error::Timer(error) + } +} + +/// Represents a tone value to play through the buzzer +pub struct ToneValue { + /// Frequency of the tone in Hz + /// *Use 0 for a silent tone* + pub frequency: u32, + + /// Duration for the frequency in ms + pub duration: u32, +} + +/// Represents different volume strategies for the buzzer. +/// +/// - [VolumeType::OnOff] is a simple on or off volume. It's similar as using +/// `.mute()` except that the volume control is on a second pin independent of +/// the buzzer. +/// +/// - [VolumeType::Duty] uses the duty as the volume control. It acts like a PWM +/// by switching the power on and off. This may require extra logic gates in +/// the circuit. +#[derive(Debug)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] +pub enum VolumeType { + /// An On / Off based volume + OnOff, + + /// A duty based volume where 0% is the lowest and 100% the highest. + Duty, +} + +/// Volume configuration for the buzzer +struct Volume { + /// Output pin for the volume + volume_pin: AnyPin, + + /// Type of the volume + volume_type: VolumeType, + + /// Volume level + /// + /// For [VolumeType::OnOff], should be 0 for Off, or 1 or more for On + /// For [VolumeType::Duty], should be between 0 and 100. + level: u8, +} + +/// A buzzer instance driven by Ledc +pub struct Buzzer<'a, S: TimerSpeed, O: OutputPin> { + timer: Timer<'a, S>, + channel_number: channel::Number, + output_pin: PeripheralRef<'a, O>, + delay: Delay, + volume: Option, +} + +impl<'a, S: TimerSpeed, O: OutputPin + Peripheral

> Buzzer<'a, S, O> +where + S: TimerSpeed, + Timer<'a, S>: TimerHW, + Timer<'a, S>: TimerIFace, +{ + /// Create a new buzzer for the given pin + pub fn new( + ledc: &'a Ledc, + timer_number: timer::Number, + channel_number: channel::Number, + output_pin: impl Peripheral

+ 'a, + ) -> Self { + let timer = ledc.get_timer(timer_number); + Self { + timer, + channel_number, + output_pin: output_pin.into_ref(), + delay: Delay::new(), + volume: None::, + } + } + + /// Add a volume control for the buzzer. + pub fn with_volume( + mut self, + volume_pin: impl Peripheral

+ Pin + 'a, + volume_type: VolumeType, + ) -> Self { + self.volume = Some(Volume { + volume_pin: volume_pin.degrade(), + volume_type, + level: 50, + }); + + self + } + + /// Set the volume of the buzzer + /// + /// For [VolumeType::Duty], the level should be between 0 and 100. + /// For [VolumeType::OnOff], it will only be mute on 0 and playing on 1 or + /// more + pub fn set_volume(&mut self, level: u8) -> Result<(), Error> { + if let Some(ref mut volume) = self.volume { + match volume.volume_type { + VolumeType::OnOff => { + // Only turn off when level is set to 0, else set to high + Output::new( + unsafe { volume.volume_pin.clone_unchecked() }, + if level != 0 { Level::High } else { Level::Low }, + ); + Ok(()) + } + VolumeType::Duty => { + match level { + 0..=99 => { + volume.level = level; + + // Put a dummy config in the timer if it's not already configured + if !self.timer.is_configured() { + self.timer.configure(timer::config::Config { + duty: timer::config::Duty::Duty11Bit, + clock_source: timer::LSClockSource::APBClk, + frequency: 20_000.Hz(), + })?; + } + + let mut channel = Channel::new(self.channel_number, unsafe { + volume.volume_pin.clone_unchecked() + }); + channel + .configure(channel::config::Config { + timer: &self.timer, + duty_pct: level, + pin_config: channel::config::PinConfig::PushPull, + }) + .map_err(|e| e.into()) + } + 100 => { + // If level is 100, we just keep the pin high + Output::new( + unsafe { volume.volume_pin.clone_unchecked() }, + Level::High, + ); + Ok(()) + } + _ => Err(Error::VolumeOutOfRange), + } + } + } + } else { + Err(Error::VolumeNotSet) + } + } + + /// Mute the buzzer + /// + /// The muting is done by simply setting the duty to 0 + pub fn mute(&mut self) -> Result<(), Error> { + let mut channel = Channel::new(self.channel_number, self.output_pin.deref_mut()); + channel + .configure(channel::config::Config { + timer: &self.timer, + duty_pct: 0, + pin_config: channel::config::PinConfig::PushPull, + }) + .map_err(|e| e.into()) + } + + /// Play a frequency through the buzzer + pub fn play(&mut self, frequency: u32) -> Result<(), Error> { + // Mute if frequency is 0Hz + if frequency == 0 { + return self.mute(); + } + + // Max duty resolution for a frequency: + // Integer(log2(LEDC_APB_CKL / frequency)) + let mut result = 0; + let mut value = (Clocks::get().apb_clock / frequency).raw(); + + // Limit duty resolution to 14 bits + while value > 1 && result < 14 { + value >>= 1; + result += 1; + } + + self.timer.configure(timer::config::Config { + // Safety: This should never fail because resolution is limited to 14 bits + duty: timer::config::Duty::try_from(result).unwrap(), + clock_source: timer::LSClockSource::APBClk, + frequency: frequency.Hz(), + })?; + + let mut channel = Channel::new(self.channel_number, self.output_pin.deref_mut()); + channel.configure(channel::config::Config { + timer: &self.timer, + // Use volume as duty if set since we use the same channel. + duty_pct: self.volume.as_ref().map_or(50, |v| v.level), + pin_config: channel::config::PinConfig::PushPull, + })?; + + Ok(()) + } + + /// Play a sound sequence through the buzzer + /// + /// Uses a pair of frequencies and timings to play a sound sequence. + /// + /// # Arguments + /// * `sequence` - A list of frequencies to play through the buzzer + /// * `timings` - A list of timings in ms for each frequencies + /// + /// # Examples + /// Play a single beep at 300Hz for 1 second + /// ``` + /// buzzer.play_tones([300], [1000]); + /// ``` + /// + /// Play a sequence of 3 beeps with a break inbetween + /// ``` + /// buzzer.play_tones([200, 0, 200, 0, 200], [200, 50, 200, 50, 200]); + /// ``` + /// + /// Play a sequence of 3 beeps with the same duration + /// ``` + /// buzzer.play_tones([100, 200, 300], [100; 3]); + /// ``` + /// + /// # Errors + /// This function returns an [Error] in case of an error. + /// An error can occur when an invalid value is used as a tone + pub fn play_tones( + &mut self, + sequence: [u32; T], + timings: [u32; T], + ) -> Result<(), Error> { + // Iterate for each frequency / timing pair + for (frequency, timing) in sequence.iter().zip(timings.iter()) { + self.play(*frequency)?; + self.delay.delay_millis(*timing); + self.mute()?; + } + // Mute at the end of the sequence + self.mute() + } + + /// Play a tone sequence through the buzzer + /// + /// Uses a pair of frequencies and timings to play a sound sequence. + /// + /// # Arguments + /// * `tones` - A list of type [ToneValue] to play through the buzzer + /// + /// # Examples + /// Play a tone sequence + /// ``` + /// let song = [ + /// ToneValue { + /// frequency: 100, + /// duration: 100, + /// }, + /// ToneValue { + /// frequency: 200, + /// duration: 100, + /// }, + /// ToneValue { + /// frequency: 300, + /// duration: 100, + /// }, + /// ]; + /// buzzer.play_song(song); + /// ``` + /// + /// # Errors + /// This function returns an [Error] in case of an error. + /// An error can occur when an invalid value is used as a tone + pub fn play_song(&mut self, tones: [ToneValue; T]) -> Result<(), Error> { + let mut sequence: [u32; T] = [0; T]; + let mut timings: [u32; T] = [0; T]; + for (index, tone) in tones.iter().enumerate() { + sequence[index] = tone.frequency; + timings[index] = tone.duration; + } + self.play_tones(sequence, timings) + } +} diff --git a/esp-hal-buzzer/src/notes.rs b/esp-hal-buzzer/src/notes.rs new file mode 100644 index 0000000..3b02888 --- /dev/null +++ b/esp-hal-buzzer/src/notes.rs @@ -0,0 +1,127 @@ +//! Helper module to help create songs that can be played on the buzzer. + +#![allow(unused)] +#![allow(missing_docs)] +use super::ToneValue; + +/// Generate a ToneValue slice from Song beats and tempo +#[macro_export] +macro_rules! song { + ($tempo:expr, [$(($note:expr, $duration:expr)),*]) => { + { + const WHOLENOTE: u32 = (600_000 * 4) / $tempo; + [ + $( + ToneValue { frequency: $note, duration: WHOLENOTE / $duration }, + )* + ] + } + }; + } + +// Note values in Hz +pub const NOTE_B0: u32 = 31; +pub const NOTE_C1: u32 = 33; +pub const NOTE_CS1: u32 = 35; +pub const NOTE_D1: u32 = 37; +pub const NOTE_DS1: u32 = 39; +pub const NOTE_E1: u32 = 41; +pub const NOTE_F1: u32 = 44; +pub const NOTE_FS1: u32 = 46; +pub const NOTE_G1: u32 = 49; +pub const NOTE_GS1: u32 = 52; +pub const NOTE_A1: u32 = 55; +pub const NOTE_AS1: u32 = 58; +pub const NOTE_B1: u32 = 62; +pub const NOTE_C2: u32 = 65; +pub const NOTE_CS2: u32 = 69; +pub const NOTE_D2: u32 = 73; +pub const NOTE_DS2: u32 = 78; +pub const NOTE_E2: u32 = 82; +pub const NOTE_F2: u32 = 87; +pub const NOTE_FS2: u32 = 93; +pub const NOTE_G2: u32 = 98; +pub const NOTE_GS2: u32 = 104; +pub const NOTE_A2: u32 = 110; +pub const NOTE_AS2: u32 = 117; +pub const NOTE_B2: u32 = 123; +pub const NOTE_C3: u32 = 131; +pub const NOTE_CS3: u32 = 139; +pub const NOTE_D3: u32 = 147; +pub const NOTE_DS3: u32 = 156; +pub const NOTE_E3: u32 = 165; +pub const NOTE_F3: u32 = 175; +pub const NOTE_FS3: u32 = 185; +pub const NOTE_G3: u32 = 196; +pub const NOTE_GS3: u32 = 208; +pub const NOTE_A3: u32 = 220; +pub const NOTE_AS3: u32 = 233; +pub const NOTE_B3: u32 = 247; +pub const NOTE_C4: u32 = 262; +pub const NOTE_CS4: u32 = 277; +pub const NOTE_D4: u32 = 294; +pub const NOTE_DS4: u32 = 311; +pub const NOTE_E4: u32 = 330; +pub const NOTE_F4: u32 = 349; +pub const NOTE_FS4: u32 = 370; +pub const NOTE_G4: u32 = 392; +pub const NOTE_GS4: u32 = 415; +pub const NOTE_A4: u32 = 440; +pub const NOTE_AS4: u32 = 466; +pub const NOTE_B4: u32 = 494; +pub const NOTE_C5: u32 = 523; +pub const NOTE_CS5: u32 = 554; +pub const NOTE_D5: u32 = 587; +pub const NOTE_DS5: u32 = 622; +pub const NOTE_E5: u32 = 659; +pub const NOTE_F5: u32 = 698; +pub const NOTE_FS5: u32 = 740; +pub const NOTE_G5: u32 = 784; +pub const NOTE_GS5: u32 = 831; +pub const NOTE_A5: u32 = 880; +pub const NOTE_AS5: u32 = 932; +pub const NOTE_B5: u32 = 988; +pub const NOTE_C6: u32 = 1047; +pub const NOTE_CS6: u32 = 1109; +pub const NOTE_D6: u32 = 1175; +pub const NOTE_DS6: u32 = 1245; +pub const NOTE_E6: u32 = 1319; +pub const NOTE_F6: u32 = 1397; +pub const NOTE_FS6: u32 = 1480; +pub const NOTE_G6: u32 = 1568; +pub const NOTE_GS6: u32 = 1661; +pub const NOTE_A6: u32 = 1760; +pub const NOTE_AS6: u32 = 1865; +pub const NOTE_B6: u32 = 1976; +pub const NOTE_C7: u32 = 2093; +pub const NOTE_CS7: u32 = 2217; +pub const NOTE_D7: u32 = 2349; +pub const NOTE_DS7: u32 = 2489; +pub const NOTE_E7: u32 = 2637; +pub const NOTE_F7: u32 = 2794; +pub const NOTE_FS7: u32 = 2960; +pub const NOTE_G7: u32 = 3136; +pub const NOTE_GS7: u32 = 3322; +pub const NOTE_A7: u32 = 3520; +pub const NOTE_AS7: u32 = 3729; +pub const NOTE_B7: u32 = 3951; +pub const NOTE_C8: u32 = 4186; +pub const NOTE_CS8: u32 = 4435; +pub const NOTE_D8: u32 = 4699; +pub const NOTE_DS8: u32 = 4978; +pub const REST: u32 = 0; + +// Note durations +// *All values are x10 so that we don't have to deal with floats. +pub const NOTE: u32 = 10; +pub const DOTTED_NOTE: u32 = NOTE - NOTE / 2; +pub const HALF_NOTE: u32 = 20; +pub const DOTTED_HALF_NOTE: u32 = HALF_NOTE - HALF_NOTE / 2; +pub const QUARTER_NOTE: u32 = 40; +pub const DOTTED_QUARTER_NOTE: u32 = QUARTER_NOTE - QUARTER_NOTE / 2; +pub const EIGHTEENTH_NOTE: u32 = 80; +pub const DOTTED_EIGHTEENTH_NOTE: u32 = EIGHTEENTH_NOTE - EIGHTEENTH_NOTE / 2; +pub const SIXTEENTH_NOTE: u32 = 160; +pub const DOTTED_SIXTEENTH_NOTE: u32 = SIXTEENTH_NOTE - SIXTEENTH_NOTE / 2; +pub const THIRTYSECOND_NOTE: u32 = 320; +pub const DOTTED_THIRTYSECOND_NOTE: u32 = THIRTYSECOND_NOTE - THIRTYSECOND_NOTE / 2;