<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "https://www.web3d.org/specifications/x3d-3.0.dtd">
<X3D profile='Immersive'  version='3.0 xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation =' https://www.web3d.org/specifications/x3d-3.0.xsd ' >
<head>
<meta name='titlecontent=' KeyboardEightyEightKeys.x3d '/>
<meta name='descriptioncontent='Eight-eight key keyboard, extrapolated from VRML Sourcebook Figure 24.4, including animation of key movements coordinated with sounding of key when touched.'/>
<meta name=' warning content=' Not all tones work (hardware, operating system dependent?) and so may need some higher-frequency sound files. '/>
<meta name=' TODO content=' X3D Specification Comment: pitch attribute might be better on Sound node, thus avoiding need for AudioClip to reload the same audio file multiple times '/>
<meta name='creatorcontent='Scott Gilman'/>
<meta name='createdcontent='27 August 2004'/>
<meta name='modifiedcontent='14 July 2023'/>
<meta name='referencecontent=' https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/Figure24.4FourKeyKeyboard.x3d '/>
<meta name='identifiercontent=' https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/KeyboardEightyEightKeys.x3d '/>
<meta name='referencecontent='Figure 24.4, The VRML 2.0 Sourcebook, Copyright [1997] By Andrea L. Ames, David R. Nadeau, and John L. Moreland'/>
<meta name='generatorcontent='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/>
<meta name='licensecontent=' ../license.html'/>
</head>
<!--

to top <!-- Event Graph ROUTE Table shows event connections -->
 
<!-- Index for DEF nodes: A0, A0Mover, A0TRANS, A1, A1Mover, A1TRANS, A2, A2Mover, A2TRANS, A3, A3Mover, A3TRANS, A4, A4Mover, A4TRANS, A5, A5Mover, A5TRANS, A6, A6Mover, A6TRANS, A7, A7Mover, A7TRANS, A8, A8Mover, A8TRANS, As0, As0Mover, As0TRANS, As1, As1Mover, As1TRANS, As2, As2Mover, As2TRANS, As3, As3Mover, As3TRANS, As4, As4Mover, As4TRANS, As5, As5Mover, As5TRANS, As6, As6Mover, As6TRANS, As7, As7Mover, As7TRANS, As8, As8Mover, As8TRANS, B0, B0Mover, B0TRANS, B1, B1Mover, B1TRANS, B2, B2Mover, B2TRANS, B3, B3Mover, B3TRANS, B4, B4Mover, B4TRANS, B5, B5Mover, B5TRANS, B6, B6Mover, B6TRANS, B7, B7Mover, B7TRANS, B8, B8Mover, B8TRANS, BlackKey, C0, C0Mover, C0TRANS, C1, C1Mover, C1TRANS, C2, C2Mover, C2TRANS, C3, C3Mover, C3TRANS, C4, C4Mover, C4TRANS, C5, C5Mover, C5TRANS, C6, C6Mover, C6TRANS, C7, C7Mover, C7TRANS, C8, C8Mover, C8TRANS, ClockA0, ClockA1, ClockA2, ClockA3, ClockA4, ClockA5, ClockA6, ClockA7, ClockA8, ClockAs0, ClockAs1, ClockAs2, ClockAs3, ClockAs4, ClockAs5, ClockAs6, ClockAs7, ClockAs8, ClockB0, ClockB1, ClockB2, ClockB3, ClockB4, ClockB5, ClockB6, ClockB7, ClockB8, ClockC0, ClockC1, ClockC2, ClockC3, ClockC4, ClockC5, ClockC6, ClockC7, ClockC8, ClockCs0, ClockCs1, ClockCs2, ClockCs3, ClockCs4, ClockCs5, ClockCs6, ClockCs7, ClockD0, ClockD1, ClockD2, ClockD3, ClockD4, ClockD5, ClockD6, ClockD7, ClockDs0, ClockDs1, ClockDs2, ClockDs3, ClockDs4, ClockDs5, ClockDs6, ClockDs7, ClockE0, ClockE1, ClockE2, ClockE3, ClockE4, ClockE5, ClockE6, ClockE7, ClockF0, ClockF1, ClockF2, ClockF3, ClockF4, ClockF5, ClockF6, ClockF7, ClockFs0, ClockFs1, ClockFs2, ClockFs3, ClockFs4, ClockFs5, ClockFs6, ClockFs7, ClockG0, ClockG1, ClockG2, ClockG3, ClockG4, ClockG5, ClockG6, ClockG7, ClockGs0, ClockGs1, ClockGs2, ClockGs3, ClockGs4, ClockGs5, ClockGs6, ClockGs7, Cs0, Cs0Mover, Cs0TRANS, Cs1, Cs1Mover, Cs1TRANS, Cs2, Cs2Mover, Cs2TRANS, Cs3, Cs3Mover, Cs3TRANS, Cs4, Cs4Mover, Cs4TRANS, Cs5, Cs5Mover, Cs5TRANS, Cs6, Cs6Mover, Cs6TRANS, Cs7, Cs7Mover, Cs7TRANS, D0, D0Mover, D0TRANS, D1, D1Mover, D1TRANS, D2, D2Mover, D2TRANS, D3, D3Mover, D3TRANS, D4, D4Mover, D4TRANS, D5, D5Mover, D5TRANS, D6, D6Mover, D6TRANS, D7, D7Mover, D7TRANS, Ds0, Ds0Mover, Ds0TRANS, Ds1, Ds1Mover, Ds1TRANS, Ds2, Ds2Mover, Ds2TRANS, Ds3, Ds3Mover, Ds3TRANS, Ds4, Ds4Mover, Ds4TRANS, Ds5, Ds5Mover, Ds5TRANS, Ds6, Ds6Mover, Ds6TRANS, Ds7, Ds7Mover, Ds7TRANS, E0, E0Mover, E0TRANS, E1, E1Mover, E1TRANS, E2, E2Mover, E2TRANS, E3, E3Mover, E3TRANS, E4, E4Mover, E4TRANS, E5, E5Mover, E5TRANS, E6, E6Mover, E6TRANS, E7, E7Mover, E7TRANS, F0, F0Mover, F0TRANS, F1, F1Mover, F1TRANS, F2, F2Mover, F2TRANS, F3, F3Mover, F3TRANS, F4, F4Mover, F4TRANS, F5, F5Mover, F5TRANS, F6, F6Mover, F6TRANS, F7, F7Mover, F7TRANS, FrontFar, Fs0, Fs0Mover, Fs0TRANS, Fs1, Fs1Mover, Fs1TRANS, Fs2, Fs2Mover, Fs2TRANS, Fs3, Fs3Mover, Fs3TRANS, Fs4, Fs4Mover, Fs4TRANS, Fs5, Fs5Mover, Fs5TRANS, Fs6, Fs6Mover, Fs6TRANS, Fs7, Fs7Mover, Fs7TRANS, G0, G0Mover, G0TRANS, G1, G1Mover, G1TRANS, G2, G2Mover, G2TRANS, G3, G3Mover, G3TRANS, G4, G4Mover, G4TRANS, G5, G5Mover, G5TRANS, G6, G6Mover, G6TRANS, G7, G7Mover, G7TRANS, Gs0, Gs0Mover, Gs0TRANS, Gs1, Gs1Mover, Gs1TRANS, Gs2, Gs2Mover, Gs2TRANS, Gs3, Gs3Mover, Gs3TRANS, Gs4, Gs4Mover, Gs4TRANS, Gs5, Gs5Mover, Gs5TRANS, Gs6, Gs6Mover, Gs6TRANS, Gs7, Gs7Mover, Gs7TRANS, IvoryWhite, LeftSide, LightFromAbove, PitchA0, PitchA1, PitchA2, PitchA3, PitchA4, PitchA5, PitchA6, PitchA7, PitchA8, PitchAs0, PitchAs1, PitchAs2, PitchAs3, PitchAs4, PitchAs5, PitchAs6, PitchAs7, PitchAs8, PitchB0, PitchB1, PitchB2, PitchB3, PitchB4, PitchB5, PitchB6, PitchB7, PitchB8, PitchC0, PitchC1, PitchC2, PitchC3, PitchC4, PitchC5, PitchC6, PitchC7, PitchC8, PitchCs0, PitchCs1, PitchCs2, PitchCs3, PitchCs4, PitchCs5, PitchCs6, PitchCs7, PitchD0, PitchD1, PitchD2, PitchD3, PitchD4, PitchD5, PitchD6, PitchD7, PitchDs0, PitchDs1, PitchDs2, PitchDs3, PitchDs4, PitchDs5, PitchDs6, PitchDs7, PitchE0, PitchE1, PitchE2, PitchE3, PitchE4, PitchE5, PitchE6, PitchE7, PitchF0, PitchF1, PitchF2, PitchF3, PitchF4, PitchF5, PitchF6, PitchF7, PitchFs0, PitchFs1, PitchFs2, PitchFs3, PitchFs4, PitchFs5, PitchFs6, PitchFs7, PitchG0, PitchG1, PitchG2, PitchG3, PitchG4, PitchG5, PitchG6, PitchG7, PitchGs0, PitchGs1, PitchGs2, PitchGs3, PitchGs4, PitchGs5, PitchGs6, PitchGs7, PlayerPianoScript, RightSide, StartPlaying, TopDown, TopDownCloser, WhiteKey

Index for Viewpoint nodes: Viewpoint_1, FrontFar, LeftSide, RightSide, TopDown, TopDownCloser
-->
<Scene>
<WorldInfo title='KeyboardEightyEightKeys.x3d'/>
<DirectionalLight DEF='LightFromAbovedirection='0 -1 -0.2'/>
<Viewpoint description='Middle C, C#, D, D#orientation='1 0 0 -0.758position='0 2 2'/>
<Viewpoint DEF='RightSidedescription='From right end of keyboardorientation='-.238 .939 .25 1.6349position='15.5 8.5 -.2'/>
<Viewpoint DEF='FrontFardescription='Looking down from a distanceorientation='-1 .007 -.004 .6661position='.3 11 13.7'/>
<Viewpoint DEF='LeftSidedescription='From left end of keyboardorientation='-.252 -.932 -.261 1.636position='-15.9 9.6 -.1'/>
<Viewpoint DEF='TopDowndescription='Looking down from above middle Corientation='-1 -.024 .007 1.5504position='-1 15.4 .3'/>
<Viewpoint DEF='TopDownCloserdescription='Top-down view, closerorientation='-1 -.005 -.008 1.1528position='-.6 7.1 3.1'/>
<Group>
<!-- ROUTE information for A0TRANS node:  [from A0Mover.value_changed to set_translation ] -->
<Transform DEF='A0TRANStranslation='-7.5 0 0'>
<Shape DEF='WhiteKey'>
<Box size='0.23 0.1 1.5'/>
<Appearance DEF='IvoryWhite'>
<!-- https://en.wikipedia.org/wiki/Shades_of_white#Ivory -->
<Material diffuseColor='1 1 0.941176'/>
</Appearance>
</Shape>
<!-- ROUTE information for A0 node:  [from touchTime to PitchA1.set_startTime ] [from touchTime to ClockA0.set_startTime ] -->
<TouchSensor DEF='A0description='play Pitch A0'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for As0TRANS node:  [from As0Mover.value_changed to set_translation ] -->
<Transform DEF='As0TRANStranslation='-7.375 0.1 -.375'>
<Shape DEF='BlackKey'>
<Box size='0.23 0.1 1.5'/>
<Appearance>
<Material diffuseColor='0.1 0.1 0.1'/>
</Appearance>
</Shape>
<!-- ROUTE information for As0 node:  [from touchTime to PitchAs1.set_startTime ] [from touchTime to ClockAs0.set_startTime ] -->
<TouchSensor DEF='As0description='play Pitch As0'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for B0TRANS node:  [from B0Mover.value_changed to set_translation ] -->
<Transform DEF='B0TRANStranslation='-7.25 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for B0 node:  [from touchTime to PitchB1.set_startTime ] [from touchTime to ClockB0.set_startTime ] -->
<TouchSensor DEF='B0description='play Pitch B0'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for C0TRANS node:  [from C0Mover.value_changed to set_translation ] -->
<Transform DEF='C0TRANStranslation='-7 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for C0 node:  [from touchTime to PitchC1.set_startTime ] [from touchTime to ClockC0.set_startTime ] -->
<TouchSensor DEF='C0description='play Pitch C0'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for Cs0TRANS node:  [from Cs0Mover.value_changed to set_translation ] -->
<Transform DEF='Cs0TRANStranslation='-6.875 0.1 -0.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Cs0 node:  [from touchTime to PitchCs1.set_startTime ] [from touchTime to ClockCs0.set_startTime ] -->
<TouchSensor DEF='Cs0description='play Pitch Cs1'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for D0TRANS node:  [from D0Mover.value_changed to set_translation ] -->
<Transform DEF='D0TRANStranslation='-6.75 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for D0 node:  [from touchTime to PitchD1.set_startTime ] [from touchTime to ClockD0.set_startTime ] -->
<TouchSensor DEF='D0description='play Pitch D0'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for Ds0TRANS node:  [from Ds0Mover.value_changed to set_translation ] -->
<Transform DEF='Ds0TRANStranslation='-6.625 0.1 -0.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Ds0 node:  [from touchTime to PitchDs1.set_startTime ] [from touchTime to ClockDs0.set_startTime ] -->
<TouchSensor DEF='Ds0description='play Pitch Ds0'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for E0TRANS node:  [from E0Mover.value_changed to set_translation ] -->
<Transform DEF='E0TRANStranslation='-6.5 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for E0 node:  [from touchTime to PitchE1.set_startTime ] [from touchTime to ClockE0.set_startTime ] -->
<TouchSensor DEF='E0description='play Pitch E0'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for F0TRANS node:  [from F0Mover.value_changed to set_translation ] -->
<Transform DEF='F0TRANStranslation='-6.25 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for F0 node:  [from touchTime to PitchF1.set_startTime ] [from touchTime to ClockF0.set_startTime ] -->
<TouchSensor DEF='F0description='play Pitch F0'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for Fs0TRANS node:  [from Fs0Mover.value_changed to set_translation ] -->
<Transform DEF='Fs0TRANStranslation='-6.125 0.1 -0.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Fs0 node:  [from touchTime to PitchFs1.set_startTime ] [from touchTime to ClockFs0.set_startTime ] -->
<TouchSensor DEF='Fs0description='play Pitch Fs0'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for G0TRANS node:  [from G0Mover.value_changed to set_translation ] -->
<Transform DEF='G0TRANStranslation='-6 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for G0 node:  [from touchTime to PitchG1.set_startTime ] [from touchTime to ClockG0.set_startTime ] -->
<TouchSensor DEF='G0description='play Pitch G0'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for Gs0TRANS node:  [from Gs0Mover.value_changed to set_translation ] -->
<Transform DEF='Gs0TRANStranslation='-5.875 0.1 -0.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Gs0 node:  [from touchTime to PitchGs1.set_startTime ] [from touchTime to ClockGs0.set_startTime ] -->
<TouchSensor DEF='Gs0description='play Pitch Gs0'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for A1TRANS node:  [from A1Mover.value_changed to set_translation ] -->
<Transform DEF='A1TRANStranslation='-5.75 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for A1 node:  [from touchTime to PitchA1.set_startTime ] [from touchTime to ClockA1.set_startTime ] -->
<TouchSensor DEF='A1description='play Pitch A1'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for As1TRANS node:  [from As1Mover.value_changed to set_translation ] -->
<Transform DEF='As1TRANStranslation='-5.625 0.1 -.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for As1 node:  [from touchTime to PitchAs1.set_startTime ] [from touchTime to ClockAs1.set_startTime ] -->
<TouchSensor DEF='As1description='play Pitch As1'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for B1TRANS node:  [from B1Mover.value_changed to set_translation ] -->
<Transform DEF='B1TRANStranslation='-5.5 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for B1 node:  [from touchTime to PitchB1.set_startTime ] [from touchTime to ClockB1.set_startTime ] -->
<TouchSensor DEF='B1description='play Pitch B1'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for C1TRANS node:  [from C1Mover.value_changed to set_translation ] -->
<Transform DEF='C1TRANStranslation='-5.25 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for C1 node:  [from touchTime to PitchC1.set_startTime ] [from touchTime to ClockC1.set_startTime ] -->
<TouchSensor DEF='C1description='play Pitch C1'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for Cs1TRANS node:  [from Cs1Mover.value_changed to set_translation ] -->
<Transform DEF='Cs1TRANStranslation='-5.125 0.1 -0.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Cs1 node:  [from touchTime to PitchCs1.set_startTime ] [from touchTime to ClockCs1.set_startTime ] -->
<TouchSensor DEF='Cs1description='play Pitch Cs1'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for D1TRANS node:  [from D1Mover.value_changed to set_translation ] -->
<Transform DEF='D1TRANStranslation='-5 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for D1 node:  [from touchTime to PitchD1.set_startTime ] [from touchTime to ClockD1.set_startTime ] -->
<TouchSensor DEF='D1description='play Pitch D1'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for Ds1TRANS node:  [from Ds1Mover.value_changed to set_translation ] -->
<Transform DEF='Ds1TRANStranslation='-4.875 0.1 -0.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Ds1 node:  [from touchTime to PitchDs1.set_startTime ] [from touchTime to ClockDs1.set_startTime ] -->
<TouchSensor DEF='Ds1description='play Pitch Ds1'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for E1TRANS node:  [from E1Mover.value_changed to set_translation ] -->
<Transform DEF='E1TRANStranslation='-4.75 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for E1 node:  [from touchTime to PitchE1.set_startTime ] [from touchTime to ClockE1.set_startTime ] -->
<TouchSensor DEF='E1description='play Pitch E1'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for F1TRANS node:  [from F1Mover.value_changed to set_translation ] -->
<Transform DEF='F1TRANStranslation='-4.5 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for F1 node:  [from touchTime to PitchF1.set_startTime ] [from touchTime to ClockF1.set_startTime ] -->
<TouchSensor DEF='F1description='play Pitch F1'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for Fs1TRANS node:  [from Fs1Mover.value_changed to set_translation ] -->
<Transform DEF='Fs1TRANStranslation='-4.375 0.1 -0.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Fs1 node:  [from touchTime to PitchFs1.set_startTime ] [from touchTime to ClockFs1.set_startTime ] -->
<TouchSensor DEF='Fs1description='play Pitch Fs1'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for G1TRANS node:  [from G1Mover.value_changed to set_translation ] -->
<Transform DEF='G1TRANStranslation='-4.25 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for G1 node:  [from touchTime to PitchG1.set_startTime ] [from touchTime to ClockG1.set_startTime ] -->
<TouchSensor DEF='G1description='play Pitch G1'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for Gs1TRANS node:  [from Gs1Mover.value_changed to set_translation ] -->
<Transform DEF='Gs1TRANStranslation='-4.125 0.1 -0.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Gs1 node:  [from touchTime to PitchGs1.set_startTime ] [from touchTime to ClockGs1.set_startTime ] -->
<TouchSensor DEF='Gs1description='play Pitch Gs1'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for A2TRANS node:  [from A2Mover.value_changed to set_translation ] -->
<Transform DEF='A2TRANStranslation='-4 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for A2 node:  [from touchTime to PitchA2.set_startTime ] [from touchTime to ClockA2.set_startTime ] -->
<TouchSensor DEF='A2description='play Pitch A2'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for As2TRANS node:  [from As2Mover.value_changed to set_translation ] -->
<Transform DEF='As2TRANStranslation='-3.875 0.1 -0.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for As2 node:  [from touchTime to PitchAs2.set_startTime ] [from touchTime to ClockAs2.set_startTime ] -->
<TouchSensor DEF='As2description='play Pitch As2'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for B2TRANS node:  [from B2Mover.value_changed to set_translation ] -->
<Transform DEF='B2TRANStranslation='-3.75 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for B2 node:  [from touchTime to PitchB2.set_startTime ] [from touchTime to ClockB2.set_startTime ] -->
<TouchSensor DEF='B2description='play Pitch B2'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for C2TRANS node:  [from C2Mover.value_changed to set_translation ] -->
<Transform DEF='C2TRANStranslation='-3.5 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for C2 node:  [from touchTime to PitchC2.set_startTime ] [from touchTime to ClockC2.set_startTime ] -->
<TouchSensor DEF='C2description='play Pitch C2'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for Cs2TRANS node:  [from Cs2Mover.value_changed to set_translation ] -->
<Transform DEF='Cs2TRANStranslation='-3.375 0.1 -0.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Cs2 node:  [from touchTime to PitchCs2.set_startTime ] [from touchTime to ClockCs2.set_startTime ] -->
<TouchSensor DEF='Cs2description='play Pitch Cs2'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for D2TRANS node:  [from D2Mover.value_changed to set_translation ] -->
<Transform DEF='D2TRANStranslation='-3.25 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for D2 node:  [from touchTime to PitchD2.set_startTime ] [from touchTime to ClockD2.set_startTime ] -->
<TouchSensor DEF='D2description='play Pitch D2'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for Ds2TRANS node:  [from Ds2Mover.value_changed to set_translation ] -->
<Transform DEF='Ds2TRANStranslation='-3.125 0.1 -0.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Ds2 node:  [from touchTime to PitchDs2.set_startTime ] [from touchTime to ClockDs2.set_startTime ] -->
<TouchSensor DEF='Ds2description='play Pitch Ds2'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for E2TRANS node:  [from E2Mover.value_changed to set_translation ] -->
<Transform DEF='E2TRANStranslation='-3 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for E2 node:  [from touchTime to PitchE2.set_startTime ] [from touchTime to ClockE2.set_startTime ] -->
<TouchSensor DEF='E2description='play Pitch E2'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for F2TRANS node:  [from F2Mover.value_changed to set_translation ] -->
<Transform DEF='F2TRANStranslation='-2.75 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for F2 node:  [from touchTime to PitchF2.set_startTime ] [from touchTime to ClockF2.set_startTime ] -->
<TouchSensor DEF='F2description='play pitch F2'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for Fs2TRANS node:  [from Fs2Mover.value_changed to set_translation ] -->
<Transform DEF='Fs2TRANStranslation='-2.625 0.1 -0.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Fs2 node:  [from touchTime to PitchFs2.set_startTime ] [from touchTime to ClockFs2.set_startTime ] -->
<TouchSensor DEF='Fs2description='play pitch Fs2'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for G2TRANS node:  [from G2Mover.value_changed to set_translation ] -->
<Transform DEF='G2TRANStranslation='-2.5 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for G2 node:  [from touchTime to PitchG2.set_startTime ] [from touchTime to ClockG2.set_startTime ] -->
<TouchSensor DEF='G2description='play pitch G2'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for Gs2TRANS node:  [from Gs2Mover.value_changed to set_translation ] -->
<Transform DEF='Gs2TRANStranslation='-2.375 0.1 -0.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Gs2 node:  [from touchTime to PitchGs2.set_startTime ] [from touchTime to ClockGs2.set_startTime ] -->
<TouchSensor DEF='Gs2description='play pitch Gs2'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for A3TRANS node:  [from A3Mover.value_changed to set_translation ] -->
<Transform DEF='A3TRANStranslation='-2.25 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for A3 node:  [from touchTime to PitchA3.set_startTime ] [from touchTime to ClockA3.set_startTime ] -->
<TouchSensor DEF='A3description='play pitch A3'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for As3TRANS node:  [from As3Mover.value_changed to set_translation ] -->
<Transform DEF='As3TRANStranslation='-2.125 0.1 -0.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for As3 node:  [from touchTime to PitchAs3.set_startTime ] [from touchTime to ClockAs3.set_startTime ] -->
<TouchSensor DEF='As3description='play pitch As3'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for B3TRANS node:  [from B3Mover.value_changed to set_translation ] -->
<Transform DEF='B3TRANStranslation='-2 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for B3 node:  [from touchTime to PitchB3.set_startTime ] [from touchTime to ClockB3.set_startTime ] -->
<TouchSensor DEF='B3description='play pitch B3'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for C3TRANS node:  [from C3Mover.value_changed to set_translation ] -->
<Transform DEF='C3TRANStranslation='-1.75 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for C3 node:  [from touchTime to PitchC3.set_startTime ] [from touchTime to ClockC3.set_startTime ] -->
<TouchSensor DEF='C3description='play pitch C3'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for Cs3TRANS node:  [from Cs3Mover.value_changed to set_translation ] -->
<Transform DEF='Cs3TRANStranslation='-1.625 0.1 -0.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Cs3 node:  [from touchTime to PitchCs3.set_startTime ] [from touchTime to ClockCs3.set_startTime ] -->
<TouchSensor DEF='Cs3description='play pitch Cs3'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for D3TRANS node:  [from D3Mover.value_changed to set_translation ] -->
<Transform DEF='D3TRANStranslation='-1.5 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for D3 node:  [from touchTime to PitchD3.set_startTime ] [from touchTime to ClockD3.set_startTime ] -->
<TouchSensor DEF='D3description='play pitch D3'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for Ds3TRANS node:  [from Ds3Mover.value_changed to set_translation ] -->
<Transform DEF='Ds3TRANStranslation='-1.375 0.1 -0.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Ds3 node:  [from touchTime to PitchDs3.set_startTime ] [from touchTime to ClockDs3.set_startTime ] -->
<TouchSensor DEF='Ds3description='play pitch Ds3'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for E3TRANS node:  [from E3Mover.value_changed to set_translation ] -->
<Transform DEF='E3TRANStranslation='-1.25 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for E3 node:  [from touchTime to PitchE3.set_startTime ] [from touchTime to ClockE3.set_startTime ] -->
<TouchSensor DEF='E3description='play pitch E3'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for F3TRANS node:  [from F3Mover.value_changed to set_translation ] -->
<Transform DEF='F3TRANStranslation='-1 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for F3 node:  [from touchTime to PitchF3.set_startTime ] [from touchTime to ClockF3.set_startTime ] -->
<TouchSensor DEF='F3description='play pitch F3'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for Fs3TRANS node:  [from Fs3Mover.value_changed to set_translation ] -->
<Transform DEF='Fs3TRANStranslation='-.875 0.1 -0.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Fs3 node:  [from touchTime to PitchFs3.set_startTime ] [from touchTime to ClockFs3.set_startTime ] -->
<TouchSensor DEF='Fs3description='play pitch Fs3'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for G3TRANS node:  [from G3Mover.value_changed to set_translation ] -->
<Transform DEF='G3TRANStranslation='-.75 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for G3 node:  [from touchTime to PitchG3.set_startTime ] [from touchTime to ClockG3.set_startTime ] -->
<TouchSensor DEF='G3description='play pitch G3'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for Gs3TRANS node:  [from Gs3Mover.value_changed to set_translation ] -->
<Transform DEF='Gs3TRANStranslation='-.625 0.1 -0.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Gs3 node:  [from touchTime to PitchGs3.set_startTime ] [from touchTime to ClockGs3.set_startTime ] -->
<TouchSensor DEF='Gs3description='play pitch Gs3'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for A4TRANS node:  [from A4Mover.value_changed to set_translation ] -->
<Transform DEF='A4TRANStranslation='-.5 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for A4 node:  [from touchTime to PitchA4.set_startTime ] [from touchTime to ClockA4.set_startTime ] -->
<TouchSensor DEF='A4description='play pitch A4'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for As4TRANS node:  [from As4Mover.value_changed to set_translation ] -->
<Transform DEF='As4TRANStranslation='-.375 0.1 -0.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for As4 node:  [from touchTime to PitchAs4.set_startTime ] [from touchTime to ClockAs4.set_startTime ] -->
<TouchSensor DEF='As4description='play pitch As4'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for B4TRANS node:  [from B4Mover.value_changed to set_translation ] -->
<Transform DEF='B4TRANStranslation='-.25 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for B4 node:  [from touchTime to PitchB4.set_startTime ] [from touchTime to ClockB4.set_startTime ] -->
<TouchSensor DEF='B4description='play pitch B4'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for C4TRANS node:  [from C4Mover.value_changed to set_translation ] -->
<Transform DEF='C4TRANS'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for C4 node:  [from touchTime to PitchC4.set_startTime ] [from touchTime to ClockC4.set_startTime ] -->
<TouchSensor DEF='C4description='play pitch C4'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for Cs4TRANS node:  [from Cs4Mover.value_changed to set_translation ] -->
<Transform DEF='Cs4TRANStranslation='0.125 0.1 -0.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Cs4 node:  [from touchTime to PitchCs4.set_startTime ] [from touchTime to ClockCs4.set_startTime ] -->
<TouchSensor DEF='Cs4description='play pitch Csharp4'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for D4TRANS node:  [from D4Mover.value_changed to set_translation ] -->
<Transform DEF='D4TRANStranslation='0.25 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for D4 node:  [from touchTime to PitchD4.set_startTime ] [from touchTime to ClockD4.set_startTime ] -->
<TouchSensor DEF='D4description='play pitch D4'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for Ds4TRANS node:  [from Ds4Mover.value_changed to set_translation ] -->
<Transform DEF='Ds4TRANStranslation='0.375 0.1 -0.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Ds4 node:  [from touchTime to PitchDs4.set_startTime ] [from touchTime to ClockDs4.set_startTime ] -->
<TouchSensor DEF='Ds4description='play pitch Dsharp4'/>

