package Ġio . wave beans . d aw Ċ Ċ import Ġkotlin . math . pow Ċ Ċ type alias ĠNote Ġ= ĠFloat Ċ Ċ const Ġval ĠE 4 : ĠNote Ġ= Ġ 3 2 9 . 6 3 f Ċ const Ġval ĠB 3 : ĠNote Ġ= Ġ 2 4 6 . 9 4 f Ċ const Ġval ĠG 3 : ĠNote Ġ= Ġ 1 9 6 . 0 f Ċ const Ġval ĠD 3 : ĠNote Ġ= Ġ 1 4 6 . 8 3 f Ċ const Ġval ĠA 2 : ĠNote Ġ= Ġ 1 1 0 . 0 f Ċ const Ġval ĠE 2 : ĠNote Ġ= Ġ 8 2 . 4 1 f Ċ Ċ fun ĠNote . shift ( half T ones : ĠInt ): ĠNote Ġ= Ġwhen Ġ{ ĊĠĠĠ Ġhalf T ones Ġ> Ġ 0 Ġ-> Ġthis Ġ* Ġ 2 . 0 f . pow ( half T ones Ġ/ Ġ 1 2 . 0 f ) ĊĠĠĠ Ġhalf T ones Ġ< Ġ 0 Ġ-> Ġthis Ġ/ Ġ 2 . 0 f . pow (- half T ones Ġ/ Ġ 1 2 . 0 f ) ĊĠĠĠ Ġhalf T ones Ġ== Ġ 0 Ġ-> Ġthis ĊĠĠĠ Ġelse Ġ-> Ġthrow ĠUnsupportedOperationException (" shift Ġby Ġ$ half T ones Ġis Ġunsupported ") Ċ } Ċ Ċ interface ĠG uit ar T uning Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe Ġnotes Ġthe Ġgu itar Ġis Ġt uned Ġfrom Ġthe Ġthin nest Ġto Ġthe Ġth ick est Ġstrings . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget T une (): ĠMap < Voice Key , ĠNote > Ċ } Ċ Ċ object ĠStandard 6 String T uning Ġ: ĠG uit ar T uning Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget T une (): ĠMap < Voice Key , ĠNote > Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġ" e " Ġto ĠE 4 , ĊĠĠĠĠĠĠĠ Ġ" B " Ġto ĠB 3 , ĊĠĠĠĠĠĠĠ Ġ" G " Ġto ĠG 3 , ĊĠĠĠĠĠĠĠ Ġ" D " Ġto ĠD 3 , ĊĠĠĠĠĠĠĠ Ġ" A " Ġto ĠA 2 , ĊĠĠĠĠĠĠĠ Ġ" E " Ġto ĠE 2 ĊĠĠĠ Ġ) Ċ }