package Ġcom . cri st ian ove c chi . mik ro kan on . midi Ċ Ċ import Ġandroid . media . MediaPlayer Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Environment Ċ import Ġandroid . util . Log Ċ import Ġcom . cri st ian ove c chi . mik ro kan on .* Ċ import Ġcom . cri st ian ove c chi . mik ro kan on . AIM US IC .* Ċ import Ġcom . cri st ian ove c chi . mik ro kan on . AIM US IC . Char lie Par ker Band . B eb op Band Ċ import Ġcom . cri st ian ove c chi . mik ro kan on . AIM US IC . Char lie Par ker Band . Char lie Par ker Ċ import Ġcom . cri st ian ove c chi . mik ro kan on . AIM US IC . Char lie Par ker Band . Char lie Par ker Band Ċ import Ġcom . cri st ian ove c chi . mik ro kan on . AIM US IC . DEF . MIDDLE _ C Ċ Ċ import Ġcom . le ff . midi . Midi File Ċ import Ġcom . le ff . midi . Midi Track Ċ import Ġcom . le ff . midi . event .* Ċ import Ġcom . le ff . midi . event . meta . Temp o Ċ import Ġjava . io . IOException Ċ import Ġcom . le ff . midi . event . meta . Time Signature Ċ import Ġjava . io . File Ċ import Ġjava . util .* Ċ import Ġkotlin . math . absolute Value ĊĊ Ċ object ĠPlayer Ġ{ ĊĠĠĠ Ġconst Ġval ĠYO UNG CHAR LI E PAR KER Ġ= Ġ 1 ĊĠĠĠ Ġconst Ġval ĠTHE BE B OP BO YS Ġ= Ġ- 1 ĊĊĠĠĠ Ġ// public Ġstatic ĠMedia Player Ġmedia Player 2 ; ĊĠĠĠ Ġprivate Ġvar Ġgen ius : ĠChar lie Par ker Band ? Ġ= Ġnull ĊĠĠĠ Ġfun Ġplay Note In Middle Oct ave ( ĊĠĠĠĠĠĠĠ Ġplayer : ĠMedia Player , ĊĠĠĠĠĠĠĠ Ġnote : ĠInt , ĊĠĠĠĠĠĠĠ Ġvelocity : ĠInt , ĊĠĠĠĠĠĠĠ Ġinstr : ĠInt , ĊĠĠĠĠĠĠĠ Ġlooping : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġplay Single Note ( player , ĠM ID DLE _ C Ġ+ Ġnote , Ġvelocity , Ġinstr , Ġlooping ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġplay Single Note ( ĊĠĠĠĠĠĠĠ Ġplayer : ĠMedia Player , ĊĠĠĠĠĠĠĠ Ġpitch : ĠInt , ĊĠĠĠĠĠĠĠ Ġvelocity : ĠInt , ĊĠĠĠĠĠĠĠ Ġinstr : ĠInt , ĊĠĠĠĠĠĠĠ Ġlooping : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( player . is Playing ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . stop () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġplayer . reset () ĊĠĠĠĠĠĠĠ Ġval Ġtempo Track Ġ= ĠM idi Track () ĊĠĠĠĠĠĠĠ Ġval Ġnote Track Ġ= ĠM idi Track () ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 2 . ĠAdd Ġevents Ġto Ġthe Ġtracks ĊĠĠĠĠĠĠĠ Ġ// Ġ 2 a . ĠTrack Ġ 0 Ġis Ġtypically Ġthe Ġtempo Ġmap ĊĠĠĠĠĠĠĠ Ġval Ġt Ġ= ĠTemp o () ĊĠĠĠĠĠĠĠ Ġt . bpm Ġ= Ġ 9 0 f ĊĠĠĠĠĠĠĠ Ġtempo Track . insert Event ( t ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 2 b . ĠTrack Ġ 1 Ġwill Ġhave Ġsome Ġnotes Ġin Ġit ĊĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġpc : ĠM idi Event Ġ= ĠProgram Change ( 0 , Ġchannel , Ġinstr ) Ġ// Ġcamb ia Ġstr ument o ĊĠĠĠĠĠĠĠ Ġnote Track . insert Event ( pc ) ĊĠĠĠĠĠĠĠ Ġval Ġon Ġ= ĠNote On ( time . to Long (), Ġchannel , Ġpitch , Ġvelocity ) ĊĠĠĠĠĠĠĠ Ġval Ġoff Ġ= ĠNote Off ( 6 0 , Ġchannel , Ġpitch , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġnote Track . insert Event ( on ) ĊĠĠĠĠĠĠĠ Ġnote Track . insert Event ( off ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠIt 's Ġbest Ġnot Ġto Ġmanually Ġinsert ĠEnd Of Track Ġevents ; ĠM idi Track Ġwill ĊĠĠĠĠĠĠĠ Ġ// Ġcall Ġclose Track () Ġon Ġitself Ġbefore Ġwriting Ġitself Ġto Ġa Ġfile ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 3 . ĠCreate Ġa ĠM idi File Ġwith Ġthe Ġtracks Ġwe Ġcreated ĊĠĠĠĠĠĠĠ Ġval Ġtracks : Ġjava . util . ArrayList < Midi Track > Ġ= Ġjava . util . ArrayList < Midi Track >() ĊĠĠĠĠĠĠĠ Ġtracks . add ( temp o Track ) ĊĠĠĠĠĠĠĠ Ġtracks . add ( note Track ) ĊĠĠĠĠĠĠĠ Ġval Ġmidi Ġ= ĠM idi File ( Midi File . DEFAULT _ RESOL UTION , Ġtracks ) ĊĠĠĠĠĠĠĠ Ġsave And Play Midi File ( player , Ġmidi , Ġlooping , Ġtrue , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġplay Scheme ( media Player : ĠMedia Player , Ġlooping : ĠBoolean , Ġbe b op Band : ĠB eb op Band , Ġchar lie Par ker : ĠChar lie Par ker , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbe b op Me lo dy : ĠB eb op Me lo dy , Ġch ord Sequence : ĠCh ord Sequence , Ġb pm : ĠFloat , Ġsolo Instrument : ĠInt , Ġshuffle : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( gen ius Ġ== Ġnull ) Ġgen ius Ġ= ĠChar lie Par ker Band () ĊĠĠĠĠĠĠĠ Ġval Ġmidi : ĠM idi File Ġ= Ġgen ius !!. play Scheme ( beb op Band , char lie Par ker , Ġbe b op Me lo dy , Ġch ord Sequence , bpm , solo Instrument , Ġshuffle ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġ// System . out . println (" Mid if ile Ġcre ato "); ĊĠĠĠĠĠĠĠ Ġsave And Play Midi File ( media Player , Ġmidi , Ġlooping , Ġtrue , Ġnull ) ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġplay Counter point ( ĊĠĠĠĠĠĠĠ Ġmedia Player : ĠMedia Player , Ġlooping : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġcounter points : ĠList < Counter point ? >, Ġdynamics : ĠList < Float >, Ġbp ms : ĠList < Float >, Ġshuffle : ĠFloat , ĊĠĠĠĠĠĠĠ Ġr hy thm : ĠList < Triple < R hy thm Patterns , Boolean , Int >>, Ġensemble Types : ĠList < En semble Type >, ĊĠĠĠĠĠĠĠ Ġplay : ĠBoolean , Ġmidi File : ĠFile , Ġr hy thm Shuffle : ĠBoolean Ġ= Ġfalse , Ġparts Shuffle : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġrow Forms : ĠList < Pair < Int , Int >> Ġ= ĠlistOf ( Pair ( 0 , 1 )), Ġr itor nel lo : ĠInt Ġ= Ġ 0 , Ġtranspose : ĠList < Int > Ġ= ĠlistOf ( 0 ), ĊĠĠĠĠĠĠĠ Ġdoub ling Flags : ĠInt Ġ= Ġ 0 , Ġnu ances : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġrange Types : ĠList < Pair < Int , Int >> Ġ= ĠlistOf ( Pair ( 2 , 0 )), ĊĠĠĠĠĠĠĠ Ġleg ato Types : ĠList < Pair < Int , Int >> Ġ= ĠlistOf ( Pair ( 2 , 0 )), ĊĠĠĠĠĠĠĠ Ġme lo dy Types : ĠList < Int > Ġ= ĠlistOf ( 0 ), ĊĠĠĠĠĠĠĠ Ġgl iss ando Flags : ĠInt Ġ= Ġ 0 , Ġaudio 8 D Flags : ĠInt Ġ= Ġ 0 , Ġvi br ato : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġ) Ġ: ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġerror Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġdur ations Ġ= Ġr hy thm . fold ( listOf < Int > ()){ acc , Ġtriple Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġacc Ġ+ Ġif ( triple . second ) Ġtriple . first . ret ro grade Values (). repeat ( triple . third ) Ġelse Ġtriple . first . values . repeat ( triple . third ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// println (" dur ations : Ġ$ dur ations ") ĊĠĠĠĠĠĠĠ Ġval Ġactual Dur ations Ġ= Ġif Ġ( r hy thm Shuffle ) ĠlistOf (* dur ations . to Typed Array (), * dur ations . to Typed Array (), * dur ations . to Typed Array ()). sh uffled () Ġelse Ġdur ations ĊĠĠĠĠĠĠĠ Ġval Ġn Parts Ġ= Ġcounter points . max By OrNull Ġ{ Ġit ?. parts ?. size Ġ?: Ġ 0 } ?. parts ?. size Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġensemble Parts : ĠList < En semble Part > Ġ= Ġif ( ensemble Types . size Ġ== Ġ 1 ) ĠEn semb les . get En semble ( n Parts , Ġensemble Types [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠEn semb les . get En semble Mix ( n Parts , Ġensemble Types ) ĊĠĠĠĠĠĠĠ Ġ// ensemble Parts . display () ĊĠĠĠĠĠĠĠ Ġval Ġactual En semble Parts Ġ= Ġif Ġ( parts Shuffle ) Ġensemble Parts . sh uffled () Ġelse Ġensemble Parts ĊĠĠĠĠĠĠĠ Ġval Ġfirst Counter point Ġ= Ġcounter points . first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġ" NOT ĠEVEN ĠONE ĠCOUN TER POINT ĠTO ĠP LAY !! !" ĊĠĠĠĠĠĠĠ Ġval Ġn Notes To Skip Ġ= Ġr hy thm [ 0 ]. first . n Notes Left InThe Pattern ( first Counter point . n Notes ()) ĊĠĠĠĠĠĠĠ Ġ// var Ġactual Counter point Ġ= Ġif Ġ( row Forms Ġ== ĠlistOf ( 1 )) Ġcounter point Ġelse ĠCounter point . explode Row Forms ( counter point , Ġrow Forms , Ġn Notes To Skip ) ĊĠĠĠĠĠĠĠ Ġvar Ġactual Counter point Ġ= Ġif Ġ( row Forms Ġ== ĠlistOf ( Pair ( 1 , 1 )) Ġ) Ġfirst Counter point ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠCounter point . explode Row Forms Adding C ps ( counter points , Ġrow Forms , Ġn Notes To Skip ) ĊĠĠĠĠĠĠĠ Ġactual Counter point Ġ= Ġif ( rit orn el lo Ġ> Ġ 0 ) Ġ Ġactual Counter point . rit orn el lo ( rit orn el lo , Ġtranspose ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġactual Counter point . transpose ( transpose [ 0 ]) ĊĠĠĠĠĠĠĠ Ġval Ġgl iss ando : ĠList < Int > Ġ= Ġif ( gl iss ando Flags Ġ== Ġ 0 ) ĠlistOf () Ġelse Ġconvert Gl iss ando Flags ( gl iss ando Flags ) ĊĠĠĠĠĠĠĠ Ġval Ġaudio 8 D : ĠList < Int > Ġ= Ġif ( audio 8 D Flags Ġ== Ġ 0 ) ĠlistOf () Ġelse Ġconvert Flags To Ints ( audio 8 D Flags ). toList () ĊĠĠĠĠĠĠĠ Ġval Ġvi br ato Extensions Ġ= ĠlistOf ( 0 , Ġ 3 6 0 , Ġ 2 4 0 Ġ, 1 6 0 , Ġ 1 2 0 , Ġ 8 0 Ġ, 6 0 , Ġ 3 0 , Ġ 1 5 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( actual Counter point . isEmpty ()) Ġreturn Ġ" Counter point Ġto Ġplay Ġis Ġempty !! !" ĊĠĠĠĠĠĠĠ Ġif Ġ( actual Counter point . parts [ 0 ]. abs P itches . size Ġ== Ġ 0 ) Ġreturn Ġ" Counter point Ġparts Ġare Ġempty !! !" ĊĊĠĠĠĠĠĠĠ Ġval Ġcounter point Track Data : ĠList < Track Data > Ġ= ĠCounter point Interpreter . do The Magic ( actual Counter point , Ġactual Dur ations , Ġactual En semble Parts , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnu ances , Ġdoub ling Flags , Ġrange Types , Ġme lo dy Types , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgl iss ando , Ġaudio 8 D , Ġvi br ato Extensions [ vi br ato ]) ĊĠĠĠĠĠĠĠ Ġif Ġ( counter point Track Data . isEmpty ()) Ġreturn Ġ" No ĠTrack s Ġin ĠCounter point !! !" ĊĊĠĠĠĠĠĠĠ Ġval Ġtotal Length Ġ= Ġ( counter point Track Data . filter { it . ticks . isNotEmpty ()}. max Of OrNull { Ġit . ticks . last () Ġ+ Ġit . dur ations . last ()} Ġ?: Ġ 0 ). to Long () // . also { println (" Total Ġlength : Ġ$ it ")} Ġ// ĠEmpty Ġtracks Ġhave Ġ 0 Ġlength ĊĊĠĠĠĠĠĠĠ Ġ// LEG AT O ĠAND ĠR IB ATT UTO ĠD URATION ĠZ ONE ĊĠĠĠĠĠĠĠ Ġ// Ġnone , Ġst ac cat iss imo , Ġst ac cat o , Ġport ato , Ġart icol ato , Ġleg ato , Ġleg at iss imo ĊĠĠĠĠĠĠĠ Ġ// println (" leg ato Types : Ġ$ leg ato Types ") ĊĠĠĠĠĠĠĠ Ġif ( leg ato Types Ġ!= ĠlistOf ( Pair ( 4 , 0 )) ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Leg ato Ġ= Ġr hy thm . min By OrNull Ġ{ Ġit . first . metro Denom inator Midi Value () Ġ} !!. first . metro Denom inator Midi Value () Ġ/ Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġart Map Ġ= Ġmap Of ( 0 Ġto Ġ 1 . 0 f , Ġ 1 Ġto Ġ 0 . 1 2 5 f , Ġ 2 Ġto Ġ 0 . 2 5 f , Ġ 3 Ġto Ġ 0 . 7 5 f , Ġ 4 Ġto Ġ 1 . 0 f , Ġ 5 Ġto Ġ 1 . 1 2 5 f , Ġ 6 Ġto Ġ 1 . 2 5 f Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleg atos Ġ= Ġleg ato Types . map { Ġart Map [ it . first . absolute Value ] !! Ġ* Ġ( if ( it . first < 0 ) Ġ- 1 Ġelse Ġ 1 )} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleg ato Alter ations And Del tas Ġ= Ġalter ate B pm With Distribution ( leg atos , 0 . 0 0 5 f , Ġtotal Length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleg ato Alter ations Ġ= Ġleg ato Alter ations And Del tas . first // . also Ġ{ Ġprintln ("${ it . size } Ġ+ Ġ$ it ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleg ato Del tas Ġ= Ġleg ato Alter ations And Del tas . second // . also Ġ{ Ġprintln ("${ it . size } Ġ+ Ġ$ it ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . N ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcounter point Track Data . parallel Stream (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . art ic ulation Dur ations Ġ= Ġalter ate Art ic ulation ( it . ticks , Ġit . dur ations , Ġleg ato Alter ations , Ġleg ato Del tas , Ġit . is Previous Rest , Ġmax Leg ato ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcounter point Track Data . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . art ic ulation Dur ations Ġ= Ġalter ate Art ic ulation ( it . ticks , Ġit . dur ations , Ġleg ato Alter ations , Ġleg ato Del tas , Ġit . is Previous Rest , Ġmax Leg ato ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠTRANS FORM ĠDAT AT R ACK S ĠIN ĠM ID IT R ACK S ĊĠĠĠĠĠĠĠ Ġval Ġcounter point Tracks Ġ= Ġcounter point Track Data . map { ĠconvertTo Midi Track ( it , Ġcounter point Track Data . size ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// val Ġcounter point Tracks Ġ= ĠlistOf ( pitch B ender Test ( Midi Track ())) ĊĠĠĠĠĠĠ Ġ// val Ġtotal Length Ġ= Ġcounter point Tracks . max Of { Ġit . length In Ticks }// . also { println (" Total Ġlength : Ġ$ it ")} Ġ// ĠEmpty Ġtracks Ġhave Ġ 0 Ġlength ĊĠĠĠĠĠĠĠ Ġval Ġtempo Track Ġ= ĠM idi Track () ĊĠĠĠĠĠĠĠ Ġ// Ġfrom ĠTime Signature . class Ċ // ĠĠĠĠĠĠĠ Ġpublic Ġstatic Ġfinal Ġint ĠDEFAULT _ METER Ġ= Ġ 2 4 ; Ċ // ĠĠĠĠĠĠĠ Ġpublic Ġstatic Ġfinal Ġint ĠDEFAULT _ DIV ISION Ġ= Ġ 8 ; ĊĠ Ġ// ĠĠĠĠĠ Ġval Ġts Ġ= ĠTime Signature () Ċ // ĠĠĠĠĠĠĠ Ġts . setTime Signature ( r hy thm [ 0 ]. first . metro . first , Ġr hy thm [ 0 ]. first . metro . second , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTime Signature . DEFAULT _ METER , ĠTime Signature . DEFAULT _ DIV ISION ) ĊĠĠĠĠ Ġ// Ġ Ġtempo Track . insert Event ( ts ); ĊĊĠĠĠĠĠĠĠ Ġ// val Ġt Ġ= ĠTemp o () ĊĠĠĠĠĠĠĠ Ġ// t . bpm Ġ= Ġb pm ĊĠĠĠĠĠĠĠ Ġ// val Ġt 2 Ġ= ĠTemp o ( total Length / 2 , 0 L , Ġ 5 0 0 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġ// t 2 . bpm Ġ= Ġb pm Ġ* Ġ 3 ĊĠĠĠĠĠĠĠ Ġ// temp o Track . insert Event ( t ) ĊĠĠĠĠĠĠĠ Ġ// temp o Track . insert Event ( t 2 ) ĊĠĠĠĠĠĠĠ Ġ// val Ġb pm Alter ations Ġ= Ġb pm . project To ( bpm * 2 , Ġ 0 . 5 f ). project To ( bpm , Ġ 0 . 5 f ). also { println ( it )} ĊĠĠĠĠĠĠĠ Ġ// ĠINSERT ĠB PM ĠALTER ATIONS ĊĠĠĠĠĠĠĠ Ġval Ġb pm Alter ations And Del tas Ġ= Ġalter ate B pm With Distribution ( bp ms , Ġ 0 . 5 f , Ġtotal Length ) ĊĠĠĠĠĠĠĠ Ġvar Ġtempo Tick Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġval Ġb pm Alter ations Ġ= Ġb pm Alter ations And Del tas . first // . also Ġ{ Ġprintln ("${ it . size } Ġ+ Ġ$ it ") Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġb pm Del tas Ġ= Ġb pm Alter ations And Del tas . second // . also Ġ{ Ġprintln ("${ it . size } Ġ+ Ġ$ it ") Ġ} ĊĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġb pm Alter ations . size Ġ- 1 ). forEach Ġ{ Ġindex Ġ-> Ġ// Ġdoesn 't Ġtake Ġthe Ġlast Ġb pm ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Temp o Ġ= ĠTemp o ( temp o Tick , Ġ 0 L , Ġ 5 0 0 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Temp o . bpm Ġ= Ġb pm Alter ations [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtempo Track . insert Event ( new Temp o ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtempo Tick Ġ+= Ġb pm Del tas [ index ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// val Ġdynamics Ġ= ĠlistOf ( 1 f , 0 f , 1 f ) ĊĠĠĠĠĠĠĠ Ġval Ġdynamic Alter ations And Del tas Ġ= Ġalter ate B pm With Distribution ( dynamics , 0 . 0 1 f , Ġtotal Length ) ĊĠĠĠĠĠĠĠ Ġtempo Tick Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġval Ġdynamic Alter ations Ġ= Ġdynamic Alter ations And Del tas . first // . also Ġ{ Ġprintln ("${ it . size } Ġ+ Ġ$ it ") Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdynamic Del tas Ġ= Ġdynamic Alter ations And Del tas . second // . also Ġ{ Ġprintln ("${ it . size } Ġ+ Ġ$ it ") Ġ} ĊĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġdynamic Alter ations . size Ġ- 1 ). forEach Ġ{ Ġindex Ġ-> Ġ// Ġdoesn 't Ġtake Ġthe Ġlast Ġdynamic ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 0 x 7 F Ġ= Ġuniversal Ġim medi at ly Ġmessage , Ġ 0 x 7 F Ġ= Ġall Ġdevices , Ġ 0 x 0 4 Ġ= Ġdevice Ġcontrol Ġmessage , Ġ 0 x 0 1 Ġ= Ġmaster Ġvolume ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbytes Ġ= Ġfirst Ġthe Ġlow Ġ 7 Ġbits , Ġsecond Ġthe Ġhigh Ġ 7 Ġbits Ġ- Ġvolume Ġis Ġfrom Ġ 0 x 0 0 0 0 Ġto Ġ 0 x 3 FFF ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvolume Bytes : ĠPair < Int , ĠInt > Ġ= Ġdynamic Alter ations [ index ]. convert Dynamic ToBytes () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata : ĠByteArray Ġ= ĠlistOf ( 0 x 7 F , 0 x 7 F , Ġ 0 x 0 4 , Ġ 0 x 0 1 , volume Bytes . first , volume Bytes . second , Ġ 0 xF 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fold Indexed ( ByteArray ( 7 )){ i , Ġa , Ġv Ġ-> Ġa . apply { Ġset ( i , Ġv . to Byte ()) }} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew General Volume Ġ= ĠSystem Exclusive Event ( 0 xF 0 , Ġtempo Tick , Ġdata ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtempo Track . insert Event ( new General Volume ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtempo Tick Ġ+= Ġdynamic Del tas [ index ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtracks : Ġjava . util . ArrayList < Midi Track > Ġ= Ġjava . util . ArrayList < Midi Track >() ĊĠĠĠĠĠĠĠ Ġset Time Signatures ( temp o Track , Ġr hy thm , Ġtotal Length ) ĊĠĠĠĠĠĠĠ Ġtracks . add ( temp o Track ) ĊĠĠĠĠĠĠĠ Ġtracks . addAll ( counter point Tracks ) ĊĠĠĠĠĠĠĠ Ġval Ġmidi Ġ= ĠM idi File ( Midi File . DEFAULT _ RESOL UTION , Ġtracks ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsave And Play Midi File ( media Player , Ġmidi , Ġlooping , Ġplay , Ġmidi File ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Time Signatures ( temp o Track : ĠM idi Track , Ġr hy thm : ĠList < Triple < R hy thm Patterns , ĠBoolean , ĠInt >>, Ġtotal Length : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtick Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġvar Ġlast Tick Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġvar Ġlast Signature Ġ= ĠPair (- 1 ,- 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġsignatures : ĠList < Pair < Int , ĠPair < Int , Int >>> Ġ= Ġr hy thm . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( it . first . pattern Duration () Ġ* Ġit . third , ĠPair ( it . first . metro . first , Ġit . first . metro . second ) Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( tick Ġ< Ġtotal Length ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Signature Ġ= Ġsignatures [ index ]. second ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( new Signature Ġ!= Ġlast Signature ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġts Ġ= ĠTime Signature ( tick , Ġ 0 L , Ġnew Signature . first , Ġnew Signature . second , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTime Signature . DEFAULT _ METER , ĠTime Signature . DEFAULT _ DIV ISION Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtempo Track . insert Event ( ts ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// println (" SIGNATURE Ġ#$ index : Ġtick Ġ= Ġ$ tick Ġ Ġmet ro Ġ= Ġ${ new Signature . first }/${ new Signature . second }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Signature Ġ= Ġnew Signature ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtick Ġ+= Ġsignatures [ index ]. first ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġ++ index Ġ% Ġsignatures . size ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġalter ate Art ic ulation ( ticks : ĠInt Array , Ġdur ations : ĠInt Array , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleg ato Alter ations : ĠList < Float >, Ġleg ato Del tas : ĠList < Long >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Is Rest : ĠBoolean Array , Ġmax Leg ato : ĠInt ): ĠInt Array Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( dur ations . isEmpty ()) Ġreturn ĠInt Array ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠInt Array ( dur ations . size ) ĊĠĠĠĠĠĠĠ Ġvar Ġalter ation Index Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġalter ation Tick Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġdur Index Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġleg ato Alter ation : ĠFloat ĊĠĠĠĠĠĠĠ Ġvar Ġnew Dur : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġnext Dur : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġthis Dur : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġleg ato : ĠInt ĊĠĠĠĠĠĠĠ Ġif Ġ( dur ations . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile ( dur Index Ġ< Ġdur ations . size Ġ- Ġ 1 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile ( alter ation Tick Ġ+ Ġleg ato Del tas [ alter ation Index ] Ġ< Ġticks [ dur Index ] Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalter ation Tick Ġ+= Ġleg ato Del tas [ alter ation Index ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalter ation Index ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleg ato Alter ation Ġ= Ġleg ato Alter ations [ alter ation Index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Dur Ġ= Ġdur ations [ dur Index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( leg ato Alter ation <= 1 . 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Dur Ġ= Ġ( this Dur Ġ* Ġleg ato Alter ation ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ dur Index ] Ġ= Ġif ( new Dur Ġ< Ġ 1 2 ) Ġ 1 2 Ġelse Ġnew Dur ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( previous Is Rest [ dur Index + 1 ]){ Ġ// Ġthere Ġis Ġa Ġrest Ġbetween Ġnotes , Ġleg ato Ġis Ġnot Ġrequested ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ dur Index ] Ġ= Ġthis Dur ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Dur Ġ= Ġdur ations [ dur Index Ġ+ Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleg ato Ġ= Ġ( next Dur Ġ* Ġ( leg ato Alter ation Ġ- Ġ 1 f )). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ dur Index ] Ġ= Ġif ( leg ato Ġ> Ġmax Leg ato ) Ġthis Dur Ġ+ Ġmax Leg ato Ġelse Ġthis Dur Ġ+ Ġleg ato ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdur Index ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhile ( alter ation Tick Ġ+ Ġleg ato Del tas [ alter ation Index ] Ġ< Ġticks [ dur Index ] Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalter ation Tick Ġ+= Ġleg ato Del tas [ alter ation Index ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalter ation Index ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġleg ato Alter ation Ġ= Ġleg ato Alter ations [ alter ation Index ] ĊĠĠĠĠĠĠĠ Ġthis Dur Ġ= Ġdur ations [ dur Index ] ĊĠĠĠĠĠĠĠ Ġif ( leg ato Alter ation <= 1 . 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Dur Ġ= Ġ( this Dur Ġ* Ġleg ato Alter ation ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ dur Index ] Ġ= Ġif ( new Dur Ġ< Ġ 1 2 ) Ġ 1 2 Ġelse Ġnew Dur ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ dur Index ] Ġ= Ġthis Dur Ġ// Ġlast Ġnote Ġdoesn 't Ġneed Ġleg ato ĊĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġprintln (" Original Ġdur ations : Ġ${ dur ations . content ToString () }") Ċ // ĠĠĠĠĠĠĠ Ġresult . also { Ġprintln (" Alter ate Ġart ic ulations : Ġ${ it . content ToString () }") Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave And Play Midi File ( media Player : ĠMedia Player , Ġmidi : ĠM idi File , Ġlooping : ĠBoolean , Ġplay : ĠBoolean , Ġmidi File : ĠFile ?) Ġ: ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( media Player . is Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Player . stop () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmedia Player . reset () ĊĠĠĠĠĠĠĠ Ġ// Ġ 4 . ĠWrite Ġthe ĠMIDI Ġdata Ġto Ġa Ġfile ĊĠĠĠĠĠĠĠ Ġ// File Ġoutput Ġ= Ġnew ĠFile ( get External Files Dir ( null ), Ġ" example . mid "); ĊĠĠĠĠĠĠĠ Ġ// File Ġoutput Ġ= Ġnew ĠFile ("/ sd card / example . mid "); ĊĊĠĠĠĠĠĠĠ Ġ// Ġ------------- ĠWARNING !!!! Ġ------------- ĊĠĠĠĠĠĠĠ Ġ// DO ES N ' T ĠWORK ĠFOR ĠL ATE ST ĠAND ROID ĠVERSION S ĊĠĠĠĠĠĠĠ Ġoutput Ġ= Ġmidi File ĊĠĠĠĠĠĠĠ Ġvar Ġerror Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ// create Dialog ( output . toString ()); ĊĠĠĠĠĠĠĠ Ġ// media Player 2 Ġ= Ġnew ĠMedia Player (); ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmidi . write ToFile ( output ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( Player :: class . java . toString (), Ġe . message , Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Ġ= Ġe . message . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġerror ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( play ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Player . set DataSource ( output !!. getAbsolutePath ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Player . prepare () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// player . create ( Har mony 1 2 . this , Ġoutput .); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : Ġjava . lang . Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( Player :: class . java . toString (), Ġe . message , Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Ġ= Ġe . message . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġerror ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// media Player . set Aux Effect Send Level () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// System . out . println (" Mid if ile Ġsal v ato "); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Player . start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// media Player . set Loop ing ( loop ing ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġerror ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġoutput : Ġjava . io . File ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġoutput 1 : Ġjava . io . File ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġoutput 2 : Ġjava . io . File ? Ġ= Ġnull ĊĠĠĠ Ġfun Ġcreate T win Midi Files ( beb op Band : ĠB eb op Band , Ġchar lie Par ker : ĠChar lie Par ker , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbe b op Me lo dy : ĠB eb op Me lo dy , Ġch ord Sequence : ĠCh ord Sequence , Ġb pm : ĠFloat , Ġsolo Instrument : ĠInt , Ġshuffle : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( gen ius Ġ== Ġnull ) Ġgen ius Ġ= ĠChar lie Par ker Band () ĊĠĠĠĠĠĠĠ Ġval Ġmidi : ĠM idi File Ġ= Ġgen ius !!. play Scheme ( beb op Band , char lie Par ker , Ġbe b op Me lo dy , Ġch ord Sequence , bpm , solo Instrument , Ġshuffle ) ĊĠĠĠĠĠĠĠ Ġoutput 1 Ġ= Ġjava . io . File ( Environment . get External Storage Directory (), Ġ" Gen ius 1 . mid ") ĊĠĠĠĠĠĠĠ Ġoutput 2 Ġ= Ġjava . io . File ( Environment . get External Storage Directory (), Ġ" Gen ius 2 . mid ") ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmidi . write ToFile ( output 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmidi . write ToFile ( output 2 ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( Player :: class . java . toString (), Ġe . message , Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}// player . create ( Har mony 1 2 . this , Ġoutput .); ĊĊĠĠĠ Ġ// ĠCL ONE Ġthe Ġmedi ap layer ĊĠĠĠ Ġval Ġmedia Player 2 : ĠMedia Player ĊĠĠĠĠĠĠĠ Ġget () Ġ{ Ġ// ĠCL ONE Ġthe Ġmedi ap layer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmedia Player 2 Ġ= ĠMedia Player () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Player 2 . set DataSource ( output !!. getAbsolutePath ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Player 2 . prepare () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// player . create ( Har mony 1 2 . this , Ġoutput .); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : Ġjava . lang . Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( Player :: class . java . toString (), Ġe . message , Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmedia Player 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġpitch B ender Test ( mt : ĠM idi Track ): ĠM idi Track { ĊĠĠĠĠĠĠĠ Ġval Ġp itches 2 m Ġ= ĠlistOf ( 6 1 , 6 0 , 5 9 , 6 1 , 6 0 , 5 9 ) ĊĠĠĠĠĠĠĠ Ġval Ġno B end Ġ= Ġ 8 1 9 2 ĊĠĠĠĠĠĠĠ Ġval Ġht Ġ= Ġ 4 0 9 6 ĊĠĠĠĠĠĠĠ Ġval Ġhalf Tone Up Ġ= Ġno B end Ġ+ Ġht ĊĠĠĠĠĠĠĠ Ġval Ġhalf Tone Down Ġ= Ġno B end Ġ- Ġht ĊĠĠĠĠĠĠĠ Ġval Ġtone Up Ġ= Ġno B end Ġ+ Ġht Ġ* Ġ 2 Ġ- 1 ĊĠĠĠĠĠĠĠ Ġval Ġtone Down Ġ= Ġno B end Ġ+ Ġht Ġ* Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġd urs Ġ= ĠlistOf ( 4 8 0 , 4 8 0 , 4 8 0 , 4 8 0 , 4 8 0 , 4 8 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġgl iss Amount s Ġ= ĠlistOf ( no B end , Ġno B end , Ġno B end , Ġtone Down , Ġtone Down , Ġno B end Ġ) ĊĠĠĠĠĠĠ Ġ// Ġvar Ġlast Gl iss Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġp itches Ġ= Ġp itches 2 m ĊĠĠĠĠĠĠĠ Ġvar Ġtick Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġ 3 ). forEach { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġon Ġ= ĠNote On ( tick , Ġ 0 , Ġp itches [ it ], Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoff Ġ= ĠNote Off ( tick Ġ+ Ġd urs [ it ]- 1 , Ġ 0 , Ġp itches [ it ], Ġ 8 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( on ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( off ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtick Ġ+= Ġd urs [ it ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ( 3 Ġuntil Ġ 6 ). forEach { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end Off = ĠP itch B end ( tick Ġ, Ġ 0 , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end Off . b end Amount Ġ= Ġno B end ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end Off ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it Ġ!= Ġ 5 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// 7 1 6 8 Ġ 6 1 4 4 Ġ 5 1 2 0 Ġ 4 0 9 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 1 Ġ= ĠP itch B end ( tick + 1 2 0 , Ġ 0 , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 1 . b end Amount Ġ= Ġ 7 1 6 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 2 Ġ= ĠP itch B end ( tick + 2 4 0 , Ġ 0 , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 2 . b end Amount Ġ= Ġ 6 1 4 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 3 Ġ= ĠP itch B end ( tick + 3 6 0 , Ġ 0 , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 3 . b end Amount Ġ= Ġ 5 1 2 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 4 = ĠP itch B end ( tick + 4 8 0 - 1 , Ġ 0 , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 4 . b end Amount Ġ= Ġ 4 0 9 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġon Ġ= ĠNote On ( tick , Ġ 0 , Ġp itches [ it ], Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoff Ġ= ĠNote Off ( tick Ġ+ Ġd urs [ it ]- 1 , Ġ 0 , Ġp itches [ it ], Ġ 8 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( on ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( off ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtick Ġ+= Ġd urs [ it ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmt ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġseparator Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġvar Ġlast Is Gl iss Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġfun Ġinsert Note With Gl iss ando ( ĊĠĠĠĠĠĠĠ Ġmt : ĠM idi Track , Ġstart : ĠLong , Ġduration : ĠLong , Ġchannel : ĠInt , ĊĠĠĠĠĠĠĠ Ġpitch : ĠInt , Ġvel On : ĠInt , Ġvel Off : ĠInt , Ġgl iss : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// println (" pitch : Ġ$ pitch ĠĠ Ġgl iss : Ġ$ gl iss ĠĠ Ġduration : Ġ$ duration Ġ Ġlast Is Gl iss : Ġ$ last Is Gl iss ") ĊĠĠĠĠĠĠĠ Ġval Ġdur Ġ= Ġduration Ġ- Ġseparator ĊĠĠĠĠĠĠĠ Ġif ( gl iss Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( last Is Gl iss ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end Off Ġ= ĠP itch B end ( start , Ġchannel , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end Off . b end Amount Ġ= Ġ 8 1 9 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end Off ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Is Gl iss Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġon Ġ= ĠNote On ( start , Ġchannel , Ġpitch , Ġvel On ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoff Ġ= ĠNote Off ( start Ġ+ Ġdur , Ġchannel , Ġpitch , Ġvel Off ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( on ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( off ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Is Gl iss Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( gl iss ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Qu arter Ġ= Ġduration Ġ/ Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 1 = ĠP itch B end ( start Ġ+ Ġduration Qu arter , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 2 = ĠP itch B end ( start Ġ+ Ġduration Qu arter Ġ* Ġ 2 , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 3 = ĠP itch B end ( start Ġ+ Ġduration Qu arter Ġ* Ġ 3 , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 4 = ĠP itch B end ( start Ġ+ Ġdur , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end Off = ĠP itch B end ( start Ġ, Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 0 Ġ 4 0 9 6 Ġ 8 1 9 2 Ġ 1 2 2 8 8 Ġ( 1 4 3 3 5 ) Ġ 1 6 3 8 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ[ 4 0 9 6 ] Ġ 5 1 2 0 Ġ 6 1 4 4 Ġ 7 1 6 8 Ġ 8 1 9 2 (+ ht ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// val Ġc Ġ= Ġ 4 0 9 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 1 . b end Amount Ġ= Ġ 9 2 1 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 2 . b end Amount Ġ= Ġ 1 0 2 4 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 3 . b end Amount Ġ= Ġ 1 1 2 6 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 4 . b end Amount Ġ= Ġ 1 2 2 8 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end Off . b end Amount Ġ= Ġ 8 1 9 2 // 0 Ġ+ c ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġon Ġ= ĠNote On ( start , Ġchannel , Ġpitch , Ġvel On ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoff Ġ= ĠNote Off ( start Ġ+ Ġdur , Ġchannel , Ġpitch , Ġvel Off ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end Off ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( on ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( off ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Oct ave Ġ= Ġduration Ġ/ Ġ 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 1 = ĠP itch B end ( start Ġ+ Ġduration Oct ave , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 2 = ĠP itch B end ( start Ġ+ Ġduration Oct ave Ġ* Ġ 2 , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 3 = ĠP itch B end ( start Ġ+ Ġduration Oct ave Ġ* Ġ 3 , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 4 = ĠP itch B end ( start Ġ+ Ġduration Oct ave Ġ* Ġ 4 , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 5 = ĠP itch B end ( start Ġ+ Ġduration Oct ave Ġ* Ġ 5 , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 6 = ĠP itch B end ( start Ġ+ Ġduration Oct ave Ġ* Ġ 6 , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 7 = ĠP itch B end ( start Ġ+ Ġduration Oct ave Ġ* Ġ 7 , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 8 = ĠP itch B end ( start Ġ+ Ġdur , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end Off = ĠP itch B end ( start Ġ, Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end Off 2 = ĠP itch B end ( start Ġ+ Ġdur Ġ, Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 0 Ġ 1 0 2 4 Ġ 2 0 4 8 Ġ 3 0 7 2 Ġ 4 0 9 6 ( ht ) Ġ 5 1 2 0 Ġ 6 1 4 4 Ġ 7 1 6 8 Ġ 8 1 9 2 Ġ 9 2 1 6 Ġ 1 0 2 4 0 Ġ 1 1 2 6 4 Ġ 1 2 2 8 8 Ġ 1 3 3 1 2 Ġ 1 4 3 3 6 Ġ 1 5 3 6 0 Ġ 1 6 3 8 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 1 . b end Amount Ġ= Ġ 9 2 1 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 2 . b end Amount Ġ= Ġ 1 0 2 4 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 3 . b end Amount Ġ= Ġ 1 1 2 6 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 4 . b end Amount Ġ= Ġ 1 2 2 8 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 5 . b end Amount Ġ= Ġ 1 3 3 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 6 . b end Amount Ġ= Ġ 1 4 3 3 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 7 . b end Amount Ġ= Ġ 1 5 3 6 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 8 . b end Amount Ġ= Ġ 1 6 3 8 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end Off . b end Amount Ġ= Ġ 8 1 9 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġon Ġ= ĠNote On ( start , Ġchannel , Ġpitch , Ġvel On ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoff Ġ= ĠNote Off ( start Ġ+ Ġdur , Ġchannel , Ġpitch , Ġvel Off ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end Off ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( on ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( off ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 2 Ġ= Ġduration Ġ/ Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 1 Ġ= Ġduration 2 Ġ* Ġ 2 Ġ+ Ġduration Ġ% Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart , Ġduration 1 , Ġchannel , Ġpitch , Ġvel On , Ġvel Off , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 2 , Ġvel On , Ġvel Off , 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 2 Ġ= Ġduration Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 1 Ġ= Ġduration 2 Ġ+ Ġduration Ġ% Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart , Ġduration 1 , Ġchannel , Ġpitch , Ġvel On , Ġvel Off , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 2 , Ġvel On , Ġvel Off , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 3 Ġ= Ġduration Ġ/ Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 2 Ġ= Ġduration 3 Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 1 Ġ= Ġduration 2 Ġ+ Ġduration Ġ% Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart , Ġduration 1 , Ġchannel , Ġpitch , Ġvel On , Ġvel Off , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 2 , Ġvel On , Ġvel Off , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 , Ġduration 3 , Ġchannel , Ġpitch Ġ+ Ġ 4 , Ġvel On , Ġvel Off , 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 2 Ġ= Ġduration Ġ/ Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 1 Ġ= Ġduration 2 Ġ+ Ġduration Ġ% Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart , Ġduration 1 , Ġchannel , Ġpitch , Ġvel On , Ġvel Off , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 2 , Ġvel On , Ġvel Off , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 4 , Ġvel On , Ġvel Off , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 7 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 3 Ġ= Ġduration Ġ/ Ġ 7 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 2 Ġ= Ġduration 3 Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 1 Ġ= Ġduration 2 Ġ+ Ġduration Ġ% Ġ 7 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart , Ġduration 1 , Ġchannel , Ġpitch , Ġvel On , Ġvel Off , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 2 , Ġvel On , Ġvel Off , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ, Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 4 , Ġvel On , Ġvel Off , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 2 , Ġduration 3 , Ġchannel , Ġpitch Ġ+ Ġ 6 , Ġvel On , Ġvel Off , 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 8 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 2 Ġ= Ġduration Ġ/ Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 1 Ġ= Ġduration 2 Ġ+ Ġduration Ġ% Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart , Ġduration 1 , Ġchannel , Ġpitch , Ġvel On , Ġvel Off , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 2 , Ġvel On , Ġvel Off , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 4 , Ġvel On , Ġvel Off , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 2 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 6 , Ġvel On , Ġvel Off , 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 9 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 3 Ġ= Ġduration Ġ/ Ġ 9 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 2 Ġ= Ġduration 3 Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 1 Ġ= Ġduration 2 Ġ+ Ġduration Ġ% Ġ 9 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart , Ġduration 1 , Ġchannel , Ġpitch , Ġvel On , Ġvel Off , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 2 , Ġvel On , Ġvel Off , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ, Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 4 , Ġvel On , Ġvel Off , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 2 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 6 , Ġvel On , Ġvel Off , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 3 , Ġduration 3 , Ġchannel , Ġpitch Ġ+ Ġ 8 , Ġvel On , Ġvel Off , 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 2 Ġ= Ġduration Ġ/ Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 1 Ġ= Ġduration 2 Ġ+ Ġduration Ġ% Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart , Ġduration 1 , Ġchannel , Ġpitch , Ġvel On , Ġvel Off , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 2 , Ġvel On , Ġvel Off , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 4 , Ġvel On , Ġvel Off , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 2 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 6 , Ġvel On , Ġvel Off , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 3 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 8 , Ġvel On , Ġvel Off , 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 3 Ġ= Ġduration Ġ/ Ġ 1 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 2 Ġ= Ġduration 3 Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 1 Ġ= Ġduration 2 Ġ+ Ġduration Ġ% Ġ 1 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart , Ġduration 1 , Ġchannel , Ġpitch , Ġvel On , Ġvel Off , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 2 , Ġvel On , Ġvel Off , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ, Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 4 , Ġvel On , Ġvel Off , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 2 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 6 , Ġvel On , Ġvel Off , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 3 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 8 , Ġvel On , Ġvel Off , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 4 , Ġduration 3 , Ġchannel , Ġpitch Ġ+ Ġ 1 0 , Ġvel On , Ġvel Off , 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 2 Ġ= Ġduration Ġ/ Ġ 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 1 Ġ= Ġduration 2 Ġ+ Ġduration Ġ% Ġ 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart , Ġduration 1 , Ġchannel , Ġpitch , Ġvel On , Ġvel Off , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 2 , Ġvel On , Ġvel Off , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 4 , Ġvel On , Ġvel Off , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 2 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 6 , Ġvel On , Ġvel Off , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 3 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 8 , Ġvel On , Ġvel Off , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 4 , Ġduration 2 , Ġchannel , Ġpitch Ġ+ Ġ 1 0 , Ġvel On , Ġvel Off , 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Qu arter Ġ= Ġduration Ġ/ Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 1 = ĠP itch B end ( start Ġ+ Ġduration Qu arter , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 2 = ĠP itch B end ( start Ġ+ Ġduration Qu arter Ġ* Ġ 2 , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 3 = ĠP itch B end ( start Ġ+ Ġduration Qu arter Ġ* Ġ 3 , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 4 = ĠP itch B end ( start Ġ+ Ġdur , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end Off = ĠP itch B end ( start Ġ, Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 0 Ġ 4 0 9 6 Ġ 8 1 9 2 Ġ 1 2 2 8 8 Ġ( 1 4 3 3 5 ) Ġ 1 6 3 8 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 0 (- ht ) Ġ 1 0 2 4 Ġ 2 0 4 8 Ġ 3 0 7 2 Ġ[ 4 0 9 6 ] off Ġ 5 1 2 0 Ġ 6 1 4 4 Ġ 7 1 6 8 Ġ 8 1 6 2 (+ ht ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// val Ġc Ġ= Ġ 4 0 9 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 3 5 8 4 Ġ 3 0 7 2 Ġ 2 5 6 0 Ġ 2 0 4 8 Ġ 1 5 3 6 Ġ 1 0 2 4 Ġ 5 1 2 Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// 7 1 6 8 Ġ 6 1 4 4 Ġ 5 1 2 0 Ġ 4 0 9 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 1 . b end Amount Ġ= Ġ 7 1 6 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 2 . b end Amount Ġ= Ġ 6 1 4 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 3 . b end Amount Ġ= Ġ 5 1 2 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 4 . b end Amount Ġ= Ġ 4 0 9 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end Off . b end Amount Ġ= Ġ 8 1 9 2 // 0 Ġ+ c ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġon Ġ= ĠNote On ( start , Ġchannel , Ġpitch , Ġvel On ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoff Ġ= ĠNote Off ( start Ġ+ Ġdur , Ġchannel , Ġpitch , Ġvel Off ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end Off ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( on ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( off ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Oct ave Ġ= Ġduration Ġ/ Ġ 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 1 = ĠP itch B end ( start Ġ+ Ġduration Oct ave , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 2 = ĠP itch B end ( start Ġ+ Ġduration Oct ave Ġ* Ġ 2 , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 3 = ĠP itch B end ( start Ġ+ Ġduration Oct ave Ġ* Ġ 3 , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 4 = ĠP itch B end ( start Ġ+ Ġduration Oct ave Ġ* 4 , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 5 = ĠP itch B end ( start Ġ+ Ġduration Oct ave Ġ* Ġ 5 , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 6 = ĠP itch B end ( start Ġ+ Ġduration Oct ave Ġ* Ġ 6 , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 7 = ĠP itch B end ( start Ġ+ Ġduration Oct ave Ġ* Ġ 7 , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end On 8 = ĠP itch B end ( start Ġ+ Ġdur , Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch B end Off = ĠP itch B end ( start Ġ, Ġchannel , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 0 Ġ 1 0 2 4 Ġ 2 0 4 8 Ġ 3 0 7 2 Ġ 4 0 9 6 ( ht ) Ġ 5 1 2 0 Ġ 6 1 4 4 Ġ 7 1 6 8 Ġ 8 1 9 2 Ġ 9 2 1 6 Ġ 1 0 2 4 0 Ġ 1 1 2 6 4 Ġ 1 2 2 8 8 Ġ 1 3 3 1 2 Ġ 1 4 3 3 6 Ġ 1 5 3 6 0 Ġ 1 6 3 8 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 1 . b end Amount Ġ= Ġ 7 1 6 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 2 . b end Amount Ġ= Ġ 6 1 4 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 3 . b end Amount Ġ= Ġ 5 1 2 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 4 . b end Amount Ġ= Ġ 4 0 9 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 5 . b end Amount Ġ= Ġ 3 0 7 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 6 . b end Amount Ġ= Ġ 2 0 4 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 7 . b end Amount Ġ= Ġ 1 0 2 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end On 8 . b end Amount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch B end Off . b end Amount Ġ= Ġ 8 1 9 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġon Ġ= ĠNote On ( start , Ġchannel , Ġpitch , Ġvel On ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoff Ġ= ĠNote Off ( start Ġ+ Ġdur , Ġchannel , Ġpitch , Ġvel Off ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end Off ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( on ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( pitch B end On 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( off ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 2 Ġ= Ġduration Ġ/ Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 1 Ġ= Ġduration 2 Ġ* Ġ 2 Ġ+ Ġduration Ġ% Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart , Ġduration 1 , Ġchannel , Ġpitch , Ġvel On , Ġvel Off , Ġ- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 , Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 2 , Ġvel On , Ġvel Off ,- 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 2 Ġ= Ġduration Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 1 Ġ= Ġduration 2 Ġ+ Ġduration Ġ% Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart , Ġduration 1 , Ġchannel , Ġpitch , Ġvel On , Ġvel Off , Ġ- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 , Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 2 , Ġvel On , Ġvel Off , Ġ- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 5 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 3 Ġ= Ġduration Ġ/ Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 2 Ġ= Ġduration 3 Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 1 Ġ= Ġduration 2 Ġ+ Ġduration Ġ% Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart , Ġduration 1 , Ġchannel , Ġpitch , Ġvel On , Ġvel Off , Ġ- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 , Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 2 , Ġvel On , Ġvel Off ,- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 , Ġduration 3 , Ġchannel , Ġpitch Ġ- Ġ 4 , Ġvel On , Ġvel Off ,- 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 6 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 2 Ġ= Ġduration Ġ/ Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 1 Ġ= Ġduration 2 Ġ+ Ġduration Ġ% Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart , Ġduration 1 , Ġchannel , Ġpitch , Ġvel On , Ġvel Off , Ġ- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 , Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 2 , Ġvel On , Ġvel Off ,- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 , Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 4 , Ġvel On , Ġvel Off ,- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 7 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 3 Ġ= Ġduration Ġ/ Ġ 7 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 2 Ġ= Ġduration 3 Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 1 Ġ= Ġduration 2 Ġ+ Ġduration Ġ% Ġ 7 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart , Ġduration 1 , Ġchannel , Ġpitch , Ġvel On , Ġvel Off , Ġ- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 , Ġduration 2 , Ġchannel , Ġpitch Ġ- 2 , Ġvel On , Ġvel Off ,- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ, Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 4 , Ġvel On , Ġvel Off ,- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 2 , Ġduration 3 , Ġchannel , Ġpitch Ġ- Ġ 6 , Ġvel On , Ġvel Off ,- 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 8 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 2 Ġ= Ġduration Ġ/ Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 1 Ġ= Ġduration 2 Ġ+ Ġduration Ġ% Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart , Ġduration 1 , Ġchannel , Ġpitch , Ġvel On , Ġvel Off , Ġ- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 , Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 2 , Ġvel On , Ġvel Off ,- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 , Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 4 , Ġvel On , Ġvel Off ,- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* 2 , Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 6 , Ġvel On , Ġvel Off ,- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 9 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 3 Ġ= Ġduration Ġ/ Ġ 9 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 2 Ġ= Ġduration 3 Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 1 Ġ= Ġduration 2 Ġ+ Ġduration Ġ% Ġ 9 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart , Ġduration 1 , Ġchannel , Ġpitch , Ġvel On , Ġvel Off , Ġ- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 , Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 2 , Ġvel On , Ġvel Off ,- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ, Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 4 , Ġvel On , Ġvel Off ,- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 2 , Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 6 , Ġvel On , Ġvel Off ,- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 3 , Ġduration 3 , Ġchannel , Ġpitch Ġ- Ġ 8 , Ġvel On , Ġvel Off ,- 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 2 Ġ= Ġduration Ġ/ Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 1 Ġ= Ġduration 2 Ġ+ Ġduration Ġ% Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart , Ġduration 1 , Ġchannel , Ġpitch , Ġvel On , Ġvel Off , Ġ- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 , Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 2 , Ġvel On , Ġvel Off ,- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 , Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 4 , Ġvel On , Ġvel Off ,- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 2 , Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 6 , Ġvel On , Ġvel Off ,- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 3 , Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 8 , Ġvel On , Ġvel Off ,- 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 3 Ġ= Ġduration Ġ/ Ġ 1 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 2 Ġ= Ġduration 3 Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 1 Ġ= Ġduration 2 Ġ+ Ġduration Ġ% Ġ 1 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart , Ġduration 1 , Ġchannel , Ġpitch , Ġvel On , Ġvel Off , Ġ- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 , Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 2 , Ġvel On , Ġvel Off ,- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ, Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 4 , Ġvel On , Ġvel Off ,- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 2 , Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 6 , Ġvel On , Ġvel Off ,- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 3 , Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 8 , Ġvel On , Ġvel Off ,- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 4 , Ġduration 3 , Ġchannel , Ġpitch Ġ- Ġ 1 0 , Ġvel On , Ġvel Off ,- 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 2 Ġ= Ġduration Ġ/ Ġ 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration 1 Ġ= Ġduration 2 Ġ+ Ġduration Ġ% Ġ 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart , Ġduration 1 , Ġchannel , Ġpitch , Ġvel On , Ġvel Off , Ġ- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 , Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 2 , Ġvel On , Ġvel Off ,- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 , Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 4 , Ġvel On , Ġvel Off ,- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 2 , Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 6 , Ġvel On , Ġvel Off ,- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 3 , Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 8 , Ġvel On , Ġvel Off ,- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( mt , Ġstart Ġ+ Ġduration 1 Ġ+ Ġduration 2 Ġ* Ġ 4 , Ġduration 2 , Ġchannel , Ġpitch Ġ- Ġ 1 0 , Ġvel On , Ġvel Off ,- 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 5 Ġ- Ġ 3 7 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġport amento Time Co arse Ġ= ĠController ( start , Ġchannel , Ġ 5 , Ġ 1 0 0 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġport amento Time F ine Ġ= ĠController ( start , Ġchannel , Ġ 3 7 , Ġfine ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġport amento Amount Ġ= ĠController ( start , Ġchannel , Ġ 8 4 , Ġ 6 0 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġport amento Off Ġ= ĠController ( start + duration , Ġchannel , 6 5 , Ġ 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// 0 b 1 0 0 0 0 0 0 0 0 0 0 0 0 1 Ġ= Ġ 8 1 9 3 Ġb end Ġoff ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// mt . insert Event ( port amento On ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// mt . insert Event ( port amento Time Co arse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmt . insert Event ( port amento Time F ine ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmt . insert Event ( port amento Amount ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmt . insert Event ( port amento Off ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// println (" GL IS SAN DO : Ġ$ pitch Ġat Ġ$ start ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġinsert Note Checking High ( ĊĠĠĠĠĠĠĠ Ġmt : ĠM idi Track , Ġstart : ĠInt , Ġduration : ĠInt , Ġchannel : ĠInt , ĊĠĠĠĠĠĠĠ Ġpitch : ĠInt , Ġvel On : ĠInt , Ġvel Off : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġactual Pitch Ġ= Ġpitch ĊĠĠĠĠĠĠĠ Ġwhile Ġ( actual Pitch Ġ> Ġ 1 0 8 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Pitch Ġ-= Ġ 1 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġon Ġ= ĠNote On ( start . to Long (), Ġchannel , Ġactual Pitch , Ġvel On ) ĊĠĠĠĠĠĠĠ Ġval Ġoff Ġ= ĠNote Off (( start Ġ+ Ġduration ). to Long (), Ġchannel , Ġactual Pitch , Ġvel Off ) ĊĠĠĠĠĠĠĠ Ġmt . insert Event ( on ) ĊĠĠĠĠĠĠĠ Ġmt . insert Event ( off ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġinsert Note ( ĊĠĠĠĠĠĠĠ Ġmt : ĠM idi Track , Ġstart : ĠLong , Ġduration : ĠLong , Ġchannel : ĠInt , ĊĠĠĠĠĠĠĠ Ġpitch : ĠInt , Ġvel On : ĠInt , Ġvel Off : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġon Ġ= ĠNote On ( start , Ġchannel , Ġpitch , Ġvel On ) ĊĠĠĠĠĠĠĠ Ġval Ġoff Ġ= ĠNote Off ( start Ġ+ Ġduration , Ġchannel , Ġpitch , Ġvel Off ) ĊĠĠĠĠĠĠĠ Ġmt . insert Event ( on ) ĊĠĠĠĠĠĠĠ Ġmt . insert Event ( off ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġadd Attack Delay To Track ( mt : ĠM idi Track , Ġstart : ĠLong , Ġchannel : ĠInt , Ġattack Delay : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġval Ġattack Amount Ġ= ĠController ( start , channel , 7 3 , Ġattack Delay ) ĊĠĠĠĠĠĠĠ Ġmt . insert Event ( attack Amount ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġadd V ibr ato To Track ( mt : ĠM idi Track , Ġstart : ĠLong , Ġduration : ĠLong , Ġchannel : ĠInt , Ġvi br ato Div isor : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġval Ġn V ibr ations Ġ= Ġ( duration Ġ/ Ġvi br ato Div isor ). toInt () Ġ// Ġ 4 Ġvi br ations Ġin Ġa Ġquarter ĊĠĠĠĠĠĠĠ Ġif ( n V ibr ations Ġ== Ġ 0 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpression On Ġ= ĠController ( start Ġ+ Ġduration Ġ/ Ġ 3 , channel , 1 , Ġ 0 b 1 1 1 1 1 1 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpression Off Ġ= ĠController ( start Ġ+ Ġduration Ġ- Ġ 4 , channel , 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( expression On ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( expression Off ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvi br ation Dur Ġ= Ġduration Ġ/ Ġn V ibr ations ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvi br ation Half Dur Ġ= Ġvi br ation Dur Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvi br ation Qu arter Dur Ġ= Ġvi br ation Dur Ġ/ Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġn V ibr ations ). forEach (){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpression Middle 1 Ġ= ĠController ( start Ġ+ Ġvi br ation Dur Ġ* Ġit Ġ+ Ġvi br ation Qu arter Dur Ġ, Ġchannel , 1 , Ġ 6 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpression On Ġ= ĠController ( start Ġ+ Ġvi br ation Dur Ġ* Ġit Ġ+ Ġvi br ation Half Dur Ġ, Ġchannel , 1 , Ġ 0 b 1 1 1 1 1 1 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpression Middle 2 Ġ= ĠController ( start Ġ+ Ġvi br ation Dur Ġ* Ġit Ġ+ Ġvi br ation Half Dur Ġ+ Ġvi br ation Qu arter Dur Ġ, Ġchannel , 1 , Ġ 6 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpression Off Ġ= ĠController ( start Ġ+ Ġ Ġvi br ation Dur Ġ* Ġ( it Ġ+ Ġ 1 ) Ġ, channel , 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( expression Middle 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( expression On ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( expression Middle 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmt . insert Event ( expression Off ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠconvertTo Midi Track ( track Data : ĠTrack Data , Ġn Parts : ĠInt ): ĠM idi Track Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtrack Ġ= ĠM idi Track () ĊĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= Ġtrack Data . channel ĊĠĠĠĠĠĠĠ Ġval Ġvi br ato Ġ= Ġtrack Data . vi br ato ĊĠĠĠĠĠĠĠ Ġval Ġvelocity Off Ġ= Ġtrack Data . velocity Off ĊĠĠĠĠĠĠĠ Ġval Ġ( pit ches , Ġticks , Ġdur ations , Ġve locities , Ġgl iss ando ) Ġ= Ġtrack Data ĊĠĠĠĠĠĠĠ Ġval Ġart ic ulation Dur ations Ġ= Ġtrack Data . art ic ulation Dur ations Ġ?: Ġdur ations ĊĊĠĠĠĠĠĠĠ Ġ// ĠS TER EO ĠAND ĠIN STR UMENT S ĊĠĠĠĠĠĠĠ Ġval Ġpc : ĠM idi Event Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProgram Change ( 0 , Ġchannel , Ġtrack Data . instrument ) Ġ// Ġcamb ia Ġstr ument o ĊĠĠĠĠĠĠĠ Ġtrack . insert Event ( pc ) ĊĠĠĠĠĠĠĠ Ġval Ġpan Step : ĠInt Ġ= Ġ 1 2 7 Ġ/ Ġn Parts ĊĠĠĠĠĠĠĠ Ġval Ġp ans Ġ= Ġ( 0 Ġuntil Ġn Parts ). map Ġ{ Ġit Ġ* Ġpan Step Ġ+ Ġpan Step Ġ/ Ġ 2 Ġ}// . also Ġ{ Ġprintln ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! track Data . audio 8 D ) Ġ{ Ġ// Ġset Ġa Ġfixed Ġpan Ġif Ġ 8 D ĠA UDIO Ġis Ġnot Ġset Ġon Ġthis Ġtrack ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpan Ġ= ĠController ( 0 , Ġchannel , Ġ 1 0 , Ġp ans [ track Data . part Index ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrack . insert Event ( pan ) ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ // ĠĠĠĠĠĠĠ Ġvar Ġlast Is Gl iss Ġ= Ġfalse Ċ // ĠĠĠĠĠĠĠ Ġvar Ġattack Is Delayed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( track Data . doub ling Flags Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġp itches . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtick Ġ= Ġticks [ i ]. to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgl iss Ġ= Ġgl iss ando [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= Ġdur ations [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġart ic ulation Duration Ġ= Ġart ic ulation Dur ations [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġover Leg ato Ġ= Ġart ic ulation Duration Ġ> Ġduration Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattack Delay Ġ= Ġif ( last Is Gl iss Ġ&& Ġ( art ic ulation Duration Ġ== Ġduration Ġ|| Ġover Leg ato )) Ġ 1 2 7 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdur Ġ= Ġif ( over Leg ato Ġ&& Ġ( gl iss ando [( i + 1 ) Ġ% Ġgl iss ando . size ] Ġ> 0 Ġ|| Ġgl iss Ġ> 0 ) Ġ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration . to Long () Ġelse Ġart ic ulation Duration . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// println (" note Ġ$ i Ġattack : Ġ$ attack Delay ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( track Data . vi br ato Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd V ibr ato To Track ( track , Ġtick , Ġdur , Ġchannel , Ġvi br ato ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( attack Delay Ġ> Ġ 0 ){ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Attack Delay To Track ( track , Ġtick , Ġchannel , Ġattack Delay ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattack Is Delayed Ġ= Ġtrue Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( attack Is Delayed ) Ġ Ġadd Attack Delay To Track ( track , Ġtick , Ġchannel , Ġ 0 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattack Is Delayed Ġ= Ġfalse Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrack , Ġtick , Ġdur , Ġchannel , Ġp itches [ i ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġve locities [ i ], Ġvelocity Off , Ġgl iss ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Is Gl iss Ġ= Ġgl iss Ġ> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoub ling Ġ= Ġconvert Flags To Ints ( track Data . doub ling Flags ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġp itches . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtick Ġ= Ġticks [ i ]. to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgl iss Ġ= Ġgl iss ando [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= Ġdur ations [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġart ic ulation Duration Ġ= Ġart ic ulation Dur ations [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdur Ġ= Ġif ( art ic ulation Duration Ġ> Ġduration Ġ&& Ġ( gl iss ando [( i + 1 ) Ġ% Ġgl iss ando . size ] Ġ> 0 Ġ|| Ġgl iss Ġ> 0 ) Ġ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration . to Long () Ġelse Ġart ic ulation Duration . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpitch Ġ= Ġp itches [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvelocity Ġ= Ġve locities [ i ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( track Data . vi br ato Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd V ibr ato To Track ( track , Ġtick , Ġdur , Ġchannel , Ġvi br ato ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrack , Ġtick , Ġdur , Ġchannel , Ġp itches [ i ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġve locities [ i ], Ġvelocity Off , Ġgl iss ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdoub ling . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Note With Gl iss ando ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrack , Ġtick , Ġdur , Ġchannel , Ġpitch Ġ+ Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvelocity , Ġvelocity Off , Ġgl iss ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠS TER EO ĠALTER ATIONS ĠFOR ĠE ACH ĠTR ACK ĊĠĠĠĠĠĠĠ Ġif ( track Data . audio 8 D Ġ&& Ġtrack . length In Ticks Ġ> Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn Re volution s Ġ= Ġ( 1 2 Ġ- Ġtrack Data . part Index ) Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// val Ġpan Step : ĠInt Ġ= Ġ 1 2 7 Ġ/ Ġcounter point . parts . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaims Ġ= Ġmutable ListOf < Float >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 0 Ġuntil Ġn Re volution s ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaims . add ( 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaims . add ( 1 2 7 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaims . add ( 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaudio 8 D alter ations And Del tas Ġ= Ġalter ate B pm With Distribution ( aim s , Ġ 2 f , Ġtrack . length In Ticks ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaudio 8 D alter ations = Ġaudio 8 D alter ations And Del tas . first ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaudio 8 D delt as Ġ= Ġaudio 8 D alter ations And Del tas . second . also { println ( it )} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtempo Tick Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġaudio 8 D alter ations . size Ġ- 1 ). forEach Ġ{ Ġi Ġ-> Ġ// Ġdoesn 't Ġtake Ġthe Ġlast Ġb pm ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Pan Ġ= ĠController ( temp o Tick , Ġchannel , 1 0 , Ġaudio 8 D alter ations [ i ]. toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrack . insert Event ( new Pan ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtempo Tick Ġ+= Ġaudio 8 D delt as [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrack ĊĠĠĠ Ġ} Ċ Ċ } ĊĊĊĊĊ