<Sound maxBack='110maxFront='110minBack='100minFront='100'> </Sound>
</Transform>
<!-- ROUTE information for E4TRANS node:  [from E4Mover.value_changed to set_translation ] -->
<Transform DEF='E4TRANStranslation='.5 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for E4 node:  [from touchTime to PitchE4.set_startTime ] [from touchTime to ClockE4.set_startTime ] -->
<TouchSensor DEF='E4description='play pitch E4'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for F4TRANS node:  [from F4Mover.value_changed to set_translation ] -->
<Transform DEF='F4TRANStranslation='.75 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for F4 node:  [from touchTime to PitchF4.set_startTime ] [from touchTime to ClockF4.set_startTime ] -->
<TouchSensor DEF='F4description='play pitch F4'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for Fs4TRANS node:  [from Fs4Mover.value_changed to set_translation ] -->
<Transform DEF='Fs4TRANStranslation='.875 .1 -.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Fs4 node:  [from touchTime to PitchFs4.set_startTime ] [from touchTime to ClockFs4.set_startTime ] -->
<TouchSensor DEF='Fs4description='play pitch Fsharp4'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for G4TRANS node:  [from G4Mover.value_changed to set_translation ] -->
<Transform DEF='G4TRANStranslation='1 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for G4 node:  [from touchTime to PitchG4.set_startTime ] [from touchTime to ClockG4.set_startTime ] -->
<TouchSensor DEF='G4description='play pitch G4'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for Gs4TRANS node:  [from Gs4Mover.value_changed to set_translation ] -->
<Transform DEF='Gs4TRANStranslation='1.125 .1 -.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Gs4 node:  [from touchTime to PitchGs4.set_startTime ] [from touchTime to ClockGs4.set_startTime ] -->
<TouchSensor DEF='Gs4description='play pitch Gsharp4'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for A5TRANS node:  [from A5Mover.value_changed to set_translation ] -->
<Transform DEF='A5TRANStranslation='1.25 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for A5 node:  [from touchTime to PitchA5.set_startTime ] [from touchTime to ClockA5.set_startTime ] -->
<TouchSensor DEF='A5description='play pitch A5'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for As5TRANS node:  [from As5Mover.value_changed to set_translation ] -->
<Transform DEF='As5TRANStranslation='1.375 .1 -.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for As5 node:  [from touchTime to PitchAs5.set_startTime ] [from touchTime to ClockAs5.set_startTime ] -->
<TouchSensor DEF='As5description='play pitch Asharp5'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for B5TRANS node:  [from B5Mover.value_changed to set_translation ] -->
<Transform DEF='B5TRANStranslation='1.5 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for B5 node:  [from touchTime to PitchB5.set_startTime ] [from touchTime to ClockB5.set_startTime ] -->
<TouchSensor DEF='B5description='play pitch B5'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for C5TRANS node:  [from C5Mover.value_changed to set_translation ] -->
<Transform DEF='C5TRANStranslation='1.75 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for C5 node:  [from touchTime to PitchC5.set_startTime ] [from touchTime to ClockC5.set_startTime ] -->
<TouchSensor DEF='C5description='play pitch C5'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for Cs5TRANS node:  [from Cs5Mover.value_changed to set_translation ] -->
<Transform DEF='Cs5TRANStranslation='1.875 .1 -.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Cs5 node:  [from touchTime to PitchCs5.set_startTime ] [from touchTime to ClockCs5.set_startTime ] -->
<TouchSensor DEF='Cs5description='play pitch Csharp5'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for D5TRANS node:  [from D5Mover.value_changed to set_translation ] -->
<Transform DEF='D5TRANStranslation='2 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for D5 node:  [from touchTime to PitchD5.set_startTime ] [from touchTime to ClockD5.set_startTime ] -->
<TouchSensor DEF='D5description='play pitch D5'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for Ds5TRANS node:  [from Ds5Mover.value_changed to set_translation ] -->
<Transform DEF='Ds5TRANStranslation='2.125 .1 -.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Ds5 node:  [from touchTime to PitchDs5.set_startTime ] [from touchTime to ClockDs5.set_startTime ] -->
<TouchSensor DEF='Ds5description='play pitch Ds5'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for E5TRANS node:  [from E5Mover.value_changed to set_translation ] -->
<Transform DEF='E5TRANStranslation='2.25 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for E5 node:  [from touchTime to PitchE5.set_startTime ] [from touchTime to ClockE5.set_startTime ] -->
<TouchSensor DEF='E5description='play pitch E5'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for F5TRANS node:  [from F5Mover.value_changed to set_translation ] -->
<Transform DEF='F5TRANStranslation='2.5 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for F5 node:  [from touchTime to PitchF5.set_startTime ] [from touchTime to ClockF5.set_startTime ] -->
<TouchSensor DEF='F5description='play pitch F5'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for Fs5TRANS node:  [from Fs5Mover.value_changed to set_translation ] -->
<Transform DEF='Fs5TRANStranslation='2.625 .1 -.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Fs5 node:  [from touchTime to PitchFs5.set_startTime ] [from touchTime to ClockFs5.set_startTime ] -->
<TouchSensor DEF='Fs5description='play pitch Fs5'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for G5TRANS node:  [from G5Mover.value_changed to set_translation ] -->
<Transform DEF='G5TRANStranslation='2.75 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for G5 node:  [from touchTime to PitchG5.set_startTime ] [from touchTime to ClockG5.set_startTime ] -->
<TouchSensor DEF='G5description='play pitch G5'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for Gs5TRANS node:  [from Gs5Mover.value_changed to set_translation ] -->
<Transform DEF='Gs5TRANStranslation='2.875 .1 -.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Gs5 node:  [from touchTime to PitchGs5.set_startTime ] [from touchTime to ClockGs5.set_startTime ] -->
<TouchSensor DEF='Gs5description='play pitch Gs5'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for A6TRANS node:  [from A6Mover.value_changed to set_translation ] -->
<Transform DEF='A6TRANStranslation='3 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for A6 node:  [from touchTime to PitchA6.set_startTime ] [from touchTime to ClockA6.set_startTime ] -->
<TouchSensor DEF='A6description='play pitch A6'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for As6TRANS node:  [from As6Mover.value_changed to set_translation ] -->
<Transform DEF='As6TRANStranslation='3.125 .1 -.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for As6 node:  [from touchTime to PitchAs6.set_startTime ] [from touchTime to ClockAs6.set_startTime ] -->
<TouchSensor DEF='As6description='play pitch As6'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for B6TRANS node:  [from B6Mover.value_changed to set_translation ] -->
<Transform DEF='B6TRANStranslation='3.25 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for B6 node:  [from touchTime to PitchB6.set_startTime ] [from touchTime to ClockB6.set_startTime ] -->
<TouchSensor DEF='B6description='play pitch B6'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for C6TRANS node:  [from C6Mover.value_changed to set_translation ] -->
<Transform DEF='C6TRANStranslation='3.5 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for C6 node:  [from touchTime to PitchC6.set_startTime ] [from touchTime to ClockC6.set_startTime ] -->
<TouchSensor DEF='C6description='play pitch C6'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for Cs6TRANS node:  [from Cs6Mover.value_changed to set_translation ] -->
<Transform DEF='Cs6TRANStranslation='3.625 .1 -.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Cs6 node:  [from touchTime to PitchCs6.set_startTime ] [from touchTime to ClockCs6.set_startTime ] -->
<TouchSensor DEF='Cs6description='play pitch Cs6'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for D6TRANS node:  [from D6Mover.value_changed to set_translation ] -->
<Transform DEF='D6TRANStranslation='3.75 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for D6 node:  [from touchTime to PitchD6.set_startTime ] [from touchTime to ClockD6.set_startTime ] -->
<TouchSensor DEF='D6description='play pitch D6'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for Ds6TRANS node:  [from Ds6Mover.value_changed to set_translation ] -->
<Transform DEF='Ds6TRANStranslation='3.875 .1 -.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Ds6 node:  [from touchTime to PitchDs6.set_startTime ] [from touchTime to ClockDs6.set_startTime ] -->
<TouchSensor DEF='Ds6description='play pitch Ds6'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for E6TRANS node:  [from E6Mover.value_changed to set_translation ] -->
<Transform DEF='E6TRANStranslation='4 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for E6 node:  [from touchTime to PitchE6.set_startTime ] [from touchTime to ClockE6.set_startTime ] -->
<TouchSensor DEF='E6description='play pitch E6'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for F6TRANS node:  [from F6Mover.value_changed to set_translation ] -->
<Transform DEF='F6TRANStranslation='4.25 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for F6 node:  [from touchTime to PitchF6.set_startTime ] [from touchTime to ClockF6.set_startTime ] -->
<TouchSensor DEF='F6description='play pitch F6'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for Fs6TRANS node:  [from Fs6Mover.value_changed to set_translation ] -->
<Transform DEF='Fs6TRANStranslation='4.375 .1 -.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Fs6 node:  [from touchTime to PitchFs6.set_startTime ] [from touchTime to ClockFs6.set_startTime ] -->
<TouchSensor DEF='Fs6description='play pitch Fs6'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for G6TRANS node:  [from G6Mover.value_changed to set_translation ] -->
<Transform DEF='G6TRANStranslation='4.5 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for G6 node:  [from touchTime to PitchG6.set_startTime ] [from touchTime to ClockG6.set_startTime ] -->
<TouchSensor DEF='G6description='play pitch G6'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for Gs6TRANS node:  [from Gs6Mover.value_changed to set_translation ] -->
<Transform DEF='Gs6TRANStranslation='4.625 .1 -.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Gs6 node:  [from touchTime to PitchGs6.set_startTime ] [from touchTime to ClockGs6.set_startTime ] -->
<TouchSensor DEF='Gs6description='play pitch Gs6'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for A7TRANS node:  [from A7Mover.value_changed to set_translation ] -->
<Transform DEF='A7TRANStranslation='4.75 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for A7 node:  [from touchTime to PitchA7.set_startTime ] [from touchTime to ClockA7.set_startTime ] -->
<TouchSensor DEF='A7description='play pitch A7'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for As7TRANS node:  [from As7Mover.value_changed to set_translation ] -->
<Transform DEF='As7TRANStranslation='4.875 .1 -.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for As7 node:  [from touchTime to PitchAs7.set_startTime ] [from touchTime to ClockAs7.set_startTime ] -->
<TouchSensor DEF='As7description='play pitch As7'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for B7TRANS node:  [from B7Mover.value_changed to set_translation ] -->
<Transform DEF='B7TRANStranslation='5 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for B7 node:  [from touchTime to PitchB7.set_startTime ] [from touchTime to ClockB7.set_startTime ] -->
<TouchSensor DEF='B7description='play pitch B7'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for C7TRANS node:  [from C7Mover.value_changed to set_translation ] -->
<Transform DEF='C7TRANStranslation='5.25 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for C7 node:  [from touchTime to PitchC7.set_startTime ] [from touchTime to ClockC7.set_startTime ] -->
<TouchSensor DEF='C7description='play pitch C7'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for Cs7TRANS node:  [from Cs7Mover.value_changed to set_translation ] -->
<Transform DEF='Cs7TRANStranslation='5.375 .1 -.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Cs7 node:  [from touchTime to PitchCs7.set_startTime ] [from touchTime to ClockCs7.set_startTime ] -->
<TouchSensor DEF='Cs7description='play pitch Cs7'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for D7TRANS node:  [from D7Mover.value_changed to set_translation ] -->
<Transform DEF='D7TRANStranslation='5.5 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for D7 node:  [from touchTime to PitchD7.set_startTime ] [from touchTime to ClockD7.set_startTime ] -->
<TouchSensor DEF='D7description='play pitch D7'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for Ds7TRANS node:  [from Ds7Mover.value_changed to set_translation ] -->
<Transform DEF='Ds7TRANStranslation='5.625 .1 -.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Ds7 node:  [from touchTime to PitchDs7.set_startTime ] [from touchTime to ClockDs7.set_startTime ] -->
<TouchSensor DEF='Ds7description='play pitch Ds7'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for E7TRANS node:  [from E7Mover.value_changed to set_translation ] -->
<Transform DEF='E7TRANStranslation='5.75 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for E7 node:  [from touchTime to PitchE7.set_startTime ] [from touchTime to ClockE7.set_startTime ] -->
<TouchSensor DEF='E7description='play pitch E7'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for F7TRANS node:  [from F7Mover.value_changed to set_translation ] -->
<Transform DEF='F7TRANStranslation='6 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for F7 node:  [from touchTime to PitchF7.set_startTime ] [from touchTime to ClockF7.set_startTime ] -->
<TouchSensor DEF='F7description='play pitch F7'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for Fs7TRANS node:  [from Fs7Mover.value_changed to set_translation ] -->
<Transform DEF='Fs7TRANStranslation='6.125 .1 -.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Fs7 node:  [from touchTime to PitchFs7.set_startTime ] [from touchTime to ClockFs7.set_startTime ] -->
<TouchSensor DEF='Fs7description='play pitch Fs7'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for G7TRANS node:  [from G7Mover.value_changed to set_translation ] -->
<Transform DEF='G7TRANStranslation='6.25 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for G7 node:  [from touchTime to PitchG7.set_startTime ] [from touchTime to ClockG7.set_startTime ] -->
<TouchSensor DEF='G7description='play pitch G7'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for Gs7TRANS node:  [from Gs7Mover.value_changed to set_translation ] -->
<Transform DEF='Gs7TRANStranslation='6.375 .1 -.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for Gs7 node:  [from touchTime to PitchGs7.set_startTime ] [from touchTime to ClockGs7.set_startTime ] -->
<TouchSensor DEF='Gs7description='play pitch Gs7'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for A8TRANS node:  [from A8Mover.value_changed to set_translation ] -->
<Transform DEF='A8TRANStranslation='6.5 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for A8 node:  [from touchTime to PitchA8.set_startTime ] [from touchTime to ClockA8.set_startTime ] -->
<TouchSensor DEF='A8description='play pitch A8'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for As8TRANS node:  [from As8Mover.value_changed to set_translation ] -->
<Transform DEF='As8TRANStranslation='6.625 .1 -.375'>
<Shape USE=' BlackKey'/>
<!-- ROUTE information for As8 node:  [from touchTime to PitchAs8.set_startTime ] [from touchTime to ClockAs8.set_startTime ] -->
<TouchSensor DEF='As8description='play pitch As8'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for B8TRANS node:  [from B8Mover.value_changed to set_translation ] -->
<Transform DEF='B8TRANStranslation='6.75 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for B8 node:  [from touchTime to PitchB8.set_startTime ] [from touchTime to ClockB8.set_startTime ] -->
<TouchSensor DEF='B8description='play pitch B8'/>

<Sound> </Sound>
</Transform>
<!-- ROUTE information for C8TRANS node:  [from C8Mover.value_changed to set_translation ] -->
<Transform DEF='C8TRANStranslation='7 0 0'>
<Shape USE=' WhiteKey'/>
<!-- ROUTE information for C8 node:  [from touchTime to PitchC8.set_startTime ] [from touchTime to ClockC8.set_startTime ] -->
<TouchSensor DEF='C8description='play pitch C8'/>

<Sound> </Sound>
</Transform>
<Transform scale='.25 .25 .25translation='0 1 -2'>
<Shape>
<Sphere/>
<Appearance>
<Material diffuseColor='1 0 0'/>
</Appearance>
</Shape>
<!-- ROUTE information for StartPlaying node:  [from touchTime to PlayerPianoScript.playScriptedNotes ] -->
<TouchSensor DEF='StartPlayingdescription='Touch to Activate Player Piano Script'/>
</Transform>




























































<!-- ROUTE information for ClockA5 node:  [from A5.touchTime to set_startTime ] [from fraction_changed to A5Mover.set_fraction ] -->
<TimeSensor DEF='ClockA5'/>

<!-- ROUTE information for ClockAs5 node:  [from As5.touchTime to set_startTime ] [from fraction_changed to As5Mover.set_fraction ] -->
<TimeSensor DEF='ClockAs5'/>







































