Music Theory Conversion Algorithm
Design an algorithm to generate meaningful insights about the key of a song and the chord structure of a given set of music notes and note positions.
Project Goal
- Refresh use of Python coding language
- Learn and apply use of algorithms
- Provide solutions to the problems given
Code Details
- Programming Language: Python
- Data Structures: Hash table(Dictionary), List
- Algorithms: Hash table Search. Time/Space Complexity = 0(1) / 0(n)
- Use of ChatGPT: None
- Project Deadline: 1 Week
Resources
- Obsidian
- YouTube
- BigO CheatSheet
- Algorithm Visualizer
- GeeksforGeeks.com
- W3Schools
- Python.org
- StackOverflow
Scenarios
Scenario 1: Notation Conversions
Problem | Solution | Feature Statement | Function Name |
---|---|---|---|
What are the standard music notes to a set of Nashville Numbers in a given key signature? | When given a sequence of Nashville Numbers in a particular key signature, determine the corresponding standard music notes | As a musician or aspiring musician, I want to determine the corresponding standard music notes when given a sequence of Nashville Numbers in a particular key so that I can know a more direct description of the note pitch. | getStandardNote |
What are the Nashville Numbers to a set of standard music notes in a given key signature? | When given a sequence of standard music notes in a particular key signature, determine the corresponding Nashville Numbers. | As a musician or aspiring musician, I want to determine the corresponding Nashville Numbers when given a sequence of standard music notes so that I can simplify my approach to utilizing those notes when creating music. | getNashNumber |
Scenario 2: Key of Song
Problem | Solution | Feature Statement | Function Name |
---|---|---|---|
How do I determine what key a song is in when given a sequence of notes to new music where the key signature is not provided? | When given a sequence of music notes determine what the key of the song is. | As a musician or aspiring musician, I want to determine what key the song is when given a sequence of standard music notes so that I can know what structure is most likely used to create the song. | getSongKey |
Scenario 3: Accidentals
Problem | Solution | Feature Statement | Function Name |
---|---|---|---|
How do I determine the relative accidental of a sharp or flat note? | When given an accidental note, provide the relative accidental translation. | As a musician or aspiring musician, I want to know the relative note of an accidental so that I can understand what note is referenced when provided in a way I didn’t expect. | getAccidentalTranslation |
Scenario 4: Chord Structures
Problem | Solution | Feature Statement | Function Name |
---|---|---|---|
How can I can quickly determine what chords to form when the chord structure is not given to me? | When given Nashville number system numbers, provide the relative chord structure. | As a musician or aspiring musician, I want to know the chord structure of Nashville Number System positions so that I can quickly form chords when the numbers are given to me in any song key. | getNashChord |