Пример мелодии: тема Pink Panther (pink_panther.rs)
В этом разделе приведён код модуля pink_panther на Rust. Если нужны ноты других песен или фоновых мелодий, можете посмотреть репозиторий Rust Embedded Songs.
Темп
Здесь задаём темп песни (его можно изменить и посмотреть результат).
#![allow(unused)]
fn main() {
pub const TEMPO: u16 = 120;
}
Массив мелодии
Мелодию темы Pink Panther мы задаём массивом нот и их длительностей. Мелодия состоит из кортежей: частоты ноты и соответствующей длительности. Длительность каждой ноты представлена целым числом: положительные значения обозначают обычные ноты, а отрицательные — ноты с точкой.
#![allow(unused)]
fn main() {
pub const MELODY: [(f64, i16); 88] = [
(REST, 2),
(REST, 4),
(REST, 8),
(NOTE_DS4, 8),
(NOTE_E4, -4),
(REST, 8),
(NOTE_FS4, 8),
(NOTE_G4, -4),
(REST, 8),
(NOTE_DS4, 8),
(NOTE_E4, -8),
(NOTE_FS4, 8),
(NOTE_G4, -8),
(NOTE_C5, 8),
(NOTE_B4, -8),
(NOTE_E4, 8),
(NOTE_G4, -8),
(NOTE_B4, 8),
(NOTE_AS4, 2),
(NOTE_A4, -16),
(NOTE_G4, -16),
(NOTE_E4, -16),
(NOTE_D4, -16),
(NOTE_E4, 2),
(REST, 4),
(REST, 8),
(NOTE_DS4, 4),
(NOTE_E4, -4),
(REST, 8),
(NOTE_FS4, 8),
(NOTE_G4, -4),
(REST, 8),
(NOTE_DS4, 8),
(NOTE_E4, -8),
(NOTE_FS4, 8),
(NOTE_G4, -8),
(NOTE_C5, 8),
(NOTE_B4, -8),
(NOTE_G4, 8),
(NOTE_B4, -8),
(NOTE_E5, 8),
(NOTE_DS5, 1),
(NOTE_D5, 2),
(REST, 4),
(REST, 8),
(NOTE_DS4, 8),
(NOTE_E4, -4),
(REST, 8),
(NOTE_FS4, 8),
(NOTE_G4, -4),
(REST, 8),
(NOTE_DS4, 8),
(NOTE_E4, -8),
(NOTE_FS4, 8),
(NOTE_G4, -8),
(NOTE_C5, 8),
(NOTE_B4, -8),
(NOTE_E4, 8),
(NOTE_G4, -8),
(NOTE_B4, 8),
(NOTE_AS4, 2),
(NOTE_A4, -16),
(NOTE_G4, -16),
(NOTE_E4, -16),
(NOTE_D4, -16),
(NOTE_E4, -4),
(REST, 4),
(REST, 4),
(NOTE_E5, -8),
(NOTE_D5, 8),
(NOTE_B4, -8),
(NOTE_A4, 8),
(NOTE_G4, -8),
(NOTE_E4, -8),
(NOTE_AS4, 16),
(NOTE_A4, -8),
(NOTE_AS4, 16),
(NOTE_A4, -8),
(NOTE_AS4, 16),
(NOTE_A4, -8),
(NOTE_AS4, 16),
(NOTE_A4, -8),
(NOTE_G4, -16),
(NOTE_E4, -16),
(NOTE_D4, -16),
(NOTE_E4, 16),
(NOTE_E4, 16),
(NOTE_E4, 2),
];
}