<!-- ROUTE information for A0Mover node:  [from ClockA0.fraction_changed to set_fraction ] [from value_changed to A0TRANS.set_translation ] -->
<PositionInterpolator DEF='A0Moverkey='0.0 .99keyValue='-7.5 -.03 0 -7.5 0 0'/>

<!-- ROUTE information for As0Mover node:  [from ClockAs0.fraction_changed to set_fraction ] [from value_changed to As0TRANS.set_translation ] -->
<PositionInterpolator DEF='As0Moverkey='0 .99keyValue='-7.375 0 -.375 -7.375 0.1 -0.375'/>

<!-- ROUTE information for B0Mover node:  [from ClockB0.fraction_changed to set_fraction ] [from value_changed to B0TRANS.set_translation ] -->
<PositionInterpolator DEF='B0Moverkey='0.0 .99keyValue='-7.25 -.03 0 -7.25 0 0'/>

<!-- ROUTE information for C0Mover node:  [from ClockC0.fraction_changed to set_fraction ] [from value_changed to C0TRANS.set_translation ] -->
<PositionInterpolator DEF='C0Moverkey='0.0 .99keyValue='-7 -.03 0 -7 0 0'/>

<!-- ROUTE information for Cs0Mover node:  [from ClockCs0.fraction_changed to set_fraction ] [from value_changed to Cs0TRANS.set_translation ] -->
<PositionInterpolator DEF='Cs0Moverkey='0 .99keyValue='-6.875 0 -.375 -6.875 0.1 -0.375'/>

<!-- ROUTE information for D0Mover node:  [from ClockD0.fraction_changed to set_fraction ] [from value_changed to D0TRANS.set_translation ] -->
<PositionInterpolator DEF='D0Moverkey='0.0 .99keyValue='-6.75 -.03 0 -6.75 0 0'/>

<!-- ROUTE information for Ds0Mover node:  [from ClockDs0.fraction_changed to set_fraction ] [from value_changed to Ds0TRANS.set_translation ] -->
<PositionInterpolator DEF='Ds0Moverkey='0 .99keyValue='-6.625 0 -.375 -6.625 0.1 -0.375'/>

<!-- ROUTE information for E0Mover node:  [from ClockE0.fraction_changed to set_fraction ] [from value_changed to E0TRANS.set_translation ] -->
<PositionInterpolator DEF='E0Moverkey='0.0 .99keyValue='-6.5 -.03 0 -6.5 0 0'/>

<!-- ROUTE information for F0Mover node:  [from ClockF0.fraction_changed to set_fraction ] [from value_changed to F0TRANS.set_translation ] -->
<PositionInterpolator DEF='F0Moverkey='0 .99keyValue='-6.25 -.03 0 -6.25 0 0'/>

<!-- ROUTE information for Fs0Mover node:  [from ClockFs0.fraction_changed to set_fraction ] [from value_changed to Fs0TRANS.set_translation ] -->
<PositionInterpolator DEF='Fs0Moverkey='0.0 .99keyValue='-6.125 0 -.375 -6.125 0.1 -.375'/>

<!-- ROUTE information for G0Mover node:  [from ClockG0.fraction_changed to set_fraction ] [from value_changed to G0TRANS.set_translation ] -->
<PositionInterpolator DEF='G0Moverkey='0 .99keyValue='-6 -.03 0 -6 0 0'/>

<!-- ROUTE information for Gs0Mover node:  [from ClockGs0.fraction_changed to set_fraction ] [from value_changed to Gs0TRANS.set_translation ] -->
<PositionInterpolator DEF='Gs0Moverkey='0.0 .99keyValue='-5.875 0 -.375 -5.875 .1 -.375'/>

<!-- ROUTE information for A1Mover node:  [from ClockA1.fraction_changed to set_fraction ] [from value_changed to A1TRANS.set_translation ] -->
<PositionInterpolator DEF='A1Moverkey='0.0 .99keyValue='-5.75 -.03 0 -5.75 0 0'/>

<!-- ROUTE information for As1Mover node:  [from ClockAs1.fraction_changed to set_fraction ] [from value_changed to As1TRANS.set_translation ] -->
<PositionInterpolator DEF='As1Moverkey='0 .99keyValue='-5.65 0 -.375 -5.625 0.1 -0.375'/>

<!-- ROUTE information for B1Mover node:  [from ClockB1.fraction_changed to set_fraction ] [from value_changed to B1TRANS.set_translation ] -->
<PositionInterpolator DEF='B1Moverkey='0.0 .99keyValue='-5.5 -.03 0 -5.5 0 0'/>

<!-- ROUTE information for C1Mover node:  [from ClockC1.fraction_changed to set_fraction ] [from value_changed to C1TRANS.set_translation ] -->
<PositionInterpolator DEF='C1Moverkey='0.0 .99keyValue='-5.25 -.03 0 -5.25 0 0'/>

<!-- ROUTE information for Cs1Mover node:  [from ClockCs1.fraction_changed to set_fraction ] [from value_changed to Cs1TRANS.set_translation ] -->
<PositionInterpolator DEF='Cs1Moverkey='0 .99keyValue='-5.125 0 -.375 -5.125 0.1 -0.375'/>

<!-- ROUTE information for D1Mover node:  [from ClockD1.fraction_changed to set_fraction ] [from value_changed to D1TRANS.set_translation ] -->
<PositionInterpolator DEF='D1Moverkey='0.0 .99keyValue='-5 -.03 0 -5 0 0'/>

<!-- ROUTE information for Ds1Mover node:  [from ClockDs1.fraction_changed to set_fraction ] [from value_changed to Ds1TRANS.set_translation ] -->
<PositionInterpolator DEF='Ds1Moverkey='0 .99keyValue='-4.875 0 -.375 -4.875 0.1 -0.375'/>

<!-- ROUTE information for E1Mover node:  [from ClockE1.fraction_changed to set_fraction ] [from value_changed to E1TRANS.set_translation ] -->
<PositionInterpolator DEF='E1Moverkey='0.0 .99keyValue='-4.75 -.03 0 -4.75 0 0'/>

<!-- ROUTE information for F1Mover node:  [from ClockF1.fraction_changed to set_fraction ] [from value_changed to F1TRANS.set_translation ] -->
<PositionInterpolator DEF='F1Moverkey='0 .99keyValue='-4.5 -.03 0 -4.5 0 0'/>

<!-- ROUTE information for Fs1Mover node:  [from ClockFs1.fraction_changed to set_fraction ] [from value_changed to Fs1TRANS.set_translation ] -->
<PositionInterpolator DEF='Fs1Moverkey='0.0 .99keyValue='-4.375 0 -.375 -4.375 0.1 -.375'/>

<!-- ROUTE information for G1Mover node:  [from ClockG1.fraction_changed to set_fraction ] [from value_changed to G1TRANS.set_translation ] -->
<PositionInterpolator DEF='G1Moverkey='0 .99keyValue='-4.25 -.03 0 -4.25 0 0'/>

<!-- ROUTE information for Gs1Mover node:  [from ClockGs1.fraction_changed to set_fraction ] [from value_changed to Gs1TRANS.set_translation ] -->
<PositionInterpolator DEF='Gs1Moverkey='0.0 .99keyValue='-4.125 0 -.375 -4.125 .1 -.375'/>

<!-- ROUTE information for A2Mover node:  [from ClockA2.fraction_changed to set_fraction ] [from value_changed to A2TRANS.set_translation ] -->
<PositionInterpolator DEF='A2Moverkey='0 .99keyValue='-4 -.03 0 -4 0 0'/>

<!-- ROUTE information for As2Mover node:  [from ClockAs2.fraction_changed to set_fraction ] [from value_changed to As2TRANS.set_translation ] -->
<PositionInterpolator DEF='As2Moverkey='0.0 .99keyValue='-3.875 0 -.3750 -3.875 .1 -.375'/>

<!-- ROUTE information for B2Mover node:  [from ClockB2.fraction_changed to set_fraction ] [from value_changed to B2TRANS.set_translation ] -->
<PositionInterpolator DEF='B2Moverkey='0 .99keyValue='-3.75 -.03 0 -3.75 0 0'/>

<!-- ROUTE information for C2Mover node:  [from ClockC2.fraction_changed to set_fraction ] [from value_changed to C2TRANS.set_translation ] -->
<PositionInterpolator DEF='C2Moverkey='0 .99keyValue='-3.5 -.03 0 -3.5 0 0'/>

<!-- ROUTE information for Cs2Mover node:  [from ClockCs2.fraction_changed to set_fraction ] [from value_changed to Cs2TRANS.set_translation ] -->
<PositionInterpolator DEF='Cs2Moverkey='0 .99keyValue='-3.375 0 -.375 -3.375 0.1 -0.375'/>

<!-- ROUTE information for D2Mover node:  [from ClockD2.fraction_changed to set_fraction ] [from value_changed to D2TRANS.set_translation ] -->
<PositionInterpolator DEF='D2Moverkey='0.0 .99keyValue='-3.25 -.03 0 -3.25 0 0'/>

<!-- ROUTE information for Ds2Mover node:  [from ClockDs2.fraction_changed to set_fraction ] [from value_changed to Ds2TRANS.set_translation ] -->
<PositionInterpolator DEF='Ds2Moverkey='0 .99keyValue='-3.125 0 -.375 -3.125 0.1 -0.375'/>

<!-- ROUTE information for E2Mover node:  [from ClockE2.fraction_changed to set_fraction ] [from value_changed to E2TRANS.set_translation ] -->
<PositionInterpolator DEF='E2Moverkey='0.0 .99keyValue='-3 -.03 0 -3 0 0'/>

<!-- ROUTE information for F2Mover node:  [from ClockF2.fraction_changed to set_fraction ] [from value_changed to F2TRANS.set_translation ] -->
<PositionInterpolator DEF='F2Moverkey='0 .99keyValue='-2.75 -.03 0 -2.75 0 0'/>

<!-- ROUTE information for Fs2Mover node:  [from ClockFs2.fraction_changed to set_fraction ] [from value_changed to Fs2TRANS.set_translation ] -->
<PositionInterpolator DEF='Fs2Moverkey='0.0 .99keyValue='-2.625 0 -.375 -2.625 0.1 -.375'/>

<!-- ROUTE information for G2Mover node:  [from ClockG2.fraction_changed to set_fraction ] [from value_changed to G2TRANS.set_translation ] -->
<PositionInterpolator DEF='G2Moverkey='0 .99keyValue='-2.5 -.03 0 -2.5 0 0'/>

<!-- ROUTE information for Gs2Mover node:  [from ClockGs2.fraction_changed to set_fraction ] [from value_changed to Gs2TRANS.set_translation ] -->
<PositionInterpolator DEF='Gs2Moverkey='0.0 .99keyValue='-2.375 0 -.375 -2.375 .1 -.375'/>

<!-- ROUTE information for A3Mover node:  [from ClockA3.fraction_changed to set_fraction ] [from value_changed to A3TRANS.set_translation ] -->
<PositionInterpolator DEF='A3Moverkey='0 .99keyValue='-2.25 -.03 0 -2.25 0 0'/>

<!-- ROUTE information for As3Mover node:  [from ClockAs3.fraction_changed to set_fraction ] [from value_changed to As3TRANS.set_translation ] -->
<PositionInterpolator DEF='As3Moverkey='0.0 .99keyValue='-2.125 0 -.3750 -2.125 .1 -.375'/>

<!-- ROUTE information for B3Mover node:  [from ClockB3.fraction_changed to set_fraction ] [from value_changed to B3TRANS.set_translation ] -->
<PositionInterpolator DEF='B3Moverkey='0 .99keyValue='-2 -.03 0 -2 0 0'/>

<!-- ROUTE information for C3Mover node:  [from ClockC3.fraction_changed to set_fraction ] [from value_changed to C3TRANS.set_translation ] -->
<PositionInterpolator DEF='C3Moverkey='0 .99keyValue='-1.75 -.03 0 -1.75 0 0'/>

<!-- ROUTE information for Cs3Mover node:  [from ClockCs3.fraction_changed to set_fraction ] [from value_changed to Cs3TRANS.set_translation ] -->
<PositionInterpolator DEF='Cs3Moverkey='0 .99keyValue='-1.625 0 -.375 -1.625 0.1 -0.375'/>

<!-- ROUTE information for D3Mover node:  [from ClockD3.fraction_changed to set_fraction ] [from value_changed to D3TRANS.set_translation ] -->
<PositionInterpolator DEF='D3Moverkey='0.0 .99keyValue='-1.5 -.03 0 -1.5 0 0'/>

<!-- ROUTE information for Ds3Mover node:  [from ClockDs3.fraction_changed to set_fraction ] [from value_changed to Ds3TRANS.set_translation ] -->
<PositionInterpolator DEF='Ds3Moverkey='0 .99keyValue='-1.375 0 -.375 -1.375 0.1 -0.375'/>

<!-- ROUTE information for E3Mover node:  [from ClockE3.fraction_changed to set_fraction ] [from value_changed to E3TRANS.set_translation ] -->
<PositionInterpolator DEF='E3Moverkey='0.0 .99keyValue='-1.25 -.03 0 -1.25 0 0'/>

<!-- ROUTE information for F3Mover node:  [from ClockF3.fraction_changed to set_fraction ] [from value_changed to F3TRANS.set_translation ] -->
<PositionInterpolator DEF='F3Moverkey='0 .99keyValue='-1 -.03 0 -1 0 0'/>

<!-- ROUTE information for Fs3Mover node:  [from ClockFs3.fraction_changed to set_fraction ] [from value_changed to Fs3TRANS.set_translation ] -->
<PositionInterpolator DEF='Fs3Moverkey='0.0 .99keyValue='-.875 0 -.375 -.875 0.1 -.375'/>

<!-- ROUTE information for G3Mover node:  [from ClockG3.fraction_changed to set_fraction ] [from value_changed to G3TRANS.set_translation ] -->
<PositionInterpolator DEF='G3Moverkey='0 .99keyValue='-.75 -.03 0 -.75 0 0'/>

<!-- ROUTE information for Gs3Mover node:  [from ClockGs3.fraction_changed to set_fraction ] [from value_changed to Gs3TRANS.set_translation ] -->
<PositionInterpolator DEF='Gs3Moverkey='0.0 .99keyValue='-.625 0 -.375 -.625 .1 -.375'/>

<!-- ROUTE information for A4Mover node:  [from ClockA4.fraction_changed to set_fraction ] [from value_changed to A4TRANS.set_translation ] -->
<PositionInterpolator DEF='A4Moverkey='0 .99keyValue='-.5 -.03 0 -.5 0 0'/>

<!-- ROUTE information for As4Mover node:  [from ClockAs4.fraction_changed to set_fraction ] [from value_changed to As4TRANS.set_translation ] -->
<PositionInterpolator DEF='As4Moverkey='0.0 .99keyValue='-.375 0 -.3750 -.375 .1 -.375'/>

<!-- ROUTE information for B4Mover node:  [from ClockB4.fraction_changed to set_fraction ] [from value_changed to B4TRANS.set_translation ] -->
<PositionInterpolator DEF='B4Moverkey='0 .99keyValue='-.25 -.03 0 -.25 0 0'/>

<!-- ROUTE information for C4Mover node:  [from ClockC4.fraction_changed to set_fraction ] [from value_changed to C4TRANS.set_translation ] -->
<PositionInterpolator DEF='C4Moverkey='0.0 .99keyValue='0 -.03 0 0 0 0'/>

<!-- ROUTE information for Cs4Mover node:  [from ClockCs4.fraction_changed to set_fraction ] [from value_changed to Cs4TRANS.set_translation ] -->
<PositionInterpolator DEF='Cs4Moverkey='0 .99keyValue='.125 0 -.375 0.125 0.1 -0.375'/>

<!-- ROUTE information for D4Mover node:  [from ClockD4.fraction_changed to set_fraction ] [from value_changed to D4TRANS.set_translation ] -->
<PositionInterpolator DEF='D4Moverkey='0.0 .99keyValue='0.25 -.03 0 0.25 0 0'/>

<!-- ROUTE information for Ds4Mover node:  [from ClockDs4.fraction_changed to set_fraction ] [from value_changed to Ds4TRANS.set_translation ] -->
<PositionInterpolator DEF='Ds4Moverkey='0 .99keyValue='.375 0 -.375 0.375 0.1 -0.375'/>

<!-- ROUTE information for E4Mover node:  [from ClockE4.fraction_changed to set_fraction ] [from value_changed to E4TRANS.set_translation ] -->
<PositionInterpolator DEF='E4Moverkey='0.0 .99keyValue='0.5 -.03 0 0.5 0 0'/>

<!-- ROUTE information for F4Mover node:  [from ClockF4.fraction_changed to set_fraction ] [from value_changed to F4TRANS.set_translation ] -->
<PositionInterpolator DEF='F4Moverkey='0 .99keyValue='.75 -.03 0 .75 0 0'/>

<!-- ROUTE information for Fs4Mover node:  [from ClockFs4.fraction_changed to set_fraction ] [from value_changed to Fs4TRANS.set_translation ] -->
<PositionInterpolator DEF='Fs4Moverkey='0.0 .99keyValue='0.875 0 -.375 .875 0.1 -.375'/>

<!-- ROUTE information for G4Mover node:  [from ClockG4.fraction_changed to set_fraction ] [from value_changed to G4TRANS.set_translation ] -->
<PositionInterpolator DEF='G4Moverkey='0 .99keyValue='1 -.03 0 1 0 0'/>

<!-- ROUTE information for Gs4Mover node:  [from ClockGs4.fraction_changed to set_fraction ] [from value_changed to Gs4TRANS.set_translation ] -->
<PositionInterpolator DEF='Gs4Moverkey='0.0 .99keyValue='1.125 0 -.375 1.125 .1 -.375'/>

<!-- ROUTE information for A5Mover node:  [from ClockA5.fraction_changed to set_fraction ] [from value_changed to A5TRANS.set_translation ] -->
<PositionInterpolator DEF='A5Moverkey='0 .99keyValue='1.25 -.03 0 1.25 0 0'/>

<!-- ROUTE information for As5Mover node:  [from ClockAs5.fraction_changed to set_fraction ] [from value_changed to As5TRANS.set_translation ] -->
<PositionInterpolator DEF='As5Moverkey='0.0 .99keyValue='1.375 0 -.3750 1.375 .1 -.375'/>

<!-- ROUTE information for B5Mover node:  [from ClockB5.fraction_changed to set_fraction ] [from value_changed to B5TRANS.set_translation ] -->
<PositionInterpolator DEF='B5Moverkey='0 .99keyValue='1.5 -.03 0 1.5 0 0'/>

<!-- ROUTE information for C5Mover node:  [from ClockC5.fraction_changed to set_fraction ] [from value_changed to C5TRANS.set_translation ] -->
<PositionInterpolator DEF='C5Moverkey='0 .99keyValue='1.75 -.03 0 1.75 0 0'/>

<!-- ROUTE information for Cs5Mover node:  [from ClockCs5.fraction_changed to set_fraction ] [from value_changed to Cs5TRANS.set_translation ] -->
<PositionInterpolator DEF='Cs5Moverkey='0 .99keyValue='1.875 0 -.375 1.875 0.1 -0.375'/>

<!-- ROUTE information for D5Mover node:  [from ClockD5.fraction_changed to set_fraction ] [from value_changed to D5TRANS.set_translation ] -->
<PositionInterpolator DEF='D5Moverkey='0.0 .99keyValue='2 -.03 0 2 0 0'/>

<!-- ROUTE information for Ds5Mover node:  [from ClockDs5.fraction_changed to set_fraction ] [from value_changed to Ds5TRANS.set_translation ] -->
<PositionInterpolator DEF='Ds5Moverkey='0 .99keyValue='2.125 0 -.375 2.125 0.1 -0.375'/>

<!-- ROUTE information for E5Mover node:  [from ClockE5.fraction_changed to set_fraction ] [from value_changed to E5TRANS.set_translation ] -->
<PositionInterpolator DEF='E5Moverkey='0.0 .99keyValue='2.25 -.03 0 2.25 0 0'/>

<!-- ROUTE information for F5Mover node:  [from ClockF5.fraction_changed to set_fraction ] [from value_changed to F5TRANS.set_translation ] -->
<PositionInterpolator DEF='F5Moverkey='0 .99keyValue='2.5 -.03 0 2.5 0 0'/>

<!-- ROUTE information for Fs5Mover node:  [from ClockFs5.fraction_changed to set_fraction ] [from value_changed to Fs5TRANS.set_translation ] -->
<PositionInterpolator DEF='Fs5Moverkey='0.0 .99keyValue='2.625 0 -.375 2.625 0.1 -.375'/>

<!-- ROUTE information for G5Mover node:  [from ClockG5.fraction_changed to set_fraction ] [from value_changed to G5TRANS.set_translation ] -->
<PositionInterpolator DEF='G5Moverkey='0 .99keyValue='2.75 -.03 0 2.75 0 0'/>

<!-- ROUTE information for Gs5Mover node:  [from ClockGs5.fraction_changed to set_fraction ] [from value_changed to Gs5TRANS.set_translation ] -->
<PositionInterpolator DEF='Gs5Moverkey='0.0 .99keyValue='2.875 0 -.375 2.875 .1 -.375'/>

<!-- ROUTE information for A6Mover node:  [from ClockA6.fraction_changed to set_fraction ] [from value_changed to A6TRANS.set_translation ] -->
<PositionInterpolator DEF='A6Moverkey='0 .99keyValue='3 -.03 0 3 0 0'/>

<!-- ROUTE information for As6Mover node:  [from ClockAs6.fraction_changed to set_fraction ] [from value_changed to As6TRANS.set_translation ] -->
<PositionInterpolator DEF='As6Moverkey='0.0 .99keyValue='3.125 0 -.3750 3.125 .1 -.375'/>

<!-- ROUTE information for B6Mover node:  [from ClockB6.fraction_changed to set_fraction ] [from value_changed to B6TRANS.set_translation ] -->
<PositionInterpolator DEF='B6Moverkey='0 .99keyValue='3.25 -.03 0 3.25 0 0'/>

<!-- ROUTE information for C6Mover node:  [from ClockC6.fraction_changed to set_fraction ] [from value_changed to C6TRANS.set_translation ] -->
<PositionInterpolator DEF='C6Moverkey='0 .99keyValue='3.5 -.03 0 3.5 0 0'/>

