package Ġpl . pj ag iel ski . p unkt Ċ Ċ import Ġcom . uch uh imo . kon f . Config Ċ import Ġmu . Kotlin Logging Ċ import Ġpl . pj ag iel ski . p unkt . config . Configuration Ċ import Ġpl . pj ag iel ski . p unkt . config . Track Config Ċ import Ġpl . pj ag iel ski . p unkt . jam . J am Ċ import Ġpl . pj ag iel ski . p unkt . jam . State Ċ import Ġpl . pj ag iel ski . p unkt . live . load From Script K SH Ċ import Ġpl . pj ag iel ski . p unkt . live . watch File Ċ import Ġpl . pj ag iel ski . p unkt . osc . Osc Server Ċ import Ġpl . pj ag iel ski . p unkt . pattern . Note Ċ import Ġpl . pj ag iel ski . p unkt . sounds . Lo ops Ċ import Ġpl . pj ag iel ski . p unkt . sounds . Samples Ċ import Ġjava . io . File Ċ import Ġjavax . sound . midi . Track Ċ import Ġkotlin . script . experimental . jvm host . Basic Jvm Script ing Host Ċ Ċ class ĠApplication ( val Ġconfig : ĠConfig ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠKotlin Logging . logger Ġ{} ĊĊĠĠĠ Ġval Ġscripting Host Ġ= ĠBasic Jvm Script ing Host () ĊĊĠĠĠ Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsc Host Ġ= Ġconfig [ Configuration . OSC . Super Collider . host ] ĊĠĠĠĠĠĠĠ Ġval Ġsc Port Ġ= Ġconfig [ Configuration . OSC . Super Collider . port ] ĊĠĠĠĠĠĠĠ Ġval Ġsuper Collider Ġ= ĠO sc Server ( sc Host , Ġsc Port ) ĊĠĠĠĠĠĠĠ Ġsuper Collider . sync () ĊĊĠĠĠĠĠĠĠ Ġval Ġsample Dir Ġ= Ġconfig [ Configuration . Locations . samples ] ĊĠĠĠĠĠĠĠ Ġval Ġloop Dir Ġ= Ġconfig [ Configuration . Locations . loops ] ĊĊĠĠĠĠĠĠĠ Ġval Ġsamples Ġ= ĠSamples ( super Collider ). apply Ġ{ Ġload ( sample Dir ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġloops Ġ= ĠLo ops ( super Collider ). apply Ġ{ Ġload ( loop Dir ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġb pm Ġ= Ġconfig [ Configuration . Track . bpm ] ĊĠĠĠĠĠĠĠ Ġval Ġbe ats Per Bar Ġ= Ġconfig [ Configuration . Track . beats Per Bar ] ĊĊĠĠĠĠĠĠĠ Ġval Ġtrack Config Ġ= ĠTrack Config ( bpm , Ġbe ats Per Bar ) ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠState ( track Config , Ġempty List ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġlive File Ġ= Ġconfig [ Configuration . Locations . live File ] ĊĠĠĠĠĠĠĠ Ġval Ġinitialize State Ġ= Ġwatch File ( File ( live File )) Ġ{ Ġfile Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Re loading Ġfile ...") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfunc Ġ= Ġload From Script K SH <( Track Config ) Ġ-> ĠList < Note >>( file , Ġscripting Host ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstop Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Re loading Ġtook Ġ${ stop Ġ- Ġstart } ms ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . notes Ġ= Ġfunc . invoke ( track Config ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinitialize State () ĊĊĠĠĠĠĠĠĠ Ġval Ġclock Ġ= ĠClock (). apply Ġ{ Ġstart () Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġj am Ġ= ĠJ am ( samples , Ġloops , Ġclock , Ġsuper Collider ) ĊĠĠĠĠĠĠĠ Ġj am . start ( state ) ĊĊĠĠĠĠĠĠĠ ĠThread . currentThread (). join () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġapplication ( config : ĠConfig ) Ġ{ ĊĠĠĠ ĠApplication ( config ). run () Ċ } Ċ