use std::sync::LazyLock;
use indoc::indoc;
use ustr::Ustr;
pub const SINGING_DESCRIPTION: &str = indoc! {"
Repeatedly listen to the passage until you can audiate and sing its main elements. You should
also experiment with singing different melodies over the passage and see what works.
Refer to the lesson instructions for more details.
"};
pub const ADVANCED_SINGING_DESCRIPTION: &str = indoc! {"
Repeatedly listen to the passage until you can audiate and sing it clearly in detail. Same as
the singing lesson, but the passage should be audiated in more detail and precision, and
transposed up or down a random number of semitones.
Refer to the lesson instructions for more details.
"};
pub const TRANSCRIPTION_DESCRIPTION: &str = indoc! {"
Using the stated instrument, play over the passage, using it as a basis for improvising. Playing
back the exact passage is not required at this stage. Rather, this lesson is about learning to
navigate the context implied by it.
Refer to the lesson instructions for more details.
"};
pub const ADVANCED_TRANSCRIPTION_DESCRIPTION: &str = indoc! {"
Using the stated instrument, play over passage back, and use it as a basis for improvising.
Same as the transcription exercise, but the passage should be played back in more detail and
precision, and transposed up or down a random number of semitones.
Refer to the lesson instructions for more details.
"};
pub const COURSE_METADATA: &str = "transcription_course";
pub const LESSON_METADATA: &str = "transcription_lesson";
pub const ARTIST_METADATA: &str = "transcription_artist";
pub const ALBUM_METADATA: &str = "transcription_album";
pub const INSTRUMENT_METADATA: &str = "instrument";
pub static COURSE_INSTRUCTIONS: LazyLock<Ustr> =
LazyLock::new(|| Ustr::from(include_str!("course_instructions.md")));
pub static SINGING_INSTRUCTIONS: LazyLock<Ustr> = LazyLock::new(|| {
Ustr::from(indoc! {"
First listen to the musical passage until you can audiate it clearly in your head. Then sing
over the passage. At this stage it's not required to be accurate as possible. Rather, learn
to sing the main elements of the passage and experiment with different melodies over it.
The goal is to learn to navigate the context implied by the passage.
There's no need to play on your instrument or write anything down, but you are free to do so
if you wish.
"})
});
pub static TRANSCRIPTION_INSTRUCTIONS: LazyLock<Ustr> = LazyLock::new(|| {
Ustr::from(indoc! {"
With the basic context implied by the passage now internalized in your ear, try to play over
it using your instrument. The goal at this point is not to accurately reproduce the passage,
but rather about learning to navigate that context and use it as a basis for improvisation.
You can focus on different elements or sections each time you practice.
There's no need to write anything down, but you are free to do so if you wish.
"})
});
pub static ADVANCED_SINGING_INSTRUCTIONS: LazyLock<Ustr> = LazyLock::new(|| {
Ustr::from(indoc! {"
Listen to the musical passage until you can audiate it and sing over it like you did in the
singing lesson. In that lesson, the passage was used as a basis for improvisation. In this
lesson, the passage should be sung with more detail and precision, and transposed up or down
a random number of semitones. You should also use solfege syllables or numbers to sing the
passage.
There's no need to play on your instrument or write anything down, but you are free to do so
if you wish.
"})
});
pub static ADVANCED_TRANSCRIPTION_INSTRUCTIONS: LazyLock<Ustr> = LazyLock::new(|| {
Ustr::from(indoc! {"
At this stage, you can sing and play over the context implied by the passage, and sing it
with more detail and precision in a variety of keys. It's at this point that you can engage
in what is traditionally called transcription.
Play over the passage using your instrument, and try to reproduce it in more detail than
in the basic transcription lesson. You should also transpose the passage up or down a random
number of semitones. You should still use the passage as a basis for improvisation, but the
focus is much narrower than in the basic transcription lesson, and the actual music played
in the passage take precedence over the context implied by it.
There's no need to write anything down, but you are free to do so if you wish.
"})
});