<!-- ROUTE information for Cs6Mover node:  [from ClockCs6.fraction_changed to set_fraction ] [from value_changed to Cs6TRANS.set_translation ] -->
<PositionInterpolator DEF='Cs6Moverkey='0 .99keyValue='3.625 0 -.375 3.625 0.1 -0.375'/>

<!-- ROUTE information for D6Mover node:  [from ClockD6.fraction_changed to set_fraction ] [from value_changed to D6TRANS.set_translation ] -->
<PositionInterpolator DEF='D6Moverkey='0.0 .99keyValue='3.75 -.03 0 3.75 0 0'/>

<!-- ROUTE information for Ds6Mover node:  [from ClockDs6.fraction_changed to set_fraction ] [from value_changed to Ds6TRANS.set_translation ] -->
<PositionInterpolator DEF='Ds6Moverkey='0 .99keyValue='3.875 0 -.375 3.875 0.1 -0.375'/>

<!-- ROUTE information for E6Mover node:  [from ClockE6.fraction_changed to set_fraction ] [from value_changed to E6TRANS.set_translation ] -->
<PositionInterpolator DEF='E6Moverkey='0.0 .99keyValue='4 -.03 0 4 0 0'/>

<!-- ROUTE information for F6Mover node:  [from ClockF6.fraction_changed to set_fraction ] [from value_changed to F6TRANS.set_translation ] -->
<PositionInterpolator DEF='F6Moverkey='0 .99keyValue='4.25 -.03 0 4.25 0 0'/>

<!-- ROUTE information for Fs6Mover node:  [from ClockFs6.fraction_changed to set_fraction ] [from value_changed to Fs6TRANS.set_translation ] -->
<PositionInterpolator DEF='Fs6Moverkey='0.0 .99keyValue='4.375 0 -.375 4.375 0.1 -.375'/>

<!-- ROUTE information for G6Mover node:  [from ClockG6.fraction_changed to set_fraction ] [from value_changed to G6TRANS.set_translation ] -->
<PositionInterpolator DEF='G6Moverkey='0 .99keyValue='4.5 -.03 0 4.5 0 0'/>

<!-- ROUTE information for Gs6Mover node:  [from ClockGs6.fraction_changed to set_fraction ] [from value_changed to Gs6TRANS.set_translation ] -->
<PositionInterpolator DEF='Gs6Moverkey='0.0 .99keyValue='4.625 0 -.375 4.625 .1 -.375'/>

<!-- ROUTE information for A7Mover node:  [from ClockA7.fraction_changed to set_fraction ] [from value_changed to A7TRANS.set_translation ] -->
<PositionInterpolator DEF='A7Moverkey='0 .99keyValue='4.75 -.03 0 4.75 0 0'/>

<!-- ROUTE information for As7Mover node:  [from ClockAs7.fraction_changed to set_fraction ] [from value_changed to As7TRANS.set_translation ] -->
<PositionInterpolator DEF='As7Moverkey='0.0 .99keyValue='4.875 0 -.3750 4.875 .1 -.375'/>

<!-- ROUTE information for B7Mover node:  [from ClockB7.fraction_changed to set_fraction ] [from value_changed to B7TRANS.set_translation ] -->
<PositionInterpolator DEF='B7Moverkey='0 .99keyValue='5 -.03 0 5 0 0'/>

<!-- ROUTE information for C7Mover node:  [from ClockC7.fraction_changed to set_fraction ] [from value_changed to C7TRANS.set_translation ] -->
<PositionInterpolator DEF='C7Moverkey='0 .99keyValue='5.25 -.03 0 5.25 0 0'/>

<!-- ROUTE information for Cs7Mover node:  [from ClockCs7.fraction_changed to set_fraction ] [from value_changed to Cs7TRANS.set_translation ] -->
<PositionInterpolator DEF='Cs7Moverkey='0 .99keyValue='5.375 0 -.375 5.375 0.1 -0.375'/>

<!-- ROUTE information for D7Mover node:  [from ClockD7.fraction_changed to set_fraction ] [from value_changed to D7TRANS.set_translation ] -->
<PositionInterpolator DEF='D7Moverkey='0.0 .99keyValue='5.5 -.03 0 5.5 0 0'/>

<!-- ROUTE information for Ds7Mover node:  [from ClockDs7.fraction_changed to set_fraction ] [from value_changed to Ds7TRANS.set_translation ] -->
<PositionInterpolator DEF='Ds7Moverkey='0 .99keyValue='5.625 0 -.375 5.625 0.1 -0.375'/>

<!-- ROUTE information for E7Mover node:  [from ClockE7.fraction_changed to set_fraction ] [from value_changed to E7TRANS.set_translation ] -->
<PositionInterpolator DEF='E7Moverkey='0.0 .99keyValue='5.75 -.03 0 5.75 0 0'/>

<!-- ROUTE information for F7Mover node:  [from ClockF7.fraction_changed to set_fraction ] [from value_changed to F7TRANS.set_translation ] -->
<PositionInterpolator DEF='F7Moverkey='0 .99keyValue='6 -.03 0 6 0 0'/>

<!-- ROUTE information for Fs7Mover node:  [from ClockFs7.fraction_changed to set_fraction ] [from value_changed to Fs7TRANS.set_translation ] -->
<PositionInterpolator DEF='Fs7Moverkey='0.0 .99keyValue='6.125 0 -.375 6.125 0.1 -.375'/>

<!-- ROUTE information for G7Mover node:  [from ClockG7.fraction_changed to set_fraction ] [from value_changed to G7TRANS.set_translation ] -->
<PositionInterpolator DEF='G7Moverkey='0 .99keyValue='6.25 -.03 0 6.25 0 0'/>

<!-- ROUTE information for Gs7Mover node:  [from ClockGs7.fraction_changed to set_fraction ] [from value_changed to Gs7TRANS.set_translation ] -->
<PositionInterpolator DEF='Gs7Moverkey='0.0 .99keyValue='6.375 0 -.375 6.375 .1 -.375'/>

<!-- ROUTE information for A8Mover node:  [from ClockA8.fraction_changed to set_fraction ] [from value_changed to A8TRANS.set_translation ] -->
<PositionInterpolator DEF='A8Moverkey='0 .99keyValue='6.5 -.03 0 6.5 0 0'/>

<!-- ROUTE information for As8Mover node:  [from ClockAs8.fraction_changed to set_fraction ] [from value_changed to As8TRANS.set_translation ] -->
<PositionInterpolator DEF='As8Moverkey='0.0 .99keyValue='6.625 0 -.3750 6.625 .1 -.375'/>

<!-- ROUTE information for B8Mover node:  [from ClockB8.fraction_changed to set_fraction ] [from value_changed to B8TRANS.set_translation ] -->
<PositionInterpolator DEF='B8Moverkey='0 .99keyValue='6.75 -.03 0 6.75 0 0'/>

<!-- ROUTE information for C8Mover node:  [from ClockC8.fraction_changed to set_fraction ] [from value_changed to C8TRANS.set_translation ] -->
<PositionInterpolator DEF='C8Moverkey='0 .99keyValue='7 -.03 0 7 0 0'/>

