- Everybody can jam music in canteen wiJam - Everybody can jam music in canteen
OUTLINE OVERVIEW DESIGN PRINCIPLES AND SOME DETAILS PROGRESS AND OUTCOME FUTURE WORKS
Scenario – Canteen JAM Master D5 E5 A4 C5 E4 G4 C4 D4 D5 E5 A4 C5 E4
Scenario – Canteen JAM Master D5 E5 A4 C5 E4 G4 C4 D4 D5 E5 A4 C5 E4
WHY WIJAM? Setting: One music master who knows music, several players who know little about music Existing approach: Traditional jam, Chrome Music Jam, GarageBand Jam. Top
Design Principles Overview KISS: The player’s interface is simple because the master abstracts away many musical difficulties. Hierarchy/Divide and conquer Every layer depends on the layer(s) downstairs, and the layers together make the whole system. Robustness Sound manager Others: Use a good idea again; When in doubt, use brute force; leave it to the client…
Layering Master Slave Hierarchy, divide and conquer User Interface Music Assigner MIDI router Sample Sound Manager Core MIDI /GKSession AUGraph Bonjour + network AudioSession User Interface Music Performer Core MIDI /GKSession AUGraph AudioSession Bonjour + network TCP/IP Hierarchy, divide and conquer
Master Slave User Interface User Interface Music Performer The Performer The Conductor Master Slave User Interface Music Assigner MIDI router Sample Sound Manager CoreMIDI/ GKSession AUGraph Bonjour + network AudioSession User Interface Music Performer Core MIDI /GKSession AUGraph AudioSession Bonjour + network
DISTRIBUTE a Key, a SCALE and instruments Philip Grand Piano Acoustic Guitar Electric Guitar Acoustic Bass Violin Key and scale … Sample Sound Crack Clap C D E G A Blu Maj Aeo Pen Lyd Groove-1 …
MASTER Philip Bony CX CY Rev flg filt … Volume Bighead tangkk Panning Eco Rev flg filt … Volume Bighead tangkk Panning Groove-1 Groove-2 Groove-3 Groove-4 C D E G A Bls Maj Aeo Pen Lyd
Players only see the notes D5 E5 A4 C5 KISS Abstraction Robustness E4 G4 C4 D4
End-to-end ? Music Assigner Music Performer Assign performance prototypes Assign Perform performance feedback
Music Assigner Table in C (just an example) Scale/Note 1 2 3 4 5 6 7 8 Ionian C4 E4 F4 G4 A4 B4 C5 D5 C3 E3 G3 … Dorian bE4 bB4 Phrygian Lydian Mixolydian Aeolian Locrian
Master Slave User Interface User Interface Music Performer The Performance User Interface Music Assigner MIDI router Sample Sound Manager CoreMIDI/ GKSession AUGraph Bonjour + network AudioSession User Interface Music Performer Core MIDI /GKSession AUGraph AudioSession Bonjour + network
Use a good idea again Performance MIDI Router AUGraph Performer1 Input VI 1 VI 2 VI 3 VI 4 VI 5 Output
Master Slave Use a good idea again Leave it to the client User Interface Music Assigner MIDI router Sample Sound Manager CoreMIDI/ GKSession AUGraph Bonjour + network AudioSession User Interface Music Performer Core MIDI /GKSession AUGraph AudioSession Bonjour + network Virtual Instruments Virtual Instruments
AUPreset File is basically a mapping file that maps sound samples to notes, so that they together form virtual musical instruments. Note 1 Note 2 Note 3 ... Sound Sample 1 Sound Sample 2 Sound Sample 3 ...
Sound Library Sound Sample Manager Robustness Leave it to the client Application Sound Library Audio files mapped to the AUPresets AUPresetFile Sound Sample Manager download
Master Slave User Interface User Interface Music Performer Music Assigner MIDI router Sample Sound Manager CoreMIDI/ GKSession AUGraph Bonjour + network AudioSession User Interface Music Performer Core MIDI /GKSession AUGraph AudioSession Bonjour + network Communicator
Reuse open source code Master coreMIDI NetworkSession Slave Music Assignment in the form of sysEx MIDI Packets Packets Send Handler Packets Receive Handler Packets Send Handler Packets Receive Handler Music Performance in the form of normal MIDI Packets
DIVIDE and CONQUER Master Slave Top User Interface User Interface Cayden, Philip Master Slave User Interface Music Assigner MIDI router Sample Sound Manager CoreMIDI/ GKSession AUGraph Bonjour + network AudioSession User Interface Music Performer Core MIDI /GKSession AUGraph AudioSession Bonjour + network tangkk Bony, Philip CX, SzeHang tangkk Top
Progress and outcome https://github.com/tangkk/Tuner.git A continuous thread on Gmail
Future Works Sound FX control Location of every player Shake support(accelerometer ) Performance Adaptive Algorithm
Easy Adaptive Scoreboard Level assignment Performance feedback
Music Assigner Music Performer Assign performance prototypes Adaptive Algorithm Perform performance feedback Smart enough to adapt to different constitution of players Could be anyone who is totally out of musical feeling
Thank you! Group members in alphabetical order: Chi Man Liu Chong Yee Wong Ho Cheung Ng Hung Kwan Chen Junqi Deng Sze Hang Chan