repository for Piano 2.0 MVP v1
- dynamic volume
- looping of compose mode
- bar cursor
- metronome before any play
- harmony colorization
- improved harmony checking
- improved metronome
- updated music sheets
- condition 2 implemented
- dynamic harmony implemented
- Implement 4B-4B-4P-4P protocol
- Test Mode for Lessons 1-3
- Compose Mode for Lessons 4-5
- Expand sheets add harmony Fclef
- update music info linked
- Change guidances toggles to checkboxes
- Add guidance features: metronome and rhythm
- music sheets work!
- Music sheets as display and condition 2
- Lesson 1: Play Swing Through Modes
- Lesson 2: Learn Sequences Through Repetition
- Lesson 3: Learn Motifs Through Phrasing
- Lesson 4: Learn Variations
- Lesson 5: Ques-Ans
- MAJOR cleanup
- new layout
- deploy webserver for receiving inputs
- capture logs into MIDI-able format
- handled rests
- add Show Piano Roll and Play Audio feature toggles OR
- [ ] integrate DAW for music synthesis live OR (all below)~- [ ] show staff for Play audio feature ~- [ ] use ParseMIDI to convert logs into .mid files - drop .mid files with same ID for server to send to synthesizer
- sync timing with recorded elements
- sync timing of highlighting
- process sibelius add tempo
- syncing of midi and aiff
- time x pixelmap
- multiple loading of several audio assets
Modes and Features
- Watch and Listen Mode
- Try Mode
- Test Mode
- Toggles for Content (C) only, Content and Rhythm (CR) only, Content and Rhythm and Harmony (CHR) only and Content and Rhythm and Harmony and Metronome (CHRM) only
New Assets Needed
- recordings from iRealPro
- recordings of the different C, R, H, M
Newer classes will be implemented to apply these changes
- ModeMgr - manages the different Modes namely WaL, Try and Test
- LessonMgr - manages the content of the lesson based on the toggled C,R, H, M
- VizMgr - will be revised to reflect the new version of toggles in the prototype.
Controllers
- RollScript - responsible for spawning and rolling piano roll
- TimeMgr - for time control, timebar generation, tempo management, time signature etc
- ImprovMgr - manages all highlighted keys that produces viz
- InputMgr - manages scoring, timing in relation to user press and chord information
- VizMgr - contains all toggle-able checkboxes that produces "adaptive" dynamic options for the user
Models
- ChordMgr - contains all chord-key piano information
- CollectionMgr - contains all chord-improv-pairing information.
Views are integrated into the design of the classes. In principle we can see Builder, Factory, Wrapper and Iterator elements among our design.
More information about dependencies and relationships will be revealed soon as we finalise the design.
- falling piano roll with recommended improv licks
- press-detected improvisation (and valid while still on press)
- highlighting of sample improvisation licks
- create classes
- integrate them with the piano canvas environment
- migrate existing functions from now-decommissioned RollScript.cs
- implement TimeMgr
- implement ImprovMgr
- implement ChordMgr
- implement InputMgr
- cleanup RollScript to its new intended purpose
- [?] find a way to implement MapLines() - discussed with bosses.
- rework RollScript.cs specifically SpawnKeys(), RollKeys() and
MapLines()functions - implement CollectionMgr
- implement passing of information based on targetted dependencies
- implement VizMgr and toggle
- demo to bosses
- Study 1 with Improv Teachers
- Develop Post-Study Version - ONGOING
- Study 2 with Improv Students - per lesson
- Study 3 on Spatiotemporal Data collection
- Graduate
target completion of MVP 12/08/2022 13/11/2021
#### latest updates as of 16/11/2021
target completion of MVP 13/11/2021 30/11/2021
- setup MIDI input with laptop
- see how input data looks like
-
(Optional) set output in a target file destination - allow user to press key
-
play sound via garageband - identify which key is pressed (return keybinding)
- projector setup
- laser cutting of projection board
- applying white paint/tape on black keys to assist projection visuals
- applying subtle key labels for new users
- solve issues with keys C6 to G6 having a delayed startup (significant delay)
- setup back stand of white screen for stability
- setup unity environment for the piano roll engine
- setup keybindings in unity
- setup new input system in unity
- parse midi into chord information and load them in unity environment (at least one midi file) 14.07.2022
- convert chord information unity applicable assets and information (yscale, location, etc)
- setup virtual piano environment (keys, finger colors, aspect ratio)
- calibrate virtual piano environment with the existing setup
- overlay piano roll sequence onto virtual piano environment
- synthesize sound - used garageband
- tracking of keypress along with piano roll
- black layout
- piano roll melody
- improv suggestive based on bars
- error checking - melody
- error checking - licks
- logging of spatiotemporal data - user presses
- logging of spatiotemporal data - correct presses
- scoring
- export spatio temporal data with musicxml into csv
- export everything as functions
- toggle feature feature (yes this is not a typo)
- spawn a key from this chord information
- move piano roll key
- destroy upon collision with green line
- test for timing and accuracy
- integrate with piano midi input
- destroy object upon click
- add timer -
- generate co-routines to time multiple spawns -
- generate co-routines for spawn movement (transform position) -
- generate data structures (list) to store piano key coordinates
- test for timing and accuracy
-
integrate with piano midi input - destroy object upon click
-
setup music xml with visual interface -
connect music xml to unity engine -
configure musicxml to generate viz -
stream songs from musicxml to unity engine - followed the steps from https://answers.unity.com/questions/1434686/how-to-integrate-drywetmidi-net-46-library-in-unit.html
- check consistency and correctness of samplesongs
- design scalable SOLID facade for adaptation engine
- file browser integration for song selection
- skeletal menu from home to practice song
- logging of keypresss
- acquiring temporal information from the midi
-
synthesize sounds for C2 to B3 and C4 to C7. include sharp/flat keys - MIDIFileSequencer (to convert .mid into List which can be used by LoadMIDIFile.cs)
- NoteDurationObject for use of SpawnNotesDropDown
- integrate DryWetMidi
- port to v 2017.4.8.f1
- setup external speakers to play synthesized sound
- run pilot user study
- measure projection board hind legs
- [z] acquire materials for projection board hind legs
-
MVP ready for initial spatiotemporal data collection13/11/202130/11/2021 -
spatiotemporal data collection until13/12/202123/12/2021 -
data cleaning and analysis -
regression modeling -
UIST paper13/01/202123/01/2021