<!-- ROUTE information for PlayerPianoScript node:  [from StartPlaying.touchTime to playScriptedNotes ] [from playA0 to PitchA0.set_startTime ] [from playA0 to ClockA0.set_startTime ] [from playAs0 to PitchAs0.set_startTime ] [from playAs0 to ClockAs0.set_startTime ] [from playB0 to PitchB0.set_startTime ] [from playB0 to ClockB0.set_startTime ] [from playC0 to PitchC0.set_startTime ] [from playC0 to ClockC0.set_startTime ] [from playCs0 to PitchCs0.set_startTime ] [from playCs0 to ClockCs0.set_startTime ] [from playD0 to PitchD0.set_startTime ] [from playD0 to ClockD0.set_startTime ] [from playDs0 to PitchDs0.set_startTime ] [from playDs0 to ClockDs0.set_startTime ] [from playE0 to PitchE0.set_startTime ] [from playE0 to ClockE0.set_startTime ] [from playF0 to PitchF0.set_startTime ] [from playF0 to ClockF0.set_startTime ] [from playFs0 to PitchFs0.set_startTime ] [from playFs0 to ClockFs0.set_startTime ] [from playG0 to PitchG0.set_startTime ] [from playG0 to ClockG0.set_startTime ] [from playGs0 to PitchGs0.set_startTime ] [from playGs0 to ClockGs0.set_startTime ] [from playA1 to PitchA1.set_startTime ] [from playA1 to ClockA1.set_startTime ] [from playAs1 to PitchAs1.set_startTime ] [from playAs1 to ClockAs1.set_startTime ] [from playB1 to PitchB1.set_startTime ] [from playB1 to ClockB1.set_startTime ] [from playC1 to PitchC1.set_startTime ] [from playC1 to ClockC1.set_startTime ] [from playCs1 to PitchCs1.set_startTime ] [from playCs1 to ClockCs1.set_startTime ] [from playD1 to PitchD1.set_startTime ] [from playD1 to ClockD1.set_startTime ] [from playDs1 to PitchDs1.set_startTime ] [from playDs1 to ClockDs1.set_startTime ] [from playE1 to PitchE1.set_startTime ] [from playE1 to ClockE1.set_startTime ] [from playF1 to PitchF1.set_startTime ] [from playF1 to ClockF1.set_startTime ] [from playFs1 to PitchFs1.set_startTime ] [from playFs1 to ClockFs1.set_startTime ] [from playG1 to PitchG1.set_startTime ] [from playG1 to ClockG1.set_startTime ] [from playGs1 to PitchGs1.set_startTime ] [from playGs1 to ClockGs1.set_startTime ] [from playA2 to PitchA2.set_startTime ] [from playA2 to ClockA2.set_startTime ] [from playAs2 to PitchAs2.set_startTime ] [from playAs2 to ClockAs2.set_startTime ] [from playB2 to PitchB2.set_startTime ] [from playB2 to ClockB2.set_startTime ] [from playC2 to PitchC2.set_startTime ] [from playC2 to ClockC2.set_startTime ] [from playCs2 to PitchCs2.set_startTime ] [from playCs2 to ClockCs2.set_startTime ] [from playD2 to PitchD2.set_startTime ] [from playD2 to ClockD2.set_startTime ] [from playDs2 to PitchDs2.set_startTime ] [from playDs2 to ClockDs2.set_startTime ] [from playE2 to PitchE2.set_startTime ] [from playE2 to ClockE2.set_startTime ] [from playF2 to PitchF2.set_startTime ] [from playF2 to ClockF2.set_startTime ] [from playFs2 to PitchFs2.set_startTime ] [from playFs2 to ClockFs2.set_startTime ] [from playG2 to PitchG2.set_startTime ] [from playG2 to ClockG2.set_startTime ] [from playGs2 to PitchGs2.set_startTime ] [from playGs2 to ClockGs2.set_startTime ] [from playA3 to PitchA3.set_startTime ] [from playA3 to ClockA3.set_startTime ] [from playAs3 to PitchAs3.set_startTime ] [from playAs3 to ClockAs3.set_startTime ] [from playB3 to PitchB3.set_startTime ] [from playB3 to ClockB3.set_startTime ] [from playC3 to PitchC3.set_startTime ] [from playC3 to ClockC3.set_startTime ] [from playCs3 to PitchCs3.set_startTime ] [from playCs3 to ClockCs3.set_startTime ] [from playD3 to PitchD3.set_startTime ] [from playD3 to ClockD3.set_startTime ] [from playDs3 to PitchDs3.set_startTime ] [from playDs3 to ClockDs3.set_startTime ] [from playE3 to PitchE3.set_startTime ] [from playE3 to ClockE3.set_startTime ] [from playF3 to PitchF3.set_startTime ] [from playF3 to ClockF3.set_startTime ] [from playFs3 to PitchFs3.set_startTime ] [from playFs3 to ClockFs3.set_startTime ] [from playG3 to PitchG3.set_startTime ] [from playG3 to ClockG3.set_startTime ] [from playGs3 to PitchGs3.set_startTime ] [from playGs3 to ClockGs3.set_startTime ] [from playA4 to PitchA4.set_startTime ] [from playA4 to ClockA4.set_startTime ] [from playAs4 to PitchAs4.set_startTime ] [from playAs4 to ClockAs4.set_startTime ] [from playB4 to PitchB4.set_startTime ] [from playB4 to ClockB4.set_startTime ] [from playC4 to PitchC4.set_startTime ] [from playC4 to ClockC4.set_startTime ] [from playCs4 to PitchCs4.set_startTime ] [from playCs4 to ClockCs4.set_startTime ] [from playD4 to PitchD4.set_startTime ] [from playD4 to ClockD4.set_startTime ] [from playDs4 to PitchDs4.set_startTime ] [from playDs4 to ClockDs4.set_startTime ] [from playE4 to PitchE4.set_startTime ] [from playE4 to ClockE4.set_startTime ] [from playF4 to PitchF4.set_startTime ] [from playF4 to ClockF4.set_startTime ] [from playFs4 to PitchFs4.set_startTime ] [from playFs4 to ClockFs4.set_startTime ] [from playG4 to PitchG4.set_startTime ] [from playG4 to ClockG4.set_startTime ] [from playGs4 to PitchGs4.set_startTime ] [from playGs4 to ClockGs4.set_startTime ] [from playB5 to ClockB5.set_startTime ] [from playC5 to PitchC5.set_startTime ] [from playC5 to ClockC5.set_startTime ] [from playCs5 to PitchCs5.set_startTime ] [from playCs5 to ClockCs5.set_startTime ] [from playD5 to PitchD5.set_startTime ] [from playD5 to ClockD5.set_startTime ] [from playDs5 to PitchDs5.set_startTime ] [from playDs5 to ClockDs5.set_startTime ] [from playE5 to PitchE5.set_startTime ] [from playE5 to ClockE5.set_startTime ] [from playF5 to PitchF5.set_startTime ] [from playF5 to ClockF5.set_startTime ] [from playFs5 to PitchFs5.set_startTime ] [from playFs5 to ClockFs5.set_startTime ] [from playG5 to PitchG5.set_startTime ] [from playG5 to ClockG5.set_startTime ] [from playGs5 to PitchGs5.set_startTime ] [from playGs5 to ClockGs5.set_startTime ] [from playA6 to PitchA6.set_startTime ] [from playA6 to ClockA6.set_startTime ] [from playAs6 to PitchAs6.set_startTime ] [from playAs6 to ClockAs6.set_startTime ] [from playB6 to PitchB6.set_startTime ] [from playB6 to ClockB6.set_startTime ] [from playC6 to PitchC6.set_startTime ] [from playC6 to ClockC6.set_startTime ] [from playCs6 to PitchCs6.set_startTime ] [from playCs6 to ClockCs6.set_startTime ] [from playD6 to PitchD6.set_startTime ] [from playD6 to ClockD6.set_startTime ] [from playDs6 to PitchDs6.set_startTime ] [from playDs6 to ClockDs6.set_startTime ] [from playE6 to PitchE6.set_startTime ] [from playE6 to ClockE6.set_startTime ] [from playF6 to PitchF6.set_startTime ] [from playF6 to ClockF6.set_startTime ] [from playFs6 to PitchFs6.set_startTime ] [from playFs6 to ClockFs6.set_startTime ] [from playG6 to PitchG6.set_startTime ] [from playG6 to ClockG6.set_startTime ] [from playGs6 to PitchGs6.set_startTime ] [from playGs6 to ClockGs6.set_startTime ] [from playA7 to PitchA7.set_startTime ] [from playA7 to ClockA7.set_startTime ] [from playAs7 to PitchAs7.set_startTime ] [from playAs7 to ClockAs7.set_startTime ] [from playB7 to PitchB7.set_startTime ] [from playB7 to ClockB7.set_startTime ] [from playC7 to PitchC7.set_startTime ] [from playC7 to ClockC7.set_startTime ] [from playCs7 to PitchCs7.set_startTime ] [from playCs7 to ClockCs7.set_startTime ] [from playD7 to PitchD7.set_startTime ] [from playD7 to ClockD7.set_startTime ] [from playDs7 to PitchDs7.set_startTime ] [from playDs7 to ClockDs7.set_startTime ] [from playE7 to PitchE7.set_startTime ] [from playE7 to ClockE7.set_startTime ] [from playF7 to PitchF7.set_startTime ] [from playF7 to ClockF7.set_startTime ] [from playFs7 to PitchFs7.set_startTime ] [from playFs7 to ClockFs7.set_startTime ] [from playG7 to PitchG7.set_startTime ] [from playG7 to ClockG7.set_startTime ] [from playGs7 to PitchGs7.set_startTime ] [from playGs7 to ClockGs7.set_startTime ] [from playA8 to PitchA8.set_startTime ] [from playA8 to ClockA8.set_startTime ] [from playAs8 to PitchAs8.set_startTime ] [from playAs8 to ClockAs8.set_startTime ] [from playB8 to PitchB8.set_startTime ] [from playB8 to ClockB8.set_startTime ] [from playC8 to PitchC8.set_startTime ] [from playC8 to ClockC8.set_startTime ] -->
<Script DEF='PlayerPianoScript'>
<field name='playScriptedNotestype='SFTimeaccessType='inputOnly'/>
<field name='playA0type='SFTimeaccessType='outputOnly'/>
<field name='playAs0type='SFTimeaccessType='outputOnly'/>
<field name='playB0type='SFTimeaccessType='outputOnly'/>
<field name='playC0type='SFTimeaccessType='outputOnly'/>
<field name='playCs0type='SFTimeaccessType='outputOnly'/>
<field name='playD0type='SFTimeaccessType='outputOnly'/>
<field name='playDs0type='SFTimeaccessType='outputOnly'/>
<field name='playE0type='SFTimeaccessType='outputOnly'/>
<field name='playF0type='SFTimeaccessType='outputOnly'/>
<field name='playFs0type='SFTimeaccessType='outputOnly'/>
<field name='playG0type='SFTimeaccessType='outputOnly'/>
<field name='playGs0type='SFTimeaccessType='outputOnly'/>
<field name='playA1type='SFTimeaccessType='outputOnly'/>
<field name='playAs1type='SFTimeaccessType='outputOnly'/>
<field name='playB1type='SFTimeaccessType='outputOnly'/>
<field name='playC1type='SFTimeaccessType='outputOnly'/>
<field name='playCs1type='SFTimeaccessType='outputOnly'/>
<field name='playD1type='SFTimeaccessType='outputOnly'/>
<field name='playDs1type='SFTimeaccessType='outputOnly'/>
<field name='playE1type='SFTimeaccessType='outputOnly'/>
<field name='playF1type='SFTimeaccessType='outputOnly'/>
<field name='playFs1type='SFTimeaccessType='outputOnly'/>
<field name='playG1type='SFTimeaccessType='outputOnly'/>
<field name='playGs1type='SFTimeaccessType='outputOnly'/>
<field name='playA2type='SFTimeaccessType='outputOnly'/>
<field name='playAs2type='SFTimeaccessType='outputOnly'/>
<field name='playB2type='SFTimeaccessType='outputOnly'/>
<field name='playC2type='SFTimeaccessType='outputOnly'/>
<field name='playCs2type='SFTimeaccessType='outputOnly'/>
<field name='playD2type='SFTimeaccessType='outputOnly'/>
<field name='playDs2type='SFTimeaccessType='outputOnly'/>
<field name='playE2type='SFTimeaccessType='outputOnly'/>
<field name='playF2type='SFTimeaccessType='outputOnly'/>
<field name='playFs2type='SFTimeaccessType='outputOnly'/>
<field name='playG2type='SFTimeaccessType='outputOnly'/>
<field name='playGs2type='SFTimeaccessType='outputOnly'/>
<field name='playA3type='SFTimeaccessType='outputOnly'/>
<field name='playAs3type='SFTimeaccessType='outputOnly'/>
<field name='playB3type='SFTimeaccessType='outputOnly'/>
<field name='playC3type='SFTimeaccessType='outputOnly'/>
<field name='playCs3type='SFTimeaccessType='outputOnly'/>
<field name='playD3type='SFTimeaccessType='outputOnly'/>
<field name='playDs3type='SFTimeaccessType='outputOnly'/>
<field name='playE3type='SFTimeaccessType='outputOnly'/>
<field name='playF3type='SFTimeaccessType='outputOnly'/>
<field name='playFs3type='SFTimeaccessType='outputOnly'/>
<field name='playG3type='SFTimeaccessType='outputOnly'/>
<field name='playGs3type='SFTimeaccessType='outputOnly'/>
<field name='playA4type='SFTimeaccessType='outputOnly'/>
<field name='playAs4type='SFTimeaccessType='outputOnly'/>
<field name='playB4type='SFTimeaccessType='outputOnly'/>
<field name='playC4type='SFTimeaccessType='outputOnly'/>
<field name='playCs4type='SFTimeaccessType='outputOnly'/>
<field name='playD4type='SFTimeaccessType='outputOnly'/>
<field name='playDs4type='SFTimeaccessType='outputOnly'/>
<field name='playE4type='SFTimeaccessType='outputOnly'/>
<field name='playF4type='SFTimeaccessType='outputOnly'/>
<field name='playFs4type='SFTimeaccessType='outputOnly'/>
<field name='playG4type='SFTimeaccessType='outputOnly'/>
<field name='playGs4type='SFTimeaccessType='outputOnly'/>
<field name='playA5type='SFTimeaccessType='outputOnly'/>
<field name='playAs5type='SFTimeaccessType='outputOnly'/>
<field name='playB5type='SFTimeaccessType='outputOnly'/>
<field name='playC5type='SFTimeaccessType='outputOnly'/>
<field name='playCs5type='SFTimeaccessType='outputOnly'/>
<field name='playD5type='SFTimeaccessType='outputOnly'/>
<field name='playDs5type='SFTimeaccessType='outputOnly'/>
<field name='playE5type='SFTimeaccessType='outputOnly'/>
<field name='playF5type='SFTimeaccessType='outputOnly'/>
<field name='playFs5type='SFTimeaccessType='outputOnly'/>
<field name='playG5type='SFTimeaccessType='outputOnly'/>
<field name='playGs5type='SFTimeaccessType='outputOnly'/>
<field name='playA6type='SFTimeaccessType='outputOnly'/>
<field name='playAs6type='SFTimeaccessType='outputOnly'/>
<field name='playB6type='SFTimeaccessType='outputOnly'/>
<field name='playC6type='SFTimeaccessType='outputOnly'/>
<field name='playCs6type='SFTimeaccessType='outputOnly'/>
<field name='playD6type='SFTimeaccessType='outputOnly'/>
<field name='playDs6type='SFTimeaccessType='outputOnly'/>
<field name='playE6type='SFTimeaccessType='outputOnly'/>
<field name='playF6type='SFTimeaccessType='outputOnly'/>
<field name='playFs6type='SFTimeaccessType='outputOnly'/>
<field name='playG6type='SFTimeaccessType='outputOnly'/>
<field name='playGs6type='SFTimeaccessType='outputOnly'/>
<field name='playA7type='SFTimeaccessType='outputOnly'/>
<field name='playAs7type='SFTimeaccessType='outputOnly'/>
<field name='playB7type='SFTimeaccessType='outputOnly'/>
<field name='playC7type='SFTimeaccessType='outputOnly'/>
<field name='playCs7type='SFTimeaccessType='outputOnly'/>
<field name='playD7type='SFTimeaccessType='outputOnly'/>
<field name='playDs7type='SFTimeaccessType='outputOnly'/>
<field name='playE7type='SFTimeaccessType='outputOnly'/>
<field name='playF7type='SFTimeaccessType='outputOnly'/>
<field name='playFs7type='SFTimeaccessType='outputOnly'/>
<field name='playG7type='SFTimeaccessType='outputOnly'/>
<field name='playGs7type='SFTimeaccessType='outputOnly'/>
<field name='playA8type='SFTimeaccessType='outputOnly'/>
<field name='playAs8type='SFTimeaccessType='outputOnly'/>
<field name='playB8type='SFTimeaccessType='outputOnly'/>
<field name='playC8type='SFTimeaccessType='outputOnly'/>
<![CDATA[
        
ecmascript:

function playScriptedNotes(time, eventTime){

    playC4=eventTime;
  
    playD4=eventTime+1.1;

    playE4=eventTime+2.2;

    playF4=eventTime+3.3;

    playG4=eventTime+4.4;

    playA5=eventTime+5.5;   
}
function hideUnscriptedKeyWarnings ()
{
	playA0=0;
	playAs0=0;
	playB0=0;
	playC0=0;
	playCs0=0;
	playD0=0;
	playDs0=0;
	playE0=0;
	playF0=0;
	playFs0=0;
	playG0=0;
	playGs0=0;
	playA1=0;
	playAs1=0;
	playB1=0;
	playC1=0;
	playCs1=0;
	playD1=0;
	playDs1=0;
	playE1=0;
	playF1=0;
	playFs1=0;
	playG1=0;
	playGs1=0;
	playA2=0;
	playAs2=0;
	playB2=0;
	playC2=0;
	playCs2=0;
	playD2=0;
	playDs2=0;
	playE2=0;
	playF2=0;
	playFs2=0;
	playG2=0;
	playGs2=0;
	playA3=0;
	playAs3=0;
	playB3=0;
	playC3=0;
	playCs3=0;
	playD3=0;
	playDs3=0;
	playE3=0;
	playF3=0;
	playFs3=0;
	playG3=0;
	playGs3=0;
	playA4=0;
	playAs4=0;
	playB4=0;
	playC4=0;
	playCs4=0;
	playD4=0;
	playDs4=0;
	playE4=0;
	playF4=0;
	playFs4=0;
	playG4=0;
	playGs4=0;
	playA5=0;
	playAs5=0;
	playB5=0;
	playC5=0;
	playCs5=0;
	playD5=0;
	playDs5=0;
	playE5=0;
	playF5=0;
	playFs5=0;
	playG5=0;
	playGs5=0;
	playA6=0;
	playAs6=0;
	playB6=0;
	playC6=0;
	playCs6=0;
	playD6=0;
	playDs6=0;
	playE6=0;
	playF6=0;
	playFs6=0;
	playG6=0;
	playGs6=0;
	playA7=0;
	playAs7=0;
	playB7=0;
	playC7=0;
	playCs7=0;
	playD7=0;
	playDs7=0;
	playE7=0;
	playF7=0;
	playFs7=0;
	playG7=0;
	playGs7=0;
	playA8=0;
	playAs8=0;
	playB8=0;
	playC8=0;
}

      
]]>
</Script>
</Group>
< ROUTE  fromNode=' StartPlaying' fromField='touchTime' toNode=' PlayerPianoScript' toField='playScriptedNotes'/>
< ROUTE  fromNode=' A0' fromField='touchTime' toNode=' PitchA1' toField='set_startTime'/>
< ROUTE  fromNode=' As0' fromField='touchTime' toNode=' PitchAs1' toField='set_startTime'/>
< ROUTE  fromNode=' B0' fromField='touchTime' toNode=' PitchB1' toField='set_startTime'/>
< ROUTE  fromNode=' C0' fromField='touchTime' toNode=' PitchC1' toField='set_startTime'/>
< ROUTE  fromNode=' Cs0' fromField='touchTime' toNode=' PitchCs1' toField='set_startTime'/>
< ROUTE  fromNode=' D0' fromField='touchTime' toNode=' PitchD1' toField='set_startTime'/>
< ROUTE  fromNode=' Ds0' fromField='touchTime' toNode=' PitchDs1' toField='set_startTime'/>
< ROUTE  fromNode=' E0' fromField='touchTime' toNode=' PitchE1' toField='set_startTime'/>
< ROUTE  fromNode=' F0' fromField='touchTime' toNode=' PitchF1' toField='set_startTime'/>
< ROUTE  fromNode=' Fs0' fromField='touchTime' toNode=' PitchFs1' toField='set_startTime'/>
< ROUTE  fromNode=' G0' fromField='touchTime' toNode=' PitchG1' toField='set_startTime'/>
< ROUTE  fromNode=' Gs0' fromField='touchTime' toNode=' PitchGs1' toField='set_startTime'/>
< ROUTE  fromNode=' A1' fromField='touchTime' toNode=' PitchA1' toField='set_startTime'/>
< ROUTE  fromNode=' As1' fromField='touchTime' toNode=' PitchAs1' toField='set_startTime'/>
< ROUTE  fromNode=' B1' fromField='touchTime' toNode=' PitchB1' toField='set_startTime'/>
< ROUTE  fromNode=' C1' fromField='touchTime' toNode=' PitchC1' toField='set_startTime'/>
< ROUTE  fromNode=' Cs1' fromField='touchTime' toNode=' PitchCs1' toField='set_startTime'/>
< ROUTE  fromNode=' D1' fromField='touchTime' toNode=' PitchD1' toField='set_startTime'/>
< ROUTE  fromNode=' Ds1' fromField='touchTime' toNode=' PitchDs1' toField='set_startTime'/>
< ROUTE  fromNode=' E1' fromField='touchTime' toNode=' PitchE1' toField='set_startTime'/>
< ROUTE  fromNode=' F1' fromField='touchTime' toNode=' PitchF1' toField='set_startTime'/>
< ROUTE  fromNode=' Fs1' fromField='touchTime' toNode=' PitchFs1' toField='set_startTime'/>
< ROUTE  fromNode=' G1' fromField='touchTime' toNode=' PitchG1' toField='set_startTime'/>
< ROUTE  fromNode=' Gs1' fromField='touchTime' toNode=' PitchGs1' toField='set_startTime'/>
< ROUTE  fromNode=' A2' fromField='touchTime' toNode=' PitchA2' toField='set_startTime'/>
< ROUTE  fromNode=' As2' fromField='touchTime' toNode=' PitchAs2' toField='set_startTime'/>
< ROUTE  fromNode=' B2' fromField='touchTime' toNode=' PitchB2' toField='set_startTime'/>
< ROUTE  fromNode=' C2' fromField='touchTime' toNode=' PitchC2' toField='set_startTime'/>
< ROUTE  fromNode=' Cs2' fromField='touchTime' toNode=' PitchCs2' toField='set_startTime'/>
< ROUTE  fromNode=' D2' fromField='touchTime' toNode=' PitchD2' toField='set_startTime'/>
< ROUTE  fromNode=' Ds2' fromField='touchTime' toNode=' PitchDs2' toField='set_startTime'/>
< ROUTE  fromNode=' E2' fromField='touchTime' toNode=' PitchE2' toField='set_startTime'/>
< ROUTE  fromNode=' F2' fromField='touchTime' toNode=' PitchF2' toField='set_startTime'/>
< ROUTE  fromNode=' Fs2' fromField='touchTime' toNode=' PitchFs2' toField='set_startTime'/>
< ROUTE  fromNode=' G2' fromField='touchTime' toNode=' PitchG2' toField='set_startTime'/>
< ROUTE  fromNode=' Gs2' fromField='touchTime' toNode=' PitchGs2' toField='set_startTime'/>
< ROUTE  fromNode=' A3' fromField='touchTime' toNode=' PitchA3' toField='set_startTime'/>
< ROUTE  fromNode=' As3' fromField='touchTime' toNode=' PitchAs3' toField='set_startTime'/>
< ROUTE  fromNode=' B3' fromField='touchTime' toNode=' PitchB3' toField='set_startTime'/>
< ROUTE  fromNode=' C3' fromField='touchTime' toNode=' PitchC3' toField='set_startTime'/>
< ROUTE  fromNode=' Cs3' fromField='touchTime' toNode=' PitchCs3' toField='set_startTime'/>
< ROUTE  fromNode=' D3' fromField='touchTime' toNode=' PitchD3' toField='set_startTime'/>
< ROUTE  fromNode=' Ds3' fromField='touchTime' toNode=' PitchDs3' toField='set_startTime'/>
< ROUTE  fromNode=' E3' fromField='touchTime' toNode=' PitchE3' toField='set_startTime'/>
< ROUTE  fromNode=' F3' fromField='touchTime' toNode=' PitchF3' toField='set_startTime'/>
< ROUTE  fromNode=' Fs3' fromField='touchTime' toNode=' PitchFs3' toField='set_startTime'/>
< ROUTE  fromNode=' G3' fromField='touchTime' toNode=' PitchG3' toField='set_startTime'/>
< ROUTE  fromNode=' Gs3' fromField='touchTime' toNode=' PitchGs3' toField='set_startTime'/>
< ROUTE  fromNode=' A4' fromField='touchTime' toNode=' PitchA4' toField='set_startTime'/>
< ROUTE  fromNode=' As4' fromField='touchTime' toNode=' PitchAs4' toField='set_startTime'/>
< ROUTE  fromNode=' B4' fromField='touchTime' toNode=' PitchB4' toField='set_startTime'/>
< ROUTE  fromNode=' C4' fromField='touchTime' toNode=' PitchC4' toField='set_startTime'/>
< ROUTE  fromNode=' Cs4' fromField='touchTime' toNode=' PitchCs4' toField='set_startTime'/>
< ROUTE  fromNode=' D4' fromField='touchTime' toNode=' PitchD4' toField='set_startTime'/>
< ROUTE  fromNode=' Ds4' fromField='touchTime' toNode=' PitchDs4' toField='set_startTime'/>
< ROUTE  fromNode=' E4' fromField='touchTime' toNode=' PitchE4' toField='set_startTime'/>
< ROUTE  fromNode=' F4' fromField='touchTime' toNode=' PitchF4' toField='set_startTime'/>
< ROUTE  fromNode=' Fs4' fromField='touchTime' toNode=' PitchFs4' toField='set_startTime'/>
< ROUTE  fromNode=' G4' fromField='touchTime' toNode=' PitchG4' toField='set_startTime'/>
< ROUTE  fromNode=' Gs4' fromField='touchTime' toNode=' PitchGs4' toField='set_startTime'/>
< ROUTE  fromNode=' A5' fromField='touchTime' toNode=' PitchA5' toField='set_startTime'/>
< ROUTE  fromNode=' As5' fromField='touchTime' toNode=' PitchAs5' toField='set_startTime'/>
< ROUTE  fromNode=' B5' fromField='touchTime' toNode=' PitchB5' toField='set_startTime'/>
< ROUTE  fromNode=' C5' fromField='touchTime' toNode=' PitchC5' toField='set_startTime'/>
< ROUTE  fromNode=' Cs5' fromField='touchTime' toNode=' PitchCs5' toField='set_startTime'/>
< ROUTE  fromNode=' D5' fromField='touchTime' toNode=' PitchD5' toField='set_startTime'/>
< ROUTE  fromNode=' Ds5' fromField='touchTime' toNode=' PitchDs5' toField='set_startTime'/>
< ROUTE  fromNode=' E5' fromField='touchTime' toNode=' PitchE5' toField='set_startTime'/>
< ROUTE  fromNode=' F5' fromField='touchTime' toNode=' PitchF5' toField='set_startTime'/>
< ROUTE  fromNode=' Fs5' fromField='touchTime' toNode=' PitchFs5' toField='set_startTime'/>
< ROUTE  fromNode=' G5' fromField='touchTime' toNode=' PitchG5' toField='set_startTime'/>
< ROUTE  fromNode=' Gs5' fromField='touchTime' toNode=' PitchGs5' toField='set_startTime'/>
< ROUTE  fromNode=' A6' fromField='touchTime' toNode=' PitchA6' toField='set_startTime'/>
< ROUTE  fromNode=' As6' fromField='touchTime' toNode=' PitchAs6' toField='set_startTime'/>
< ROUTE  fromNode=' B6' fromField='touchTime' toNode=' PitchB6' toField='set_startTime'/>
< ROUTE  fromNode=' C6' fromField='touchTime' toNode=' PitchC6' toField='set_startTime'/>
< ROUTE  fromNode=' Cs6' fromField='touchTime' toNode=' PitchCs6' toField='set_startTime'/>
< ROUTE  fromNode=' D6' fromField='touchTime' toNode=' PitchD6' toField='set_startTime'/>
< ROUTE  fromNode=' Ds6' fromField='touchTime' toNode=' PitchDs6' toField='set_startTime'/>
< ROUTE  fromNode=' E6' fromField='touchTime' toNode=' PitchE6' toField='set_startTime'/>
< ROUTE  fromNode=' F6' fromField='touchTime' toNode=' PitchF6' toField='set_startTime'/>
< ROUTE  fromNode=' Fs6' fromField='touchTime' toNode=' PitchFs6' toField='set_startTime'/>
< ROUTE  fromNode=' G6' fromField='touchTime' toNode=' PitchG6' toField='set_startTime'/>
< ROUTE  fromNode=' Gs6' fromField='touchTime' toNode=' PitchGs6' toField='set_startTime'/>
< ROUTE  fromNode=' A7' fromField='touchTime' toNode=' PitchA7' toField='set_startTime'/>
< ROUTE  fromNode=' As7' fromField='touchTime' toNode=' PitchAs7' toField='set_startTime'/>
< ROUTE  fromNode=' B7' fromField='touchTime' toNode=' PitchB7' toField='set_startTime'/>
< ROUTE  fromNode=' C7' fromField='touchTime' toNode=' PitchC7' toField='set_startTime'/>
< ROUTE  fromNode=' Cs7' fromField='touchTime' toNode=' PitchCs7' toField='set_startTime'/>
< ROUTE  fromNode=' D7' fromField='touchTime' toNode=' PitchD7' toField='set_startTime'/>
< ROUTE  fromNode=' Ds7' fromField='touchTime' toNode=' PitchDs7' toField='set_startTime'/>
< ROUTE  fromNode=' E7' fromField='touchTime' toNode=' PitchE7' toField='set_startTime'/>
< ROUTE  fromNode=' F7' fromField='touchTime' toNode=' PitchF7' toField='set_startTime'/>
< ROUTE  fromNode=' Fs7' fromField='touchTime' toNode=' PitchFs7' toField='set_startTime'/>
< ROUTE  fromNode=' G7' fromField='touchTime' toNode=' PitchG7' toField='set_startTime'/>
< ROUTE  fromNode=' Gs7' fromField='touchTime' toNode=' PitchGs7' toField='set_startTime'/>
< ROUTE  fromNode=' A8' fromField='touchTime' toNode=' PitchA8' toField='set_startTime'/>
< ROUTE  fromNode=' As8' fromField='touchTime' toNode=' PitchAs8' toField='set_startTime'/>
< ROUTE  fromNode=' B8' fromField='touchTime' toNode=' PitchB8' toField='set_startTime'/>
< ROUTE  fromNode=' C8' fromField='touchTime' toNode=' PitchC8' toField='set_startTime'/>
< ROUTE  fromNode=' A0' fromField='touchTime' toNode=' ClockA0' toField='set_startTime'/>
< ROUTE  fromNode=' ClockA0' fromField='fraction_changed' toNode=' A0Mover' toField='set_fraction'/>
< ROUTE  fromNode=' A0Mover' fromField='value_changed' toNode=' A0TRANS' toField='set_translation'/>
< ROUTE  fromNode=' As0' fromField='touchTime' toNode=' ClockAs0' toField='set_startTime'/>
< ROUTE  fromNode=' ClockAs0' fromField='fraction_changed' toNode=' As0Mover' toField='set_fraction'/>
< ROUTE  fromNode=' As0Mover' fromField='value_changed' toNode=' As0TRANS' toField='set_translation'/>
< ROUTE  fromNode=' B0' fromField='touchTime' toNode=' ClockB0' toField='set_startTime'/>
< ROUTE  fromNode=' ClockB0' fromField='fraction_changed' toNode=' B0Mover' toField='set_fraction'/>
< ROUTE  fromNode=' B0Mover' fromField='value_changed' toNode=' B0TRANS' toField='set_translation'/>
< ROUTE  fromNode=' C0' fromField='touchTime' toNode=' ClockC0' toField='set_startTime'/>
< ROUTE  fromNode=' ClockC0' fromField='fraction_changed' toNode=' C0Mover' toField='set_fraction'/>
< ROUTE  fromNode=' C0Mover' fromField='value_changed' toNode=' C0TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Cs0' fromField='touchTime' toNode=' ClockCs0' toField='set_startTime'/>
< ROUTE  fromNode=' ClockCs0' fromField='fraction_changed' toNode=' Cs0Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Cs0Mover' fromField='value_changed' toNode=' Cs0TRANS' toField='set_translation'/>
< ROUTE  fromNode=' D0' fromField='touchTime' toNode=' ClockD0' toField='set_startTime'/>
< ROUTE  fromNode=' ClockD0' fromField='fraction_changed' toNode=' D0Mover' toField='set_fraction'/>
< ROUTE  fromNode=' D0Mover' fromField='value_changed' toNode=' D0TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Ds0' fromField='touchTime' toNode=' ClockDs0' toField='set_startTime'/>
< ROUTE  fromNode=' ClockDs0' fromField='fraction_changed' toNode=' Ds0Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Ds0Mover' fromField='value_changed' toNode=' Ds0TRANS' toField='set_translation'/>
< ROUTE  fromNode=' E0' fromField='touchTime' toNode=' ClockE0' toField='set_startTime'/>
< ROUTE  fromNode=' ClockE0' fromField='fraction_changed' toNode=' E0Mover' toField='set_fraction'/>
< ROUTE  fromNode=' E0Mover' fromField='value_changed' toNode=' E0TRANS' toField='set_translation'/>
< ROUTE  fromNode=' F0' fromField='touchTime' toNode=' ClockF0' toField='set_startTime'/>
< ROUTE  fromNode=' ClockF0' fromField='fraction_changed' toNode=' F0Mover' toField='set_fraction'/>
< ROUTE  fromNode=' F0Mover' fromField='value_changed' toNode=' F0TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Fs0' fromField='touchTime' toNode=' ClockFs0' toField='set_startTime'/>
< ROUTE  fromNode=' ClockFs0' fromField='fraction_changed' toNode=' Fs0Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Fs0Mover' fromField='value_changed' toNode=' Fs0TRANS' toField='set_translation'/>
< ROUTE  fromNode=' G0' fromField='touchTime' toNode=' ClockG0' toField='set_startTime'/>
< ROUTE  fromNode=' ClockG0' fromField='fraction_changed' toNode=' G0Mover' toField='set_fraction'/>
< ROUTE  fromNode=' G0Mover' fromField='value_changed' toNode=' G0TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Gs0' fromField='touchTime' toNode=' ClockGs0' toField='set_startTime'/>
< ROUTE  fromNode=' ClockGs0' fromField='fraction_changed' toNode=' Gs0Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Gs0Mover' fromField='value_changed' toNode=' Gs0TRANS' toField='set_translation'/>
< ROUTE  fromNode=' A1' fromField='touchTime' toNode=' ClockA1' toField='set_startTime'/>
< ROUTE  fromNode=' ClockA1' fromField='fraction_changed' toNode=' A1Mover' toField='set_fraction'/>
< ROUTE  fromNode=' A1Mover' fromField='value_changed' toNode=' A1TRANS' toField='set_translation'/>
< ROUTE  fromNode=' As1' fromField='touchTime' toNode=' ClockAs1' toField='set_startTime'/>
< ROUTE  fromNode=' ClockAs1' fromField='fraction_changed' toNode=' As1Mover' toField='set_fraction'/>
< ROUTE  fromNode=' As1Mover' fromField='value_changed' toNode=' As1TRANS' toField='set_translation'/>
< ROUTE  fromNode=' B1' fromField='touchTime' toNode=' ClockB1' toField='set_startTime'/>
< ROUTE  fromNode=' ClockB1' fromField='fraction_changed' toNode=' B1Mover' toField='set_fraction'/>
< ROUTE  fromNode=' B1Mover' fromField='value_changed' toNode=' B1TRANS' toField='set_translation'/>
< ROUTE  fromNode=' C1' fromField='touchTime' toNode=' ClockC1' toField='set_startTime'/>
< ROUTE  fromNode=' ClockC1' fromField='fraction_changed' toNode=' C1Mover' toField='set_fraction'/>
< ROUTE  fromNode=' C1Mover' fromField='value_changed' toNode=' C1TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Cs1' fromField='touchTime' toNode=' ClockCs1' toField='set_startTime'/>
< ROUTE  fromNode=' ClockCs1' fromField='fraction_changed' toNode=' Cs1Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Cs1Mover' fromField='value_changed' toNode=' Cs1TRANS' toField='set_translation'/>
< ROUTE  fromNode=' D1' fromField='touchTime' toNode=' ClockD1' toField='set_startTime'/>
< ROUTE  fromNode=' ClockD1' fromField='fraction_changed' toNode=' D1Mover' toField='set_fraction'/>
< ROUTE  fromNode=' D1Mover' fromField='value_changed' toNode=' D1TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Ds1' fromField='touchTime' toNode=' ClockDs1' toField='set_startTime'/>
< ROUTE  fromNode=' ClockDs1' fromField='fraction_changed' toNode=' Ds1Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Ds1Mover' fromField='value_changed' toNode=' Ds1TRANS' toField='set_translation'/>
< ROUTE  fromNode=' E1' fromField='touchTime' toNode=' ClockE1' toField='set_startTime'/>
< ROUTE  fromNode=' ClockE1' fromField='fraction_changed' toNode=' E1Mover' toField='set_fraction'/>
< ROUTE  fromNode=' E1Mover' fromField='value_changed' toNode=' E1TRANS' toField='set_translation'/>
< ROUTE  fromNode=' F1' fromField='touchTime' toNode=' ClockF1' toField='set_startTime'/>
< ROUTE  fromNode=' ClockF1' fromField='fraction_changed' toNode=' F1Mover' toField='set_fraction'/>
< ROUTE  fromNode=' F1Mover' fromField='value_changed' toNode=' F1TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Fs1' fromField='touchTime' toNode=' ClockFs1' toField='set_startTime'/>
< ROUTE  fromNode=' ClockFs1' fromField='fraction_changed' toNode=' Fs1Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Fs1Mover' fromField='value_changed' toNode=' Fs1TRANS' toField='set_translation'/>
< ROUTE  fromNode=' G1' fromField='touchTime' toNode=' ClockG1' toField='set_startTime'/>
< ROUTE  fromNode=' ClockG1' fromField='fraction_changed' toNode=' G1Mover' toField='set_fraction'/>
< ROUTE  fromNode=' G1Mover' fromField='value_changed' toNode=' G1TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Gs1' fromField='touchTime' toNode=' ClockGs1' toField='set_startTime'/>
< ROUTE  fromNode=' ClockGs1' fromField='fraction_changed' toNode=' Gs1Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Gs1Mover' fromField='value_changed' toNode=' Gs1TRANS' toField='set_translation'/>
< ROUTE  fromNode=' A2' fromField='touchTime' toNode=' ClockA2' toField='set_startTime'/>
< ROUTE  fromNode=' ClockA2' fromField='fraction_changed' toNode=' A2Mover' toField='set_fraction'/>
< ROUTE  fromNode=' A2Mover' fromField='value_changed' toNode=' A2TRANS' toField='set_translation'/>
< ROUTE  fromNode=' As2' fromField='touchTime' toNode=' ClockAs2' toField='set_startTime'/>
< ROUTE  fromNode=' ClockAs2' fromField='fraction_changed' toNode=' As2Mover' toField='set_fraction'/>
< ROUTE  fromNode=' As2Mover' fromField='value_changed' toNode=' As2TRANS' toField='set_translation'/>
< ROUTE  fromNode=' B2' fromField='touchTime' toNode=' ClockB2' toField='set_startTime'/>
< ROUTE  fromNode=' ClockB2' fromField='fraction_changed' toNode=' B2Mover' toField='set_fraction'/>
< ROUTE  fromNode=' B2Mover' fromField='value_changed' toNode=' B2TRANS' toField='set_translation'/>
< ROUTE  fromNode=' C2' fromField='touchTime' toNode=' ClockC2' toField='set_startTime'/>
< ROUTE  fromNode=' ClockC2' fromField='fraction_changed' toNode=' C2Mover' toField='set_fraction'/>
< ROUTE  fromNode=' C2Mover' fromField='value_changed' toNode=' C2TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Cs2' fromField='touchTime' toNode=' ClockCs2' toField='set_startTime'/>
< ROUTE  fromNode=' ClockCs2' fromField='fraction_changed' toNode=' Cs2Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Cs2Mover' fromField='value_changed' toNode=' Cs2TRANS' toField='set_translation'/>
< ROUTE  fromNode=' D2' fromField='touchTime' toNode=' ClockD2' toField='set_startTime'/>
< ROUTE  fromNode=' ClockD2' fromField='fraction_changed' toNode=' D2Mover' toField='set_fraction'/>
< ROUTE  fromNode=' D2Mover' fromField='value_changed' toNode=' D2TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Ds2' fromField='touchTime' toNode=' ClockDs2' toField='set_startTime'/>
< ROUTE  fromNode=' ClockDs2' fromField='fraction_changed' toNode=' Ds2Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Ds2Mover' fromField='value_changed' toNode=' Ds2TRANS' toField='set_translation'/>
< ROUTE  fromNode=' E2' fromField='touchTime' toNode=' ClockE2' toField='set_startTime'/>
< ROUTE  fromNode=' ClockE2' fromField='fraction_changed' toNode=' E2Mover' toField='set_fraction'/>
< ROUTE  fromNode=' E2Mover' fromField='value_changed' toNode=' E2TRANS' toField='set_translation'/>
< ROUTE  fromNode=' F2' fromField='touchTime' toNode=' ClockF2' toField='set_startTime'/>
< ROUTE  fromNode=' ClockF2' fromField='fraction_changed' toNode=' F2Mover' toField='set_fraction'/>
< ROUTE  fromNode=' F2Mover' fromField='value_changed' toNode=' F2TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Fs2' fromField='touchTime' toNode=' ClockFs2' toField='set_startTime'/>
< ROUTE  fromNode=' ClockFs2' fromField='fraction_changed' toNode=' Fs2Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Fs2Mover' fromField='value_changed' toNode=' Fs2TRANS' toField='set_translation'/>
< ROUTE  fromNode=' G2' fromField='touchTime' toNode=' ClockG2' toField='set_startTime'/>
< ROUTE  fromNode=' ClockG2' fromField='fraction_changed' toNode=' G2Mover' toField='set_fraction'/>
< ROUTE  fromNode=' G2Mover' fromField='value_changed' toNode=' G2TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Gs2' fromField='touchTime' toNode=' ClockGs2' toField='set_startTime'/>
< ROUTE  fromNode=' ClockGs2' fromField='fraction_changed' toNode=' Gs2Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Gs2Mover' fromField='value_changed' toNode=' Gs2TRANS' toField='set_translation'/>
< ROUTE  fromNode=' A3' fromField='touchTime' toNode=' ClockA3' toField='set_startTime'/>
< ROUTE  fromNode=' ClockA3' fromField='fraction_changed' toNode=' A3Mover' toField='set_fraction'/>
< ROUTE  fromNode=' A3Mover' fromField='value_changed' toNode=' A3TRANS' toField='set_translation'/>
< ROUTE  fromNode=' As3' fromField='touchTime' toNode=' ClockAs3' toField='set_startTime'/>
< ROUTE  fromNode=' ClockAs3' fromField='fraction_changed' toNode=' As3Mover' toField='set_fraction'/>
< ROUTE  fromNode=' As3Mover' fromField='value_changed' toNode=' As3TRANS' toField='set_translation'/>
< ROUTE  fromNode=' B3' fromField='touchTime' toNode=' ClockB3' toField='set_startTime'/>
< ROUTE  fromNode=' ClockB3' fromField='fraction_changed' toNode=' B3Mover' toField='set_fraction'/>
< ROUTE  fromNode=' B3Mover' fromField='value_changed' toNode=' B3TRANS' toField='set_translation'/>
< ROUTE  fromNode=' C3' fromField='touchTime' toNode=' ClockC3' toField='set_startTime'/>
< ROUTE  fromNode=' ClockC3' fromField='fraction_changed' toNode=' C3Mover' toField='set_fraction'/>
< ROUTE  fromNode=' C3Mover' fromField='value_changed' toNode=' C3TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Cs3' fromField='touchTime' toNode=' ClockCs3' toField='set_startTime'/>
< ROUTE  fromNode=' ClockCs3' fromField='fraction_changed' toNode=' Cs3Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Cs3Mover' fromField='value_changed' toNode=' Cs3TRANS' toField='set_translation'/>
< ROUTE  fromNode=' D3' fromField='touchTime' toNode=' ClockD3' toField='set_startTime'/>
< ROUTE  fromNode=' ClockD3' fromField='fraction_changed' toNode=' D3Mover' toField='set_fraction'/>
< ROUTE  fromNode=' D3Mover' fromField='value_changed' toNode=' D3TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Ds3' fromField='touchTime' toNode=' ClockDs3' toField='set_startTime'/>
< ROUTE  fromNode=' ClockDs3' fromField='fraction_changed' toNode=' Ds3Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Ds3Mover' fromField='value_changed' toNode=' Ds3TRANS' toField='set_translation'/>
< ROUTE  fromNode=' E3' fromField='touchTime' toNode=' ClockE3' toField='set_startTime'/>
< ROUTE  fromNode=' ClockE3' fromField='fraction_changed' toNode=' E3Mover' toField='set_fraction'/>
< ROUTE  fromNode=' E3Mover' fromField='value_changed' toNode=' E3TRANS' toField='set_translation'/>
< ROUTE  fromNode=' F3' fromField='touchTime' toNode=' ClockF3' toField='set_startTime'/>
< ROUTE  fromNode=' ClockF3' fromField='fraction_changed' toNode=' F3Mover' toField='set_fraction'/>
< ROUTE  fromNode=' F3Mover' fromField='value_changed' toNode=' F3TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Fs3' fromField='touchTime' toNode=' ClockFs3' toField='set_startTime'/>
< ROUTE  fromNode=' ClockFs3' fromField='fraction_changed' toNode=' Fs3Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Fs3Mover' fromField='value_changed' toNode=' Fs3TRANS' toField='set_translation'/>
< ROUTE  fromNode=' G3' fromField='touchTime' toNode=' ClockG3' toField='set_startTime'/>
< ROUTE  fromNode=' ClockG3' fromField='fraction_changed' toNode=' G3Mover' toField='set_fraction'/>
< ROUTE  fromNode=' G3Mover' fromField='value_changed' toNode=' G3TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Gs3' fromField='touchTime' toNode=' ClockGs3' toField='set_startTime'/>
< ROUTE  fromNode=' ClockGs3' fromField='fraction_changed' toNode=' Gs3Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Gs3Mover' fromField='value_changed' toNode=' Gs3TRANS' toField='set_translation'/>
< ROUTE  fromNode=' A4' fromField='touchTime' toNode=' ClockA4' toField='set_startTime'/>
< ROUTE  fromNode=' ClockA4' fromField='fraction_changed' toNode=' A4Mover' toField='set_fraction'/>
< ROUTE  fromNode=' A4Mover' fromField='value_changed' toNode=' A4TRANS' toField='set_translation'/>
< ROUTE  fromNode=' As4' fromField='touchTime' toNode=' ClockAs4' toField='set_startTime'/>
< ROUTE  fromNode=' ClockAs4' fromField='fraction_changed' toNode=' As4Mover' toField='set_fraction'/>
< ROUTE  fromNode=' As4Mover' fromField='value_changed' toNode=' As4TRANS' toField='set_translation'/>
< ROUTE  fromNode=' B4' fromField='touchTime' toNode=' ClockB4' toField='set_startTime'/>
< ROUTE  fromNode=' ClockB4' fromField='fraction_changed' toNode=' B4Mover' toField='set_fraction'/>
< ROUTE  fromNode=' B4Mover' fromField='value_changed' toNode=' B4TRANS' toField='set_translation'/>
< ROUTE  fromNode=' C4' fromField='touchTime' toNode=' ClockC4' toField='set_startTime'/>
< ROUTE  fromNode=' ClockC4' fromField='fraction_changed' toNode=' C4Mover' toField='set_fraction'/>
< ROUTE  fromNode=' C4Mover' fromField='value_changed' toNode=' C4TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Cs4' fromField='touchTime' toNode=' ClockCs4' toField='set_startTime'/>
< ROUTE  fromNode=' ClockCs4' fromField='fraction_changed' toNode=' Cs4Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Cs4Mover' fromField='value_changed' toNode=' Cs4TRANS' toField='set_translation'/>
< ROUTE  fromNode=' D4' fromField='touchTime' toNode=' ClockD4' toField='set_startTime'/>
< ROUTE  fromNode=' ClockD4' fromField='fraction_changed' toNode=' D4Mover' toField='set_fraction'/>
< ROUTE  fromNode=' D4Mover' fromField='value_changed' toNode=' D4TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Ds4' fromField='touchTime' toNode=' ClockDs4' toField='set_startTime'/>
< ROUTE  fromNode=' ClockDs4' fromField='fraction_changed' toNode=' Ds4Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Ds4Mover' fromField='value_changed' toNode=' Ds4TRANS' toField='set_translation'/>
< ROUTE  fromNode=' E4' fromField='touchTime' toNode=' ClockE4' toField='set_startTime'/>
< ROUTE  fromNode=' ClockE4' fromField='fraction_changed' toNode=' E4Mover' toField='set_fraction'/>
< ROUTE  fromNode=' E4Mover' fromField='value_changed' toNode=' E4TRANS' toField='set_translation'/>
< ROUTE  fromNode=' F4' fromField='touchTime' toNode=' ClockF4' toField='set_startTime'/>
< ROUTE  fromNode=' ClockF4' fromField='fraction_changed' toNode=' F4Mover' toField='set_fraction'/>
< ROUTE  fromNode=' F4Mover' fromField='value_changed' toNode=' F4TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Fs4' fromField='touchTime' toNode=' ClockFs4' toField='set_startTime'/>
< ROUTE  fromNode=' ClockFs4' fromField='fraction_changed' toNode=' Fs4Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Fs4Mover' fromField='value_changed' toNode=' Fs4TRANS' toField='set_translation'/>
< ROUTE  fromNode=' G4' fromField='touchTime' toNode=' ClockG4' toField='set_startTime'/>
< ROUTE  fromNode=' ClockG4' fromField='fraction_changed' toNode=' G4Mover' toField='set_fraction'/>
< ROUTE  fromNode=' G4Mover' fromField='value_changed' toNode=' G4TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Gs4' fromField='touchTime' toNode=' ClockGs4' toField='set_startTime'/>
< ROUTE  fromNode=' ClockGs4' fromField='fraction_changed' toNode=' Gs4Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Gs4Mover' fromField='value_changed' toNode=' Gs4TRANS' toField='set_translation'/>
< ROUTE  fromNode=' A5' fromField='touchTime' toNode=' ClockA5' toField='set_startTime'/>
< ROUTE  fromNode=' ClockA5' fromField='fraction_changed' toNode=' A5Mover' toField='set_fraction'/>
< ROUTE  fromNode=' A5Mover' fromField='value_changed' toNode=' A5TRANS' toField='set_translation'/>
< ROUTE  fromNode=' As5' fromField='touchTime' toNode=' ClockAs5' toField='set_startTime'/>
< ROUTE  fromNode=' ClockAs5' fromField='fraction_changed' toNode=' As5Mover' toField='set_fraction'/>
< ROUTE  fromNode=' As5Mover' fromField='value_changed' toNode=' As5TRANS' toField='set_translation'/>
< ROUTE  fromNode=' B5' fromField='touchTime' toNode=' ClockB5' toField='set_startTime'/>
< ROUTE  fromNode=' ClockB5' fromField='fraction_changed' toNode=' B5Mover' toField='set_fraction'/>
< ROUTE  fromNode=' B5Mover' fromField='value_changed' toNode=' B5TRANS' toField='set_translation'/>
< ROUTE  fromNode=' C5' fromField='touchTime' toNode=' ClockC5' toField='set_startTime'/>
< ROUTE  fromNode=' ClockC5' fromField='fraction_changed' toNode=' C5Mover' toField='set_fraction'/>
< ROUTE  fromNode=' C5Mover' fromField='value_changed' toNode=' C5TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Cs5' fromField='touchTime' toNode=' ClockCs5' toField='set_startTime'/>
< ROUTE  fromNode=' ClockCs5' fromField='fraction_changed' toNode=' Cs5Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Cs5Mover' fromField='value_changed' toNode=' Cs5TRANS' toField='set_translation'/>
< ROUTE  fromNode=' D5' fromField='touchTime' toNode=' ClockD5' toField='set_startTime'/>
< ROUTE  fromNode=' ClockD5' fromField='fraction_changed' toNode=' D5Mover' toField='set_fraction'/>
< ROUTE  fromNode=' D5Mover' fromField='value_changed' toNode=' D5TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Ds5' fromField='touchTime' toNode=' ClockDs5' toField='set_startTime'/>
< ROUTE  fromNode=' ClockDs5' fromField='fraction_changed' toNode=' Ds5Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Ds5Mover' fromField='value_changed' toNode=' Ds5TRANS' toField='set_translation'/>
< ROUTE  fromNode=' E5' fromField='touchTime' toNode=' ClockE5' toField='set_startTime'/>
< ROUTE  fromNode=' ClockE5' fromField='fraction_changed' toNode=' E5Mover' toField='set_fraction'/>
< ROUTE  fromNode=' E5Mover' fromField='value_changed' toNode=' E5TRANS' toField='set_translation'/>
< ROUTE  fromNode=' F5' fromField='touchTime' toNode=' ClockF5' toField='set_startTime'/>
< ROUTE  fromNode=' ClockF5' fromField='fraction_changed' toNode=' F5Mover' toField='set_fraction'/>
< ROUTE  fromNode=' F5Mover' fromField='value_changed' toNode=' F5TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Fs5' fromField='touchTime' toNode=' ClockFs5' toField='set_startTime'/>
< ROUTE  fromNode=' ClockFs5' fromField='fraction_changed' toNode=' Fs5Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Fs5Mover' fromField='value_changed' toNode=' Fs5TRANS' toField='set_translation'/>
< ROUTE  fromNode=' G5' fromField='touchTime' toNode=' ClockG5' toField='set_startTime'/>
< ROUTE  fromNode=' ClockG5' fromField='fraction_changed' toNode=' G5Mover' toField='set_fraction'/>
< ROUTE  fromNode=' G5Mover' fromField='value_changed' toNode=' G5TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Gs5' fromField='touchTime' toNode=' ClockGs5' toField='set_startTime'/>
< ROUTE  fromNode=' ClockGs5' fromField='fraction_changed' toNode=' Gs5Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Gs5Mover' fromField='value_changed' toNode=' Gs5TRANS' toField='set_translation'/>
< ROUTE  fromNode=' A6' fromField='touchTime' toNode=' ClockA6' toField='set_startTime'/>
< ROUTE  fromNode=' ClockA6' fromField='fraction_changed' toNode=' A6Mover' toField='set_fraction'/>
< ROUTE  fromNode=' A6Mover' fromField='value_changed' toNode=' A6TRANS' toField='set_translation'/>
< ROUTE  fromNode=' As6' fromField='touchTime' toNode=' ClockAs6' toField='set_startTime'/>
< ROUTE  fromNode=' ClockAs6' fromField='fraction_changed' toNode=' As6Mover' toField='set_fraction'/>
< ROUTE  fromNode=' As6Mover' fromField='value_changed' toNode=' As6TRANS' toField='set_translation'/>
< ROUTE  fromNode=' B6' fromField='touchTime' toNode=' ClockB6' toField='set_startTime'/>
< ROUTE  fromNode=' ClockB6' fromField='fraction_changed' toNode=' B6Mover' toField='set_fraction'/>
< ROUTE  fromNode=' B6Mover' fromField='value_changed' toNode=' B6TRANS' toField='set_translation'/>
< ROUTE  fromNode=' C6' fromField='touchTime' toNode=' ClockC6' toField='set_startTime'/>
< ROUTE  fromNode=' ClockC6' fromField='fraction_changed' toNode=' C6Mover' toField='set_fraction'/>
< ROUTE  fromNode=' C6Mover' fromField='value_changed' toNode=' C6TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Cs6' fromField='touchTime' toNode=' ClockCs6' toField='set_startTime'/>
< ROUTE  fromNode=' ClockCs6' fromField='fraction_changed' toNode=' Cs6Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Cs6Mover' fromField='value_changed' toNode=' Cs6TRANS' toField='set_translation'/>
< ROUTE  fromNode=' D6' fromField='touchTime' toNode=' ClockD6' toField='set_startTime'/>
< ROUTE  fromNode=' ClockD6' fromField='fraction_changed' toNode=' D6Mover' toField='set_fraction'/>
< ROUTE  fromNode=' D6Mover' fromField='value_changed' toNode=' D6TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Ds6' fromField='touchTime' toNode=' ClockDs6' toField='set_startTime'/>
< ROUTE  fromNode=' ClockDs6' fromField='fraction_changed' toNode=' Ds6Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Ds6Mover' fromField='value_changed' toNode=' Ds6TRANS' toField='set_translation'/>
< ROUTE  fromNode=' E6' fromField='touchTime' toNode=' ClockE6' toField='set_startTime'/>
< ROUTE  fromNode=' ClockE6' fromField='fraction_changed' toNode=' E6Mover' toField='set_fraction'/>
< ROUTE  fromNode=' E6Mover' fromField='value_changed' toNode=' E6TRANS' toField='set_translation'/>
< ROUTE  fromNode=' F6' fromField='touchTime' toNode=' ClockF6' toField='set_startTime'/>
< ROUTE  fromNode=' ClockF6' fromField='fraction_changed' toNode=' F6Mover' toField='set_fraction'/>
< ROUTE  fromNode=' F6Mover' fromField='value_changed' toNode=' F6TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Fs6' fromField='touchTime' toNode=' ClockFs6' toField='set_startTime'/>
< ROUTE  fromNode=' ClockFs6' fromField='fraction_changed' toNode=' Fs6Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Fs6Mover' fromField='value_changed' toNode=' Fs6TRANS' toField='set_translation'/>
< ROUTE  fromNode=' G6' fromField='touchTime' toNode=' ClockG6' toField='set_startTime'/>
< ROUTE  fromNode=' ClockG6' fromField='fraction_changed' toNode=' G6Mover' toField='set_fraction'/>
< ROUTE  fromNode=' G6Mover' fromField='value_changed' toNode=' G6TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Gs6' fromField='touchTime' toNode=' ClockGs6' toField='set_startTime'/>
< ROUTE  fromNode=' ClockGs6' fromField='fraction_changed' toNode=' Gs6Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Gs6Mover' fromField='value_changed' toNode=' Gs6TRANS' toField='set_translation'/>
< ROUTE  fromNode=' A7' fromField='touchTime' toNode=' ClockA7' toField='set_startTime'/>
< ROUTE  fromNode=' ClockA7' fromField='fraction_changed' toNode=' A7Mover' toField='set_fraction'/>
< ROUTE  fromNode=' A7Mover' fromField='value_changed' toNode=' A7TRANS' toField='set_translation'/>
< ROUTE  fromNode=' As7' fromField='touchTime' toNode=' ClockAs7' toField='set_startTime'/>
< ROUTE  fromNode=' ClockAs7' fromField='fraction_changed' toNode=' As7Mover' toField='set_fraction'/>
< ROUTE  fromNode=' As7Mover' fromField='value_changed' toNode=' As7TRANS' toField='set_translation'/>
< ROUTE  fromNode=' B7' fromField='touchTime' toNode=' ClockB7' toField='set_startTime'/>
< ROUTE  fromNode=' ClockB7' fromField='fraction_changed' toNode=' B7Mover' toField='set_fraction'/>
< ROUTE  fromNode=' B7Mover' fromField='value_changed' toNode=' B7TRANS' toField='set_translation'/>
< ROUTE  fromNode=' C7' fromField='touchTime' toNode=' ClockC7' toField='set_startTime'/>
< ROUTE  fromNode=' ClockC7' fromField='fraction_changed' toNode=' C7Mover' toField='set_fraction'/>
< ROUTE  fromNode=' C7Mover' fromField='value_changed' toNode=' C7TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Cs7' fromField='touchTime' toNode=' ClockCs7' toField='set_startTime'/>
< ROUTE  fromNode=' ClockCs7' fromField='fraction_changed' toNode=' Cs7Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Cs7Mover' fromField='value_changed' toNode=' Cs7TRANS' toField='set_translation'/>
< ROUTE  fromNode=' D7' fromField='touchTime' toNode=' ClockD7' toField='set_startTime'/>
< ROUTE  fromNode=' ClockD7' fromField='fraction_changed' toNode=' D7Mover' toField='set_fraction'/>
< ROUTE  fromNode=' D7Mover' fromField='value_changed' toNode=' D7TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Ds7' fromField='touchTime' toNode=' ClockDs7' toField='set_startTime'/>
< ROUTE  fromNode=' ClockDs7' fromField='fraction_changed' toNode=' Ds7Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Ds7Mover' fromField='value_changed' toNode=' Ds7TRANS' toField='set_translation'/>
< ROUTE  fromNode=' E7' fromField='touchTime' toNode=' ClockE7' toField='set_startTime'/>
< ROUTE  fromNode=' ClockE7' fromField='fraction_changed' toNode=' E7Mover' toField='set_fraction'/>
< ROUTE  fromNode=' E7Mover' fromField='value_changed' toNode=' E7TRANS' toField='set_translation'/>
< ROUTE  fromNode=' F7' fromField='touchTime' toNode=' ClockF7' toField='set_startTime'/>
< ROUTE  fromNode=' ClockF7' fromField='fraction_changed' toNode=' F7Mover' toField='set_fraction'/>
< ROUTE  fromNode=' F7Mover' fromField='value_changed' toNode=' F7TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Fs7' fromField='touchTime' toNode=' ClockFs7' toField='set_startTime'/>
< ROUTE  fromNode=' ClockFs7' fromField='fraction_changed' toNode=' Fs7Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Fs7Mover' fromField='value_changed' toNode=' Fs7TRANS' toField='set_translation'/>
< ROUTE  fromNode=' G7' fromField='touchTime' toNode=' ClockG7' toField='set_startTime'/>
< ROUTE  fromNode=' ClockG7' fromField='fraction_changed' toNode=' G7Mover' toField='set_fraction'/>
< ROUTE  fromNode=' G7Mover' fromField='value_changed' toNode=' G7TRANS' toField='set_translation'/>
< ROUTE  fromNode=' Gs7' fromField='touchTime' toNode=' ClockGs7' toField='set_startTime'/>
< ROUTE  fromNode=' ClockGs7' fromField='fraction_changed' toNode=' Gs7Mover' toField='set_fraction'/>
< ROUTE  fromNode=' Gs7Mover' fromField='value_changed' toNode=' Gs7TRANS' toField='set_translation'/>
< ROUTE  fromNode=' A8' fromField='touchTime' toNode=' ClockA8' toField='set_startTime'/>
< ROUTE  fromNode=' ClockA8' fromField='fraction_changed' toNode=' A8Mover' toField='set_fraction'/>
< ROUTE  fromNode=' A8Mover' fromField='value_changed' toNode=' A8TRANS' toField='set_translation'/>
< ROUTE  fromNode=' As8' fromField='touchTime' toNode=' ClockAs8' toField='set_startTime'/>
< ROUTE  fromNode=' ClockAs8' fromField='fraction_changed' toNode=' As8Mover' toField='set_fraction'/>
< ROUTE  fromNode=' As8Mover' fromField='value_changed' toNode=' As8TRANS' toField='set_translation'/>
< ROUTE  fromNode=' B8' fromField='touchTime' toNode=' ClockB8' toField='set_startTime'/>
< ROUTE  fromNode=' ClockB8' fromField='fraction_changed' toNode=' B8Mover' toField='set_fraction'/>
< ROUTE  fromNode=' B8Mover' fromField='value_changed' toNode=' B8TRANS' toField='set_translation'/>
< ROUTE  fromNode=' C8' fromField='touchTime' toNode=' ClockC8' toField='set_startTime'/>
< ROUTE  fromNode=' ClockC8' fromField='fraction_changed' toNode=' C8Mover' toField='set_fraction'/>
< ROUTE  fromNode=' C8Mover' fromField='value_changed' toNode=' C8TRANS' toField='set_translation'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playA0' toNode=' PitchA0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playA0' toNode=' ClockA0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playAs0' toNode=' PitchAs0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playAs0' toNode=' ClockAs0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playB0' toNode=' PitchB0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playB0' toNode=' ClockB0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playC0' toNode=' PitchC0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playC0' toNode=' ClockC0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playCs0' toNode=' PitchCs0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playCs0' toNode=' ClockCs0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playD0' toNode=' PitchD0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playD0' toNode=' ClockD0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playDs0' toNode=' PitchDs0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playDs0' toNode=' ClockDs0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playE0' toNode=' PitchE0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playE0' toNode=' ClockE0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playF0' toNode=' PitchF0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playF0' toNode=' ClockF0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playFs0' toNode=' PitchFs0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playFs0' toNode=' ClockFs0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playG0' toNode=' PitchG0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playG0' toNode=' ClockG0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playGs0' toNode=' PitchGs0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playGs0' toNode=' ClockGs0' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playA1' toNode=' PitchA1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playA1' toNode=' ClockA1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playAs1' toNode=' PitchAs1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playAs1' toNode=' ClockAs1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playB1' toNode=' PitchB1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playB1' toNode=' ClockB1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playC1' toNode=' PitchC1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playC1' toNode=' ClockC1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playCs1' toNode=' PitchCs1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playCs1' toNode=' ClockCs1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playD1' toNode=' PitchD1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playD1' toNode=' ClockD1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playDs1' toNode=' PitchDs1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playDs1' toNode=' ClockDs1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playE1' toNode=' PitchE1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playE1' toNode=' ClockE1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playF1' toNode=' PitchF1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playF1' toNode=' ClockF1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playFs1' toNode=' PitchFs1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playFs1' toNode=' ClockFs1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playG1' toNode=' PitchG1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playG1' toNode=' ClockG1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playGs1' toNode=' PitchGs1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playGs1' toNode=' ClockGs1' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playA2' toNode=' PitchA2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playA2' toNode=' ClockA2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playAs2' toNode=' PitchAs2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playAs2' toNode=' ClockAs2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playB2' toNode=' PitchB2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playB2' toNode=' ClockB2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playC2' toNode=' PitchC2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playC2' toNode=' ClockC2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playCs2' toNode=' PitchCs2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playCs2' toNode=' ClockCs2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playD2' toNode=' PitchD2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playD2' toNode=' ClockD2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playDs2' toNode=' PitchDs2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playDs2' toNode=' ClockDs2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playE2' toNode=' PitchE2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playE2' toNode=' ClockE2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playF2' toNode=' PitchF2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playF2' toNode=' ClockF2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playFs2' toNode=' PitchFs2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playFs2' toNode=' ClockFs2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playG2' toNode=' PitchG2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playG2' toNode=' ClockG2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playGs2' toNode=' PitchGs2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playGs2' toNode=' ClockGs2' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playA3' toNode=' PitchA3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playA3' toNode=' ClockA3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playAs3' toNode=' PitchAs3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playAs3' toNode=' ClockAs3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playB3' toNode=' PitchB3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playB3' toNode=' ClockB3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playC3' toNode=' PitchC3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playC3' toNode=' ClockC3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playCs3' toNode=' PitchCs3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playCs3' toNode=' ClockCs3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playD3' toNode=' PitchD3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playD3' toNode=' ClockD3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playDs3' toNode=' PitchDs3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playDs3' toNode=' ClockDs3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playE3' toNode=' PitchE3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playE3' toNode=' ClockE3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playF3' toNode=' PitchF3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playF3' toNode=' ClockF3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playFs3' toNode=' PitchFs3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playFs3' toNode=' ClockFs3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playG3' toNode=' PitchG3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playG3' toNode=' ClockG3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playGs3' toNode=' PitchGs3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playGs3' toNode=' ClockGs3' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playA4' toNode=' PitchA4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playA4' toNode=' ClockA4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playAs4' toNode=' PitchAs4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playAs4' toNode=' ClockAs4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playB4' toNode=' PitchB4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playB4' toNode=' ClockB4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playC4' toNode=' PitchC4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playC4' toNode=' ClockC4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playCs4' toNode=' PitchCs4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playCs4' toNode=' ClockCs4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playD4' toNode=' PitchD4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playD4' toNode=' ClockD4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playDs4' toNode=' PitchDs4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playDs4' toNode=' ClockDs4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playE4' toNode=' PitchE4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playE4' toNode=' ClockE4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playF4' toNode=' PitchF4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playF4' toNode=' ClockF4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playFs4' toNode=' PitchFs4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playFs4' toNode=' ClockFs4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playG4' toNode=' PitchG4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playG4' toNode=' ClockG4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playGs4' toNode=' PitchGs4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playGs4' toNode=' ClockGs4' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playB5' toNode=' ClockB5' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playC5' toNode=' PitchC5' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playC5' toNode=' ClockC5' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playCs5' toNode=' PitchCs5' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playCs5' toNode=' ClockCs5' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playD5' toNode=' PitchD5' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playD5' toNode=' ClockD5' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playDs5' toNode=' PitchDs5' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playDs5' toNode=' ClockDs5' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playE5' toNode=' PitchE5' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playE5' toNode=' ClockE5' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playF5' toNode=' PitchF5' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playF5' toNode=' ClockF5' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playFs5' toNode=' PitchFs5' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playFs5' toNode=' ClockFs5' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playG5' toNode=' PitchG5' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playG5' toNode=' ClockG5' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playGs5' toNode=' PitchGs5' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playGs5' toNode=' ClockGs5' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playA6' toNode=' PitchA6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playA6' toNode=' ClockA6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playAs6' toNode=' PitchAs6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playAs6' toNode=' ClockAs6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playB6' toNode=' PitchB6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playB6' toNode=' ClockB6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playC6' toNode=' PitchC6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playC6' toNode=' ClockC6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playCs6' toNode=' PitchCs6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playCs6' toNode=' ClockCs6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playD6' toNode=' PitchD6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playD6' toNode=' ClockD6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playDs6' toNode=' PitchDs6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playDs6' toNode=' ClockDs6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playE6' toNode=' PitchE6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playE6' toNode=' ClockE6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playF6' toNode=' PitchF6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playF6' toNode=' ClockF6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playFs6' toNode=' PitchFs6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playFs6' toNode=' ClockFs6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playG6' toNode=' PitchG6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playG6' toNode=' ClockG6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playGs6' toNode=' PitchGs6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playGs6' toNode=' ClockGs6' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playA7' toNode=' PitchA7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playA7' toNode=' ClockA7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playAs7' toNode=' PitchAs7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playAs7' toNode=' ClockAs7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playB7' toNode=' PitchB7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playB7' toNode=' ClockB7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playC7' toNode=' PitchC7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playC7' toNode=' ClockC7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playCs7' toNode=' PitchCs7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playCs7' toNode=' ClockCs7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playD7' toNode=' PitchD7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playD7' toNode=' ClockD7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playDs7' toNode=' PitchDs7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playDs7' toNode=' ClockDs7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playE7' toNode=' PitchE7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playE7' toNode=' ClockE7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playF7' toNode=' PitchF7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playF7' toNode=' ClockF7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playFs7' toNode=' PitchFs7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playFs7' toNode=' ClockFs7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playG7' toNode=' PitchG7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playG7' toNode=' ClockG7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playGs7' toNode=' PitchGs7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playGs7' toNode=' ClockGs7' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playA8' toNode=' PitchA8' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playA8' toNode=' ClockA8' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playAs8' toNode=' PitchAs8' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playAs8' toNode=' ClockAs8' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playB8' toNode=' PitchB8' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playB8' toNode=' ClockB8' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playC8' toNode=' PitchC8' toField='set_startTime'/>
< ROUTE  fromNode=' PlayerPianoScript' fromField='playC8' toNode=' ClockC8' toField='set_startTime'/>
</Scene>
</X3D>
<!--

to top <!-- Event Graph ROUTE Table shows event connections -->
 
<!-- Index for DEF nodes: A0, A0Mover, A0TRANS, A1, A1Mover, A1TRANS, A2, A2Mover, A2TRANS, A3, A3Mover, A3TRANS, A4, A4Mover, A4TRANS, A5, A5Mover, A5TRANS, A6, A6Mover, A6TRANS, A7, A7Mover, A7TRANS, A8, A8Mover, A8TRANS, As0, As0Mover, As0TRANS, As1, As1Mover, As1TRANS, As2, As2Mover, As2TRANS, As3, As3Mover, As3TRANS, As4, As4Mover, As4TRANS, As5, As5Mover, As5TRANS, As6, As6Mover, As6TRANS, As7, As7Mover, As7TRANS, As8, As8Mover, As8TRANS, B0, B0Mover, B0TRANS, B1, B1Mover, B1TRANS, B2, B2Mover, B2TRANS, B3, B3Mover, B3TRANS, B4, B4Mover, B4TRANS, B5, B5Mover, B5TRANS, B6, B6Mover, B6TRANS, B7, B7Mover, B7TRANS, B8, B8Mover, B8TRANS, BlackKey, C0, C0Mover, C0TRANS, C1, C1Mover, C1TRANS, C2, C2Mover, C2TRANS, C3, C3Mover, C3TRANS, C4, C4Mover, C4TRANS, C5, C5Mover, C5TRANS, C6, C6Mover, C6TRANS, C7, C7Mover, C7TRANS, C8, C8Mover, C8TRANS, ClockA0, ClockA1, ClockA2, ClockA3, ClockA4, ClockA5, ClockA6, ClockA7, ClockA8, ClockAs0, ClockAs1, ClockAs2, ClockAs3, ClockAs4, ClockAs5, ClockAs6, ClockAs7, ClockAs8, ClockB0, ClockB1, ClockB2, ClockB3, ClockB4, ClockB5, ClockB6, ClockB7, ClockB8, ClockC0, ClockC1, ClockC2, ClockC3, ClockC4, ClockC5, ClockC6, ClockC7, ClockC8, ClockCs0, ClockCs1, ClockCs2, ClockCs3, ClockCs4, ClockCs5, ClockCs6, ClockCs7, ClockD0, ClockD1, ClockD2, ClockD3, ClockD4, ClockD5, ClockD6, ClockD7, ClockDs0, ClockDs1, ClockDs2, ClockDs3, ClockDs4, ClockDs5, ClockDs6, ClockDs7, ClockE0, ClockE1, ClockE2, ClockE3, ClockE4, ClockE5, ClockE6, ClockE7, ClockF0, ClockF1, ClockF2, ClockF3, ClockF4, ClockF5, ClockF6, ClockF7, ClockFs0, ClockFs1, ClockFs2, ClockFs3, ClockFs4, ClockFs5, ClockFs6, ClockFs7, ClockG0, ClockG1, ClockG2, ClockG3, ClockG4, ClockG5, ClockG6, ClockG7, ClockGs0, ClockGs1, ClockGs2, ClockGs3, ClockGs4, ClockGs5, ClockGs6, ClockGs7, Cs0, Cs0Mover, Cs0TRANS, Cs1, Cs1Mover, Cs1TRANS, Cs2, Cs2Mover, Cs2TRANS, Cs3, Cs3Mover, Cs3TRANS, Cs4, Cs4Mover, Cs4TRANS, Cs5, Cs5Mover, Cs5TRANS, Cs6, Cs6Mover, Cs6TRANS, Cs7, Cs7Mover, Cs7TRANS, D0, D0Mover, D0TRANS, D1, D1Mover, D1TRANS, D2, D2Mover, D2TRANS, D3, D3Mover, D3TRANS, D4, D4Mover, D4TRANS, D5, D5Mover, D5TRANS, D6, D6Mover, D6TRANS, D7, D7Mover, D7TRANS, Ds0, Ds0Mover, Ds0TRANS, Ds1, Ds1Mover, Ds1TRANS, Ds2, Ds2Mover, Ds2TRANS, Ds3, Ds3Mover, Ds3TRANS, Ds4, Ds4Mover, Ds4TRANS, Ds5, Ds5Mover, Ds5TRANS, Ds6, Ds6Mover, Ds6TRANS, Ds7, Ds7Mover, Ds7TRANS, E0, E0Mover, E0TRANS, E1, E1Mover, E1TRANS, E2, E2Mover, E2TRANS, E3, E3Mover, E3TRANS, E4, E4Mover, E4TRANS, E5, E5Mover, E5TRANS, E6, E6Mover, E6TRANS, E7, E7Mover, E7TRANS, F0, F0Mover, F0TRANS, F1, F1Mover, F1TRANS, F2, F2Mover, F2TRANS, F3, F3Mover, F3TRANS, F4, F4Mover, F4TRANS, F5, F5Mover, F5TRANS, F6, F6Mover, F6TRANS, F7, F7Mover, F7TRANS, FrontFar, Fs0, Fs0Mover, Fs0TRANS, Fs1, Fs1Mover, Fs1TRANS, Fs2, Fs2Mover, Fs2TRANS, Fs3, Fs3Mover, Fs3TRANS, Fs4, Fs4Mover, Fs4TRANS, Fs5, Fs5Mover, Fs5TRANS, Fs6, Fs6Mover, Fs6TRANS, Fs7, Fs7Mover, Fs7TRANS, G0, G0Mover, G0TRANS, G1, G1Mover, G1TRANS, G2, G2Mover, G2TRANS, G3, G3Mover, G3TRANS, G4, G4Mover, G4TRANS, G5, G5Mover, G5TRANS, G6, G6Mover, G6TRANS, G7, G7Mover, G7TRANS, Gs0, Gs0Mover, Gs0TRANS, Gs1, Gs1Mover, Gs1TRANS, Gs2, Gs2Mover, Gs2TRANS, Gs3, Gs3Mover, Gs3TRANS, Gs4, Gs4Mover, Gs4TRANS, Gs5, Gs5Mover, Gs5TRANS, Gs6, Gs6Mover, Gs6TRANS, Gs7, Gs7Mover, Gs7TRANS, IvoryWhite, LeftSide, LightFromAbove, PitchA0, PitchA1, PitchA2, PitchA3, PitchA4, PitchA5, PitchA6, PitchA7, PitchA8, PitchAs0, PitchAs1, PitchAs2, PitchAs3, PitchAs4, PitchAs5, PitchAs6, PitchAs7, PitchAs8, PitchB0, PitchB1, PitchB2, PitchB3, PitchB4, PitchB5, PitchB6, PitchB7, PitchB8, PitchC0, PitchC1, PitchC2, PitchC3, PitchC4, PitchC5, PitchC6, PitchC7, PitchC8, PitchCs0, PitchCs1, PitchCs2, PitchCs3, PitchCs4, PitchCs5, PitchCs6, PitchCs7, PitchD0, PitchD1, PitchD2, PitchD3, PitchD4, PitchD5, PitchD6, PitchD7, PitchDs0, PitchDs1, PitchDs2, PitchDs3, PitchDs4, PitchDs5, PitchDs6, PitchDs7, PitchE0, PitchE1, PitchE2, PitchE3, PitchE4, PitchE5, PitchE6, PitchE7, PitchF0, PitchF1, PitchF2, PitchF3, PitchF4, PitchF5, PitchF6, PitchF7, PitchFs0, PitchFs1, PitchFs2, PitchFs3, PitchFs4, PitchFs5, PitchFs6, PitchFs7, PitchG0, PitchG1, PitchG2, PitchG3, PitchG4, PitchG5, PitchG6, PitchG7, PitchGs0, PitchGs1, PitchGs2, PitchGs3, PitchGs4, PitchGs5, PitchGs6, PitchGs7, PlayerPianoScript, RightSide, StartPlaying, TopDown, TopDownCloser, WhiteKey

Index for Viewpoint nodes: Viewpoint_1, FrontFar, LeftSide, RightSide, TopDown, TopDownCloser
-->

Event Graph ROUTE Table entries with 596 ROUTE connections total, showing X3D event-model relationships for this scene.

Each row shows an event cascade that may occur during a single timestamp interval between frame renderings, as part of the X3D execution model.

A0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchA1
AudioClip
set_startTime
SFTime
A0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockA0
TimeSensor
set_startTime
SFTime

 
 
then
ClockA0
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
A0Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
A0Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
A0TRANS
Transform
set_translation
SFVec3f


A1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchA1
AudioClip
set_startTime
SFTime
A1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockA1
TimeSensor
set_startTime
SFTime

 
 
then
ClockA1
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
A1Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
A1Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
A1TRANS
Transform
set_translation
SFVec3f


A2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchA2
AudioClip
set_startTime
SFTime
A2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockA2
TimeSensor
set_startTime
SFTime

 
 
then
ClockA2
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
A2Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
A2Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
A2TRANS
Transform
set_translation
SFVec3f


A3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchA3
AudioClip
set_startTime
SFTime
A3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockA3
TimeSensor
set_startTime
SFTime

 
 
then
ClockA3
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
A3Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
A3Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
A3TRANS
Transform
set_translation
SFVec3f


A4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchA4
AudioClip
set_startTime
SFTime
A4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockA4
TimeSensor
set_startTime
SFTime

 
 
then
ClockA4
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
A4Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
A4Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
A4TRANS
Transform
set_translation
SFVec3f


A5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchA5
AudioClip
set_startTime
SFTime
A5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockA5
TimeSensor
set_startTime
SFTime

 
 
then
ClockA5
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
A5Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
A5Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
A5TRANS
Transform
set_translation
SFVec3f


A6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchA6
AudioClip
set_startTime
SFTime
A6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockA6
TimeSensor
set_startTime
SFTime

 
 
then
ClockA6
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
A6Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
A6Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
A6TRANS
Transform
set_translation
SFVec3f


A7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchA7
AudioClip
set_startTime
SFTime
A7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockA7
TimeSensor
set_startTime
SFTime

 
 
then
ClockA7
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
A7Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
A7Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
A7TRANS
Transform
set_translation
SFVec3f


A8
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchA8
AudioClip
set_startTime
SFTime
A8
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockA8
TimeSensor
set_startTime
SFTime

 
 
then
ClockA8
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
A8Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
A8Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
A8TRANS
Transform
set_translation
SFVec3f


As0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchAs1
AudioClip
set_startTime
SFTime
As0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockAs0
TimeSensor
set_startTime
SFTime

 
 
then
ClockAs0
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
As0Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
As0Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
As0TRANS
Transform
set_translation
SFVec3f


As1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchAs1
AudioClip
set_startTime
SFTime
As1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockAs1
TimeSensor
set_startTime
SFTime

 
 
then
ClockAs1
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
As1Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
As1Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
As1TRANS
Transform
set_translation
SFVec3f


As2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchAs2
AudioClip
set_startTime
SFTime
As2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockAs2
TimeSensor
set_startTime
SFTime

 
 
then
ClockAs2
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
As2Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
As2Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
As2TRANS
Transform
set_translation
SFVec3f


As3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchAs3
AudioClip
set_startTime
SFTime
As3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockAs3
TimeSensor
set_startTime
SFTime

 
 
then
ClockAs3
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
As3Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
As3Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
As3TRANS
Transform
set_translation
SFVec3f


As4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchAs4
AudioClip
set_startTime
SFTime
As4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockAs4
TimeSensor
set_startTime
SFTime

 
 
then
ClockAs4
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
As4Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
As4Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
As4TRANS
Transform
set_translation
SFVec3f


As5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchAs5
AudioClip
set_startTime
SFTime
As5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockAs5
TimeSensor
set_startTime
SFTime

 
 
then
ClockAs5
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
As5Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
As5Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
As5TRANS
Transform
set_translation
SFVec3f


As6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchAs6
AudioClip
set_startTime
SFTime
As6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockAs6
TimeSensor
set_startTime
SFTime

 
 
then
ClockAs6
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
As6Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
As6Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
As6TRANS
Transform
set_translation
SFVec3f


As7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchAs7
AudioClip
set_startTime
SFTime
As7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockAs7
TimeSensor
set_startTime
SFTime

 
 
then
ClockAs7
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
As7Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
As7Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
As7TRANS
Transform
set_translation
SFVec3f


As8
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchAs8
AudioClip
set_startTime
SFTime
As8
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockAs8
TimeSensor
set_startTime
SFTime

 
 
then
ClockAs8
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
As8Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
As8Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
As8TRANS
Transform
set_translation
SFVec3f


B0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchB1
AudioClip
set_startTime
SFTime
B0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockB0
TimeSensor
set_startTime
SFTime

 
 
then
ClockB0
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
B0Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
B0Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
B0TRANS
Transform
set_translation
SFVec3f


B1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchB1
AudioClip
set_startTime
SFTime
B1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockB1
TimeSensor
set_startTime
SFTime

 
 
then
ClockB1
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
B1Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
B1Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
B1TRANS
Transform
set_translation
SFVec3f


B2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchB2
AudioClip
set_startTime
SFTime
B2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockB2
TimeSensor
set_startTime
SFTime

 
 
then
ClockB2
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
B2Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
B2Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
B2TRANS
Transform
set_translation
SFVec3f


B3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchB3
AudioClip
set_startTime
SFTime
B3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockB3
TimeSensor
set_startTime
SFTime

 
 
then
ClockB3
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
B3Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
B3Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
B3TRANS
Transform
set_translation
SFVec3f


B4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchB4
AudioClip
set_startTime
SFTime
B4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockB4
TimeSensor
set_startTime
SFTime

 
 
then
ClockB4
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
B4Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
B4Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
B4TRANS
Transform
set_translation
SFVec3f


B5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchB5
AudioClip
set_startTime
SFTime
B5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockB5
TimeSensor
set_startTime
SFTime

 
 
then
ClockB5
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
B5Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
B5Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
B5TRANS
Transform
set_translation
SFVec3f


B6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchB6
AudioClip
set_startTime
SFTime
B6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockB6
TimeSensor
set_startTime
SFTime

 
 
then
ClockB6
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
B6Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
B6Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
B6TRANS
Transform
set_translation
SFVec3f


B7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchB7
AudioClip
set_startTime
SFTime
B7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockB7
TimeSensor
set_startTime
SFTime

 
 
then
ClockB7
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
B7Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
B7Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
B7TRANS
Transform
set_translation
SFVec3f


B8
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchB8
AudioClip
set_startTime
SFTime
B8
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockB8
TimeSensor
set_startTime
SFTime

 
 
then
ClockB8
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
B8Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
B8Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
B8TRANS
Transform
set_translation
SFVec3f


C0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchC1
AudioClip
set_startTime
SFTime
C0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockC0
TimeSensor
set_startTime
SFTime

 
 
then
ClockC0
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
C0Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
C0Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
C0TRANS
Transform
set_translation
SFVec3f


C1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchC1
AudioClip
set_startTime
SFTime
C1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockC1
TimeSensor
set_startTime
SFTime

 
 
then
ClockC1
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
C1Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
C1Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
C1TRANS
Transform
set_translation
SFVec3f


C2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchC2
AudioClip
set_startTime
SFTime
C2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockC2
TimeSensor
set_startTime
SFTime

 
 
then
ClockC2
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
C2Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
C2Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
C2TRANS
Transform
set_translation
SFVec3f


C3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchC3
AudioClip
set_startTime
SFTime
C3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockC3
TimeSensor
set_startTime
SFTime

 
 
then
ClockC3
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
C3Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
C3Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
C3TRANS
Transform
set_translation
SFVec3f


C4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchC4
AudioClip
set_startTime
SFTime
C4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockC4
TimeSensor
set_startTime
SFTime

 
 
then
ClockC4
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
C4Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
C4Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
C4TRANS
Transform
set_translation
SFVec3f


C5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchC5
AudioClip
set_startTime
SFTime
C5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockC5
TimeSensor
set_startTime
SFTime

 
 
then
ClockC5
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
C5Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
C5Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
C5TRANS
Transform
set_translation
SFVec3f


C6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchC6
AudioClip
set_startTime
SFTime
C6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockC6
TimeSensor
set_startTime
SFTime

 
 
then
ClockC6
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
C6Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
C6Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
C6TRANS
Transform
set_translation
SFVec3f


C7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchC7
AudioClip
set_startTime
SFTime
C7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockC7
TimeSensor
set_startTime
SFTime

 
 
then
ClockC7
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
C7Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
C7Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
C7TRANS
Transform
set_translation
SFVec3f


C8
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchC8
AudioClip
set_startTime
SFTime
C8
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockC8
TimeSensor
set_startTime
SFTime

 
 
then
ClockC8
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
C8Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
C8Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
C8TRANS
Transform
set_translation
SFVec3f


Cs0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchCs1
AudioClip
set_startTime
SFTime
Cs0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockCs0
TimeSensor
set_startTime
SFTime

 
 
then
ClockCs0
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Cs0Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Cs0Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Cs0TRANS
Transform
set_translation
SFVec3f


Cs1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchCs1
AudioClip
set_startTime
SFTime
Cs1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockCs1
TimeSensor
set_startTime
SFTime

 
 
then
ClockCs1
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Cs1Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Cs1Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Cs1TRANS
Transform
set_translation
SFVec3f


Cs2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchCs2
AudioClip
set_startTime
SFTime
Cs2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockCs2
TimeSensor
set_startTime
SFTime

 
 
then
ClockCs2
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Cs2Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Cs2Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Cs2TRANS
Transform
set_translation
SFVec3f


Cs3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchCs3
AudioClip
set_startTime
SFTime
Cs3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockCs3
TimeSensor
set_startTime
SFTime

 
 
then
ClockCs3
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Cs3Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Cs3Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Cs3TRANS
Transform
set_translation
SFVec3f


Cs4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchCs4
AudioClip
set_startTime
SFTime
Cs4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockCs4
TimeSensor
set_startTime
SFTime

 
 
then
ClockCs4
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Cs4Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Cs4Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Cs4TRANS
Transform
set_translation
SFVec3f


Cs5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchCs5
AudioClip
set_startTime
SFTime
Cs5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockCs5
TimeSensor
set_startTime
SFTime

 
 
then
ClockCs5
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Cs5Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Cs5Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Cs5TRANS
Transform
set_translation
SFVec3f


Cs6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchCs6
AudioClip
set_startTime
SFTime
Cs6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockCs6
TimeSensor
set_startTime
SFTime

 
 
then
ClockCs6
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Cs6Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Cs6Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Cs6TRANS
Transform
set_translation
SFVec3f


Cs7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchCs7
AudioClip
set_startTime
SFTime
Cs7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockCs7
TimeSensor
set_startTime
SFTime

 
 
then
ClockCs7
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Cs7Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Cs7Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Cs7TRANS
Transform
set_translation
SFVec3f


D0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchD1
AudioClip
set_startTime
SFTime
D0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockD0
TimeSensor
set_startTime
SFTime

 
 
then
ClockD0
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
D0Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
D0Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
D0TRANS
Transform
set_translation
SFVec3f


D1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchD1
AudioClip
set_startTime
SFTime
D1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockD1
TimeSensor
set_startTime
SFTime

 
 
then
ClockD1
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
D1Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
D1Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
D1TRANS
Transform
set_translation
SFVec3f


D2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchD2
AudioClip
set_startTime
SFTime
D2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockD2
TimeSensor
set_startTime
SFTime

 
 
then
ClockD2
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
D2Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
D2Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
D2TRANS
Transform
set_translation
SFVec3f


D3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchD3
AudioClip
set_startTime
SFTime
D3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockD3
TimeSensor
set_startTime
SFTime

 
 
then
ClockD3
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
D3Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
D3Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
D3TRANS
Transform
set_translation
SFVec3f


D4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchD4
AudioClip
set_startTime
SFTime
D4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockD4
TimeSensor
set_startTime
SFTime

 
 
then
ClockD4
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
D4Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
D4Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
D4TRANS
Transform
set_translation
SFVec3f


D5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchD5
AudioClip
set_startTime
SFTime
D5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockD5
TimeSensor
set_startTime
SFTime

 
 
then
ClockD5
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
D5Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
D5Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
D5TRANS
Transform
set_translation
SFVec3f


D6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchD6
AudioClip
set_startTime
SFTime
D6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockD6
TimeSensor
set_startTime
SFTime

 
 
then
ClockD6
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
D6Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
D6Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
D6TRANS
Transform
set_translation
SFVec3f


D7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchD7
AudioClip
set_startTime
SFTime
D7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockD7
TimeSensor
set_startTime
SFTime

 
 
then
ClockD7
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
D7Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
D7Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
D7TRANS
Transform
set_translation
SFVec3f


Ds0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchDs1
AudioClip
set_startTime
SFTime
Ds0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockDs0
TimeSensor
set_startTime
SFTime

 
 
then
ClockDs0
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Ds0Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Ds0Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Ds0TRANS
Transform
set_translation
SFVec3f


Ds1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchDs1
AudioClip
set_startTime
SFTime
Ds1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockDs1
TimeSensor
set_startTime
SFTime

 
 
then
ClockDs1
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Ds1Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Ds1Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Ds1TRANS
Transform
set_translation
SFVec3f


Ds2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchDs2
AudioClip
set_startTime
SFTime
Ds2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockDs2
TimeSensor
set_startTime
SFTime

 
 
then
ClockDs2
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Ds2Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Ds2Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Ds2TRANS
Transform
set_translation
SFVec3f


Ds3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchDs3
AudioClip
set_startTime
SFTime
Ds3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockDs3
TimeSensor
set_startTime
SFTime

 
 
then
ClockDs3
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Ds3Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Ds3Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Ds3TRANS
Transform
set_translation
SFVec3f


Ds4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchDs4
AudioClip
set_startTime
SFTime
Ds4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockDs4
TimeSensor
set_startTime
SFTime

 
 
then
ClockDs4
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Ds4Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Ds4Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Ds4TRANS
Transform
set_translation
SFVec3f


Ds5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchDs5
AudioClip
set_startTime
SFTime
Ds5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockDs5
TimeSensor
set_startTime
SFTime

 
 
then
ClockDs5
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Ds5Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Ds5Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Ds5TRANS
Transform
set_translation
SFVec3f


Ds6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchDs6
AudioClip
set_startTime
SFTime
Ds6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockDs6
TimeSensor
set_startTime
SFTime

 
 
then
ClockDs6
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Ds6Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Ds6Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Ds6TRANS
Transform
set_translation
SFVec3f


Ds7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchDs7
AudioClip
set_startTime
SFTime
Ds7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockDs7
TimeSensor
set_startTime
SFTime

 
 
then
ClockDs7
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Ds7Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Ds7Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Ds7TRANS
Transform
set_translation
SFVec3f


E0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchE1
AudioClip
set_startTime
SFTime
E0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockE0
TimeSensor
set_startTime
SFTime

 
 
then
ClockE0
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
E0Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
E0Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
E0TRANS
Transform
set_translation
SFVec3f


E1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchE1
AudioClip
set_startTime
SFTime
E1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockE1
TimeSensor
set_startTime
SFTime

 
 
then
ClockE1
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
E1Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
E1Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
E1TRANS
Transform
set_translation
SFVec3f


E2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchE2
AudioClip
set_startTime
SFTime
E2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockE2
TimeSensor
set_startTime
SFTime

 
 
then
ClockE2
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
E2Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
E2Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
E2TRANS
Transform
set_translation
SFVec3f


E3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchE3
AudioClip
set_startTime
SFTime
E3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockE3
TimeSensor
set_startTime
SFTime

 
 
then
ClockE3
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
E3Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
E3Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
E3TRANS
Transform
set_translation
SFVec3f


E4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchE4
AudioClip
set_startTime
SFTime
E4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockE4
TimeSensor
set_startTime
SFTime

 
 
then
ClockE4
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
E4Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
E4Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
E4TRANS
Transform
set_translation
SFVec3f


E5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchE5
AudioClip
set_startTime
SFTime
E5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockE5
TimeSensor
set_startTime
SFTime

 
 
then
ClockE5
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
E5Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
E5Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
E5TRANS
Transform
set_translation
SFVec3f


E6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchE6
AudioClip
set_startTime
SFTime
E6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockE6
TimeSensor
set_startTime
SFTime

 
 
then
ClockE6
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
E6Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
E6Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
E6TRANS
Transform
set_translation
SFVec3f


E7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchE7
AudioClip
set_startTime
SFTime
E7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockE7
TimeSensor
set_startTime
SFTime

 
 
then
ClockE7
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
E7Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
E7Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
E7TRANS
Transform
set_translation
SFVec3f


F0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchF1
AudioClip
set_startTime
SFTime
F0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockF0
TimeSensor
set_startTime
SFTime

 
 
then
ClockF0
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
F0Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
F0Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
F0TRANS
Transform
set_translation
SFVec3f


F1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchF1
AudioClip
set_startTime
SFTime
F1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockF1
TimeSensor
set_startTime
SFTime

 
 
then
ClockF1
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
F1Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
F1Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
F1TRANS
Transform
set_translation
SFVec3f


F2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchF2
AudioClip
set_startTime
SFTime
F2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockF2
TimeSensor
set_startTime
SFTime

 
 
then
ClockF2
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
F2Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
F2Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
F2TRANS
Transform
set_translation
SFVec3f


F3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchF3
AudioClip
set_startTime
SFTime
F3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockF3
TimeSensor
set_startTime
SFTime

 
 
then
ClockF3
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
F3Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
F3Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
F3TRANS
Transform
set_translation
SFVec3f


F4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchF4
AudioClip
set_startTime
SFTime
F4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockF4
TimeSensor
set_startTime
SFTime

 
 
then
ClockF4
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
F4Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
F4Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
F4TRANS
Transform
set_translation
SFVec3f


F5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchF5
AudioClip
set_startTime
SFTime
F5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockF5
TimeSensor
set_startTime
SFTime

 
 
then
ClockF5
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
F5Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
F5Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
F5TRANS
Transform
set_translation
SFVec3f


F6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchF6
AudioClip
set_startTime
SFTime
F6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockF6
TimeSensor
set_startTime
SFTime

 
 
then
ClockF6
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
F6Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
F6Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
F6TRANS
Transform
set_translation
SFVec3f


F7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchF7
AudioClip
set_startTime
SFTime
F7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockF7
TimeSensor
set_startTime
SFTime

 
 
then
ClockF7
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
F7Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
F7Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
F7TRANS
Transform
set_translation
SFVec3f


Fs0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchFs1
AudioClip
set_startTime
SFTime
Fs0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockFs0
TimeSensor
set_startTime
SFTime

 
 
then
ClockFs0
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Fs0Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Fs0Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Fs0TRANS
Transform
set_translation
SFVec3f


Fs1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchFs1
AudioClip
set_startTime
SFTime
Fs1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockFs1
TimeSensor
set_startTime
SFTime

 
 
then
ClockFs1
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Fs1Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Fs1Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Fs1TRANS
Transform
set_translation
SFVec3f


Fs2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchFs2
AudioClip
set_startTime
SFTime
Fs2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockFs2
TimeSensor
set_startTime
SFTime

 
 
then
ClockFs2
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Fs2Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Fs2Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Fs2TRANS
Transform
set_translation
SFVec3f


Fs3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchFs3
AudioClip
set_startTime
SFTime
Fs3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockFs3
TimeSensor
set_startTime
SFTime

 
 
then
ClockFs3
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Fs3Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Fs3Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Fs3TRANS
Transform
set_translation
SFVec3f


Fs4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchFs4
AudioClip
set_startTime
SFTime
Fs4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockFs4
TimeSensor
set_startTime
SFTime

 
 
then
ClockFs4
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Fs4Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Fs4Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Fs4TRANS
Transform
set_translation
SFVec3f


Fs5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchFs5
AudioClip
set_startTime
SFTime
Fs5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockFs5
TimeSensor
set_startTime
SFTime

 
 
then
ClockFs5
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Fs5Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Fs5Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Fs5TRANS
Transform
set_translation
SFVec3f


Fs6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchFs6
AudioClip
set_startTime
SFTime
Fs6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockFs6
TimeSensor
set_startTime
SFTime

 
 
then
ClockFs6
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Fs6Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Fs6Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Fs6TRANS
Transform
set_translation
SFVec3f


Fs7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchFs7
AudioClip
set_startTime
SFTime
Fs7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockFs7
TimeSensor
set_startTime
SFTime

 
 
then
ClockFs7
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Fs7Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Fs7Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Fs7TRANS
Transform
set_translation
SFVec3f


G0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchG1
AudioClip
set_startTime
SFTime
G0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockG0
TimeSensor
set_startTime
SFTime

 
 
then
ClockG0
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
G0Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
G0Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
G0TRANS
Transform
set_translation
SFVec3f


G1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchG1
AudioClip
set_startTime
SFTime
G1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockG1
TimeSensor
set_startTime
SFTime

 
 
then
ClockG1
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
G1Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
G1Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
G1TRANS
Transform
set_translation
SFVec3f


G2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchG2
AudioClip
set_startTime
SFTime
G2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockG2
TimeSensor
set_startTime
SFTime

 
 
then
ClockG2
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
G2Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
G2Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
G2TRANS
Transform
set_translation
SFVec3f


G3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchG3
AudioClip
set_startTime
SFTime
G3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockG3
TimeSensor
set_startTime
SFTime

 
 
then
ClockG3
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
G3Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
G3Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
G3TRANS
Transform
set_translation
SFVec3f


G4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchG4
AudioClip
set_startTime
SFTime
G4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockG4
TimeSensor
set_startTime
SFTime

 
 
then
ClockG4
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
G4Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
G4Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
G4TRANS
Transform
set_translation
SFVec3f


G5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchG5
AudioClip
set_startTime
SFTime
G5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockG5
TimeSensor
set_startTime
SFTime

 
 
then
ClockG5
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
G5Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
G5Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
G5TRANS
Transform
set_translation
SFVec3f


G6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchG6
AudioClip
set_startTime
SFTime
G6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockG6
TimeSensor
set_startTime
SFTime

 
 
then
ClockG6
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
G6Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
G6Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
G6TRANS
Transform
set_translation
SFVec3f


G7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchG7
AudioClip
set_startTime
SFTime
G7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockG7
TimeSensor
set_startTime
SFTime

 
 
then
ClockG7
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
G7Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
G7Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
G7TRANS
Transform
set_translation
SFVec3f


Gs0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchGs1
AudioClip
set_startTime
SFTime
Gs0
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockGs0
TimeSensor
set_startTime
SFTime

 
 
then
ClockGs0
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Gs0Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Gs0Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Gs0TRANS
Transform
set_translation
SFVec3f


Gs1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchGs1
AudioClip
set_startTime
SFTime
Gs1
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockGs1
TimeSensor
set_startTime
SFTime

 
 
then
ClockGs1
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Gs1Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Gs1Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Gs1TRANS
Transform
set_translation
SFVec3f


Gs2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchGs2
AudioClip
set_startTime
SFTime
Gs2
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockGs2
TimeSensor
set_startTime
SFTime

 
 
then
ClockGs2
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Gs2Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Gs2Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Gs2TRANS
Transform
set_translation
SFVec3f


Gs3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchGs3
AudioClip
set_startTime
SFTime
Gs3
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockGs3
TimeSensor
set_startTime
SFTime

 
 
then
ClockGs3
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Gs3Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Gs3Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Gs3TRANS
Transform
set_translation
SFVec3f


Gs4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchGs4
AudioClip
set_startTime
SFTime
Gs4
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockGs4
TimeSensor
set_startTime
SFTime

 
 
then
ClockGs4
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Gs4Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Gs4Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Gs4TRANS
Transform
set_translation
SFVec3f


Gs5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchGs5
AudioClip
set_startTime
SFTime
Gs5
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockGs5
TimeSensor
set_startTime
SFTime

 
 
then
ClockGs5
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Gs5Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Gs5Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Gs5TRANS
Transform
set_translation
SFVec3f


Gs6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchGs6
AudioClip
set_startTime
SFTime
Gs6
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockGs6
TimeSensor
set_startTime
SFTime

 
 
then
ClockGs6
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Gs6Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Gs6Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Gs6TRANS
Transform
set_translation
SFVec3f


Gs7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PitchGs7
AudioClip
set_startTime
SFTime
Gs7
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
ClockGs7
TimeSensor
set_startTime
SFTime

 
 
then
ClockGs7
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Gs7Mover
PositionInterpolator
set_fraction
SFFloat

 
 
then
Gs7Mover
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
Gs7TRANS
Transform
set_translation
SFVec3f


StartPlaying
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
PlayerPianoScript
Script
playScriptedNotes
SFTime



-->

<!-- Online at
https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/KeyboardEightyEightKeysIndex.html -->
<!-- Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Basic/StudentProjects/KeyboardEightyEightKeys.x3d -->

<!-- Color legend: X3D terminology <X3dNode DEF='idName' field='value'/> matches XML terminology <XmlElement DEF='idName' attribute='value'/>
(Light-blue background: event-based behavior node or statement) (Grey background inside box: inserted documentation) (Magenta background: X3D Extensibility)
-->

to top <!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints. -->