X3D Model Documentation: KeyboardEightyEightKeys.x3d

  1  <?xml version="1.0" encoding="UTF-8"?>
  2 
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "https://www.web3d.org/specifications/x3d-3.0.dtd">
  3  <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'>
  4       <head>
  5            <meta name='titlecontent='KeyboardEightyEightKeys.x3d'/>
  6            <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.'/>
  7            <meta name=' warning content=' Not all tones work (hardware, operating system dependent?) and so may need some higher-frequency sound files. '/>
  8            <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 '/>
  9            <meta name='creatorcontent='Scott Gilman'/>
 10            <meta name='createdcontent='27 August 2004'/>
 11            <meta name='modifiedcontent='14 July 2023'/>
 12            <meta name='referencecontent='https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/Figure24.4FourKeyKeyboard.x3d'/>
 13            <meta name='identifiercontent='https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/KeyboardEightyEightKeys.x3d'/>
 14            <meta name='referencecontent='Figure 24.4, The VRML 2.0 Sourcebook, Copyright [1997] By Andrea L. Ames, David R. Nadeau, and John L. Moreland'/>
 15            <meta name='generatorcontent='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/>
 16            <meta name='licensecontent='../license.html'/>
 17       </head>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->

<!-- to top 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
-->
 18       <Scene>
 19            <WorldInfo title='KeyboardEightyEightKeys.x3d'/>
 20            <DirectionalLight DEF='LightFromAbovedirection='0 -1 -0.2'/>
 21            <Viewpoint description='Middle C, C#, D, D#orientation='1 0 0 -0.758position='0 2 2'/>
 22            <Viewpoint DEF='RightSidedescription='From right end of keyboardorientation='-.238 .939 .25 1.6349position='15.5 8.5 -.2'/>
 23            <Viewpoint DEF='FrontFardescription='Looking down from a distanceorientation='-1 .007 -.004 .6661position='.3 11 13.7'/>
 24            <Viewpoint DEF='LeftSidedescription='From left end of keyboardorientation='-.252 -.932 -.261 1.636position='-15.9 9.6 -.1'/>
 25            <Viewpoint DEF='TopDowndescription='Looking down from above middle Corientation='-1 -.024 .007 1.5504position='-1 15.4 .3'/>
 26            <Viewpoint DEF='TopDownCloserdescription='Top-down view, closerorientation='-1 -.005 -.008 1.1528position='-.6 7.1 3.1'/>
 27            <Group>
 28 
               <!-- ROUTE information for A0TRANS node:  [from A0Mover.value_changed to set_translation ] -->
               <Transform DEF='A0TRANStranslation='-7.5 0 0'>
 29 
                    <!-- Shape WhiteKey is a DEF node that has 58 USE nodes: USE_1, USE_2, USE_3, USE_4, USE_5, USE_6, USE_7, USE_8, USE_9, USE_10, USE_11, USE_12, USE_13, USE_14, USE_15, USE_16, USE_17, USE_18, USE_19, USE_20, USE_21, USE_22, USE_23, USE_24, USE_25, USE_26, USE_27, USE_28, USE_29, USE_30, USE_31, USE_32, USE_33, USE_34, USE_35, USE_36, USE_37, USE_38, USE_39, USE_40, USE_41, USE_42, USE_43, USE_44, USE_45, USE_46, USE_47, USE_48, USE_49, USE_50, USE_51, USE_52, USE_53, USE_54, USE_55, USE_56, USE_57, USE_58 -->
                    <Shape DEF='WhiteKey'>
 30                           <Box size='0.23 0.1 1.5'/>
 31                           <Appearance DEF='IvoryWhite'>
 32                                <!-- https://en.wikipedia.org/wiki/Shades_of_white#Ivory -->
 33                                <Material diffuseColor='1 1 0.941176'/>
 34                           </Appearance>
 35                      </Shape>
 36 
                    <!-- ROUTE information for A0 node:  [from touchTime to PitchA1.set_startTime ] [from touchTime to ClockA0.set_startTime ] -->
                    <TouchSensor DEF='A0description='play Pitch A0'/>
 37                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
 38 
                         <!-- ROUTE information for PitchA0 node:  [from PlayerPianoScript.playA0 to set_startTime ] -->
                         <AudioClip DEF='PitchA0description='playing Pitch A0pitch='0.053'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
 39                      </Sound>
 40                 </Transform>
 41 
               <!-- ROUTE information for As0TRANS node:  [from As0Mover.value_changed to set_translation ] -->
               <Transform DEF='As0TRANStranslation='-7.375 0.1 -.375'>
 42 
                    <!-- Shape BlackKey is a DEF node that has 40 USE nodes: USE_1, USE_2, USE_3, USE_4, USE_5, USE_6, USE_7, USE_8, USE_9, USE_10, USE_11, USE_12, USE_13, USE_14, USE_15, USE_16, USE_17, USE_18, USE_19, USE_20, USE_21, USE_22, USE_23, USE_24, USE_25, USE_26, USE_27, USE_28, USE_29, USE_30, USE_31, USE_32, USE_33, USE_34, USE_35, USE_36, USE_37, USE_38, USE_39, USE_40 -->
                    <Shape DEF='BlackKey'>
 43                           <Box size='0.23 0.1 1.5'/>
 44                           <Appearance>
 45                                <Material diffuseColor='0.1 0.1 0.1'/>
 46                           </Appearance>
 47                      </Shape>
 48 
                    <!-- ROUTE information for As0 node:  [from touchTime to PitchAs1.set_startTime ] [from touchTime to ClockAs0.set_startTime ] -->
                    <TouchSensor DEF='As0description='play Pitch As0'/>
 49                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
 50 
                         <!-- ROUTE information for PitchAs0 node:  [from PlayerPianoScript.playAs0 to set_startTime ] -->
                         <AudioClip DEF='PitchAs0description='playing Pitch As0pitch='.056'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
 51                      </Sound>
 52                 </Transform>
 53 
               <!-- ROUTE information for B0TRANS node:  [from B0Mover.value_changed to set_translation ] -->
               <Transform DEF='B0TRANStranslation='-7.25 0 0'>
 54                      <Shape USE='WhiteKey'/>
 55 
                    <!-- ROUTE information for B0 node:  [from touchTime to PitchB1.set_startTime ] [from touchTime to ClockB0.set_startTime ] -->
                    <TouchSensor DEF='B0description='play Pitch B0'/>
 56                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
 57 
                         <!-- ROUTE information for PitchB0 node:  [from PlayerPianoScript.playB0 to set_startTime ] -->
                         <AudioClip DEF='PitchB0description='playing Pitch B0pitch='.059'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
 58                      </Sound>
 59                 </Transform>
 60 
               <!-- ROUTE information for C0TRANS node:  [from C0Mover.value_changed to set_translation ] -->
               <Transform DEF='C0TRANStranslation='-7 0 0'>
 61                      <Shape USE='WhiteKey'/>
 62 
                    <!-- ROUTE information for C0 node:  [from touchTime to PitchC1.set_startTime ] [from touchTime to ClockC0.set_startTime ] -->
                    <TouchSensor DEF='C0description='play Pitch C0'/>
 63                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
 64 
                         <!-- ROUTE information for PitchC0 node:  [from PlayerPianoScript.playC0 to set_startTime ] -->
                         <AudioClip DEF='PitchC0description='playing Pitch C0pitch='.062'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
 65                      </Sound>
 66                 </Transform>
 67 
               <!-- ROUTE information for Cs0TRANS node:  [from Cs0Mover.value_changed to set_translation ] -->
               <Transform DEF='Cs0TRANStranslation='-6.875 0.1 -0.375'>
 68                      <Shape USE='BlackKey'/>
 69 
                    <!-- ROUTE information for Cs0 node:  [from touchTime to PitchCs1.set_startTime ] [from touchTime to ClockCs0.set_startTime ] -->
                    <TouchSensor DEF='Cs0description='play Pitch Cs1'/>
 70                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
 71 
                         <!-- ROUTE information for PitchCs0 node:  [from PlayerPianoScript.playCs0 to set_startTime ] -->
                         <AudioClip DEF='PitchCs0description='playing Pitch Cs0pitch='.066'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
 72                      </Sound>
 73                 </Transform>
 74 
               <!-- ROUTE information for D0TRANS node:  [from D0Mover.value_changed to set_translation ] -->
               <Transform DEF='D0TRANStranslation='-6.75 0 0'>
 75                      <Shape USE='WhiteKey'/>
 76 
                    <!-- ROUTE information for D0 node:  [from touchTime to PitchD1.set_startTime ] [from touchTime to ClockD0.set_startTime ] -->
                    <TouchSensor DEF='D0description='play Pitch D0'/>
 77                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
 78 
                         <!-- ROUTE information for PitchD0 node:  [from PlayerPianoScript.playD0 to set_startTime ] -->
                         <AudioClip DEF='PitchD0description='playing Pitch D0pitch='.070'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
 79                      </Sound>
 80                 </Transform>
 81 
               <!-- ROUTE information for Ds0TRANS node:  [from Ds0Mover.value_changed to set_translation ] -->
               <Transform DEF='Ds0TRANStranslation='-6.625 0.1 -0.375'>
 82                      <Shape USE='BlackKey'/>
 83 
                    <!-- ROUTE information for Ds0 node:  [from touchTime to PitchDs1.set_startTime ] [from touchTime to ClockDs0.set_startTime ] -->
                    <TouchSensor DEF='Ds0description='play Pitch Ds0'/>
 84                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
 85 
                         <!-- ROUTE information for PitchDs0 node:  [from PlayerPianoScript.playDs0 to set_startTime ] -->
                         <AudioClip DEF='PitchDs0description='playing Pitch Ds0pitch='.074'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
 86                      </Sound>
 87                 </Transform>
 88 
               <!-- ROUTE information for E0TRANS node:  [from E0Mover.value_changed to set_translation ] -->
               <Transform DEF='E0TRANStranslation='-6.5 0 0'>
 89                      <Shape USE='WhiteKey'/>
 90 
                    <!-- ROUTE information for E0 node:  [from touchTime to PitchE1.set_startTime ] [from touchTime to ClockE0.set_startTime ] -->
                    <TouchSensor DEF='E0description='play Pitch E0'/>
 91                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
 92 
                         <!-- ROUTE information for PitchE0 node:  [from PlayerPianoScript.playE0 to set_startTime ] -->
                         <AudioClip DEF='PitchE0description='playing Pitch E0pitch='.079'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
 93                      </Sound>
 94                 </Transform>
 95 
               <!-- ROUTE information for F0TRANS node:  [from F0Mover.value_changed to set_translation ] -->
               <Transform DEF='F0TRANStranslation='-6.25 0 0'>
 96                      <Shape USE='WhiteKey'/>
 97 
                    <!-- ROUTE information for F0 node:  [from touchTime to PitchF1.set_startTime ] [from touchTime to ClockF0.set_startTime ] -->
                    <TouchSensor DEF='F0description='play Pitch F0'/>
 98                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
 99 
                         <!-- ROUTE information for PitchF0 node:  [from PlayerPianoScript.playF0 to set_startTime ] -->
                         <AudioClip DEF='PitchF0description='playing Pitch F0pitch='.083'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
100                      </Sound>
101                 </Transform>
102 
               <!-- ROUTE information for Fs0TRANS node:  [from Fs0Mover.value_changed to set_translation ] -->
               <Transform DEF='Fs0TRANStranslation='-6.125 0.1 -0.375'>
103                      <Shape USE='BlackKey'/>
104 
                    <!-- ROUTE information for Fs0 node:  [from touchTime to PitchFs1.set_startTime ] [from touchTime to ClockFs0.set_startTime ] -->
                    <TouchSensor DEF='Fs0description='play Pitch Fs0'/>
105                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
106 
                         <!-- ROUTE information for PitchFs0 node:  [from PlayerPianoScript.playFs0 to set_startTime ] -->
                         <AudioClip DEF='PitchFs0description='playing Pitch Fs0pitch='.088'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
107                      </Sound>
108                 </Transform>
109 
               <!-- ROUTE information for G0TRANS node:  [from G0Mover.value_changed to set_translation ] -->
               <Transform DEF='G0TRANStranslation='-6 0 0'>
110                      <Shape USE='WhiteKey'/>
111 
                    <!-- ROUTE information for G0 node:  [from touchTime to PitchG1.set_startTime ] [from touchTime to ClockG0.set_startTime ] -->
                    <TouchSensor DEF='G0description='play Pitch G0'/>
112                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
113 
                         <!-- ROUTE information for PitchG0 node:  [from PlayerPianoScript.playG0 to set_startTime ] -->
                         <AudioClip DEF='PitchG0description='playing Pitch G0pitch='.094'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
114                      </Sound>
115                 </Transform>
116 
               <!-- ROUTE information for Gs0TRANS node:  [from Gs0Mover.value_changed to set_translation ] -->
               <Transform DEF='Gs0TRANStranslation='-5.875 0.1 -0.375'>
117                      <Shape USE='BlackKey'/>
118 
                    <!-- ROUTE information for Gs0 node:  [from touchTime to PitchGs1.set_startTime ] [from touchTime to ClockGs0.set_startTime ] -->
                    <TouchSensor DEF='Gs0description='play Pitch Gs0'/>
119                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
120 
                         <!-- ROUTE information for PitchGs0 node:  [from PlayerPianoScript.playGs0 to set_startTime ] -->
                         <AudioClip DEF='PitchGs0description='playing Pitch Gs0pitch='.099'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
121                      </Sound>
122                 </Transform>
123 
               <!-- ROUTE information for A1TRANS node:  [from A1Mover.value_changed to set_translation ] -->
               <Transform DEF='A1TRANStranslation='-5.75 0 0'>
124                      <Shape USE='WhiteKey'/>
125 
                    <!-- ROUTE information for A1 node:  [from touchTime to PitchA1.set_startTime ] [from touchTime to ClockA1.set_startTime ] -->
                    <TouchSensor DEF='A1description='play Pitch A1'/>
126                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
127 
128                      </Sound>
129                 </Transform>
130 
               <!-- ROUTE information for As1TRANS node:  [from As1Mover.value_changed to set_translation ] -->
               <Transform DEF='As1TRANStranslation='-5.625 0.1 -.375'>
131                      <Shape USE='BlackKey'/>
132 
                    <!-- ROUTE information for As1 node:  [from touchTime to PitchAs1.set_startTime ] [from touchTime to ClockAs1.set_startTime ] -->
                    <TouchSensor DEF='As1description='play Pitch As1'/>
133                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
134 
135                      </Sound>
136                 </Transform>
137 
               <!-- ROUTE information for B1TRANS node:  [from B1Mover.value_changed to set_translation ] -->
               <Transform DEF='B1TRANStranslation='-5.5 0 0'>
138                      <Shape USE='WhiteKey'/>
139 
                    <!-- ROUTE information for B1 node:  [from touchTime to PitchB1.set_startTime ] [from touchTime to ClockB1.set_startTime ] -->
                    <TouchSensor DEF='B1description='play Pitch B1'/>
140                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
141 
142                      </Sound>
143                 </Transform>
144 
               <!-- ROUTE information for C1TRANS node:  [from C1Mover.value_changed to set_translation ] -->
               <Transform DEF='C1TRANStranslation='-5.25 0 0'>
145                      <Shape USE='WhiteKey'/>
146 
                    <!-- ROUTE information for C1 node:  [from touchTime to PitchC1.set_startTime ] [from touchTime to ClockC1.set_startTime ] -->
                    <TouchSensor DEF='C1description='play Pitch C1'/>
147                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
148 
149                      </Sound>
150                 </Transform>
151 
               <!-- ROUTE information for Cs1TRANS node:  [from Cs1Mover.value_changed to set_translation ] -->
               <Transform DEF='Cs1TRANStranslation='-5.125 0.1 -0.375'>
152                      <Shape USE='BlackKey'/>
153 
                    <!-- ROUTE information for Cs1 node:  [from touchTime to PitchCs1.set_startTime ] [from touchTime to ClockCs1.set_startTime ] -->
                    <TouchSensor DEF='Cs1description='play Pitch Cs1'/>
154                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
155 
156                      </Sound>
157                 </Transform>
158 
               <!-- ROUTE information for D1TRANS node:  [from D1Mover.value_changed to set_translation ] -->
               <Transform DEF='D1TRANStranslation='-5 0 0'>
159                      <Shape USE='WhiteKey'/>
160 
                    <!-- ROUTE information for D1 node:  [from touchTime to PitchD1.set_startTime ] [from touchTime to ClockD1.set_startTime ] -->
                    <TouchSensor DEF='D1description='play Pitch D1'/>
161                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
162 
163                      </Sound>
164                 </Transform>
165 
               <!-- ROUTE information for Ds1TRANS node:  [from Ds1Mover.value_changed to set_translation ] -->
               <Transform DEF='Ds1TRANStranslation='-4.875 0.1 -0.375'>
166                      <Shape USE='BlackKey'/>
167 
                    <!-- ROUTE information for Ds1 node:  [from touchTime to PitchDs1.set_startTime ] [from touchTime to ClockDs1.set_startTime ] -->
                    <TouchSensor DEF='Ds1description='play Pitch Ds1'/>
168                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
169 
170                      </Sound>
171                 </Transform>
172 
               <!-- ROUTE information for E1TRANS node:  [from E1Mover.value_changed to set_translation ] -->
               <Transform DEF='E1TRANStranslation='-4.75 0 0'>
173                      <Shape USE='WhiteKey'/>
174 
                    <!-- ROUTE information for E1 node:  [from touchTime to PitchE1.set_startTime ] [from touchTime to ClockE1.set_startTime ] -->
                    <TouchSensor DEF='E1description='play Pitch E1'/>
175                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
176 
177                      </Sound>
178                 </Transform>
179 
               <!-- ROUTE information for F1TRANS node:  [from F1Mover.value_changed to set_translation ] -->
               <Transform DEF='F1TRANStranslation='-4.5 0 0'>
180                      <Shape USE='WhiteKey'/>
181 
                    <!-- ROUTE information for F1 node:  [from touchTime to PitchF1.set_startTime ] [from touchTime to ClockF1.set_startTime ] -->
                    <TouchSensor DEF='F1description='play Pitch F1'/>
182                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
183 
184                      </Sound>
185                 </Transform>
186 
               <!-- ROUTE information for Fs1TRANS node:  [from Fs1Mover.value_changed to set_translation ] -->
               <Transform DEF='Fs1TRANStranslation='-4.375 0.1 -0.375'>
187                      <Shape USE='BlackKey'/>
188 
                    <!-- ROUTE information for Fs1 node:  [from touchTime to PitchFs1.set_startTime ] [from touchTime to ClockFs1.set_startTime ] -->
                    <TouchSensor DEF='Fs1description='play Pitch Fs1'/>
189                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
190 
191                      </Sound>
192                 </Transform>
193 
               <!-- ROUTE information for G1TRANS node:  [from G1Mover.value_changed to set_translation ] -->
               <Transform DEF='G1TRANStranslation='-4.25 0 0'>
194                      <Shape USE='WhiteKey'/>
195 
                    <!-- ROUTE information for G1 node:  [from touchTime to PitchG1.set_startTime ] [from touchTime to ClockG1.set_startTime ] -->
                    <TouchSensor DEF='G1description='play Pitch G1'/>
196                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
197 
198                      </Sound>
199                 </Transform>
200 
               <!-- ROUTE information for Gs1TRANS node:  [from Gs1Mover.value_changed to set_translation ] -->
               <Transform DEF='Gs1TRANStranslation='-4.125 0.1 -0.375'>
201                      <Shape USE='BlackKey'/>
202 
                    <!-- ROUTE information for Gs1 node:  [from touchTime to PitchGs1.set_startTime ] [from touchTime to ClockGs1.set_startTime ] -->
                    <TouchSensor DEF='Gs1description='play Pitch Gs1'/>
203                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
204 
205                      </Sound>
206                 </Transform>
207 
               <!-- ROUTE information for A2TRANS node:  [from A2Mover.value_changed to set_translation ] -->
               <Transform DEF='A2TRANStranslation='-4 0 0'>
208                      <Shape USE='WhiteKey'/>
209 
                    <!-- ROUTE information for A2 node:  [from touchTime to PitchA2.set_startTime ] [from touchTime to ClockA2.set_startTime ] -->
                    <TouchSensor DEF='A2description='play Pitch A2'/>
210                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
211 
                         <!-- ROUTE information for PitchA2 node:  [from A2.touchTime to set_startTime ] [from PlayerPianoScript.playA2 to set_startTime ] -->
                         <AudioClip DEF='PitchA2description='playing Pitch A2pitch='.210'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
212                      </Sound>
213                 </Transform>
214 
               <!-- ROUTE information for As2TRANS node:  [from As2Mover.value_changed to set_translation ] -->
               <Transform DEF='As2TRANStranslation='-3.875 0.1 -0.375'>
215                      <Shape USE='BlackKey'/>
216 
                    <!-- ROUTE information for As2 node:  [from touchTime to PitchAs2.set_startTime ] [from touchTime to ClockAs2.set_startTime ] -->
                    <TouchSensor DEF='As2description='play Pitch As2'/>
217                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
218 
                         <!-- ROUTE information for PitchAs2 node:  [from As2.touchTime to set_startTime ] [from PlayerPianoScript.playAs2 to set_startTime ] -->
                         <AudioClip DEF='PitchAs2description='playing Pitch As2pitch='.223'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
219                      </Sound>
220                 </Transform>
221 
               <!-- ROUTE information for B2TRANS node:  [from B2Mover.value_changed to set_translation ] -->
               <Transform DEF='B2TRANStranslation='-3.75 0 0'>
222                      <Shape USE='WhiteKey'/>
223 
                    <!-- ROUTE information for B2 node:  [from touchTime to PitchB2.set_startTime ] [from touchTime to ClockB2.set_startTime ] -->
                    <TouchSensor DEF='B2description='play Pitch B2'/>
224                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
225 
                         <!-- ROUTE information for PitchB2 node:  [from B2.touchTime to set_startTime ] [from PlayerPianoScript.playB2 to set_startTime ] -->
                         <AudioClip DEF='PitchB2description='playing Pitch B2pitch='.236'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
226                      </Sound>
227                 </Transform>
228 
               <!-- ROUTE information for C2TRANS node:  [from C2Mover.value_changed to set_translation ] -->
               <Transform DEF='C2TRANStranslation='-3.5 0 0'>
229                      <Shape USE='WhiteKey'/>
230 
                    <!-- ROUTE information for C2 node:  [from touchTime to PitchC2.set_startTime ] [from touchTime to ClockC2.set_startTime ] -->
                    <TouchSensor DEF='C2description='play Pitch C2'/>
231                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
232 
                         <!-- ROUTE information for PitchC2 node:  [from C2.touchTime to set_startTime ] [from PlayerPianoScript.playC2 to set_startTime ] -->
                         <AudioClip DEF='PitchC2description='playing Pitch C2pitch='.250'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
233                      </Sound>
234                 </Transform>
235 
               <!-- ROUTE information for Cs2TRANS node:  [from Cs2Mover.value_changed to set_translation ] -->
               <Transform DEF='Cs2TRANStranslation='-3.375 0.1 -0.375'>
236                      <Shape USE='BlackKey'/>
237 
                    <!-- ROUTE information for Cs2 node:  [from touchTime to PitchCs2.set_startTime ] [from touchTime to ClockCs2.set_startTime ] -->
                    <TouchSensor DEF='Cs2description='play Pitch Cs2'/>
238                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
239 
                         <!-- ROUTE information for PitchCs2 node:  [from Cs2.touchTime to set_startTime ] [from PlayerPianoScript.playCs2 to set_startTime ] -->
                         <AudioClip DEF='PitchCs2description='playing Pitch Cs2pitch='.265'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
240                      </Sound>
241                 </Transform>
242 
               <!-- ROUTE information for D2TRANS node:  [from D2Mover.value_changed to set_translation ] -->
               <Transform DEF='D2TRANStranslation='-3.25 0 0'>
243                      <Shape USE='WhiteKey'/>
244 
                    <!-- ROUTE information for D2 node:  [from touchTime to PitchD2.set_startTime ] [from touchTime to ClockD2.set_startTime ] -->
                    <TouchSensor DEF='D2description='play Pitch D2'/>
245                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
246 
                         <!-- ROUTE information for PitchD2 node:  [from D2.touchTime to set_startTime ] [from PlayerPianoScript.playD2 to set_startTime ] -->
                         <AudioClip DEF='PitchD2description='playing Pitch D2pitch='.281'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
247                      </Sound>
248                 </Transform>
249 
               <!-- ROUTE information for Ds2TRANS node:  [from Ds2Mover.value_changed to set_translation ] -->
               <Transform DEF='Ds2TRANStranslation='-3.125 0.1 -0.375'>
250                      <Shape USE='BlackKey'/>
251 
                    <!-- ROUTE information for Ds2 node:  [from touchTime to PitchDs2.set_startTime ] [from touchTime to ClockDs2.set_startTime ] -->
                    <TouchSensor DEF='Ds2description='play Pitch Ds2'/>
252                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
253 
                         <!-- ROUTE information for PitchDs2 node:  [from Ds2.touchTime to set_startTime ] [from PlayerPianoScript.playDs2 to set_startTime ] -->
                         <AudioClip DEF='PitchDs2description='playing Pitch Ds2pitch='.297'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
254                      </Sound>
255                 </Transform>
256 
               <!-- ROUTE information for E2TRANS node:  [from E2Mover.value_changed to set_translation ] -->
               <Transform DEF='E2TRANStranslation='-3 0 0'>
257                      <Shape USE='WhiteKey'/>
258 
                    <!-- ROUTE information for E2 node:  [from touchTime to PitchE2.set_startTime ] [from touchTime to ClockE2.set_startTime ] -->
                    <TouchSensor DEF='E2description='play Pitch E2'/>
259                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
260 
                         <!-- ROUTE information for PitchE2 node:  [from E2.touchTime to set_startTime ] [from PlayerPianoScript.playE2 to set_startTime ] -->
                         <AudioClip DEF='PitchE2description='playing Pitch E2pitch='.315'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
261                      </Sound>
262                 </Transform>
263 
               <!-- ROUTE information for F2TRANS node:  [from F2Mover.value_changed to set_translation ] -->
               <Transform DEF='F2TRANStranslation='-2.75 0 0'>
264                      <Shape USE='WhiteKey'/>
265 
                    <!-- ROUTE information for F2 node:  [from touchTime to PitchF2.set_startTime ] [from touchTime to ClockF2.set_startTime ] -->
                    <TouchSensor DEF='F2description='play pitch F2'/>
266                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
267 
                         <!-- ROUTE information for PitchF2 node:  [from F2.touchTime to set_startTime ] [from PlayerPianoScript.playF2 to set_startTime ] -->
                         <AudioClip DEF='PitchF2description='playing Pitch F2pitch='.334'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
268                      </Sound>
269                 </Transform>
270 
               <!-- ROUTE information for Fs2TRANS node:  [from Fs2Mover.value_changed to set_translation ] -->
               <Transform DEF='Fs2TRANStranslation='-2.625 0.1 -0.375'>
271                      <Shape USE='BlackKey'/>
272 
                    <!-- ROUTE information for Fs2 node:  [from touchTime to PitchFs2.set_startTime ] [from touchTime to ClockFs2.set_startTime ] -->
                    <TouchSensor DEF='Fs2description='play pitch Fs2'/>
273                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
274 
                         <!-- ROUTE information for PitchFs2 node:  [from Fs2.touchTime to set_startTime ] [from PlayerPianoScript.playFs2 to set_startTime ] -->
                         <AudioClip DEF='PitchFs2description='playing Pitch Fs2pitch='.354'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
275                      </Sound>
276                 </Transform>
277 
               <!-- ROUTE information for G2TRANS node:  [from G2Mover.value_changed to set_translation ] -->
               <Transform DEF='G2TRANStranslation='-2.5 0 0'>
278                      <Shape USE='WhiteKey'/>
279 
                    <!-- ROUTE information for G2 node:  [from touchTime to PitchG2.set_startTime ] [from touchTime to ClockG2.set_startTime ] -->
                    <TouchSensor DEF='G2description='play pitch G2'/>
280                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
281 
                         <!-- ROUTE information for PitchG2 node:  [from G2.touchTime to set_startTime ] [from PlayerPianoScript.playG2 to set_startTime ] -->
                         <AudioClip DEF='PitchG2description='playing Pitch G2pitch='.375'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
282                      </Sound>
283                 </Transform>
284 
               <!-- ROUTE information for Gs2TRANS node:  [from Gs2Mover.value_changed to set_translation ] -->
               <Transform DEF='Gs2TRANStranslation='-2.375 0.1 -0.375'>
285                      <Shape USE='BlackKey'/>
286 
                    <!-- ROUTE information for Gs2 node:  [from touchTime to PitchGs2.set_startTime ] [from touchTime to ClockGs2.set_startTime ] -->
                    <TouchSensor DEF='Gs2description='play pitch Gs2'/>
287                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
288 
                         <!-- ROUTE information for PitchGs2 node:  [from Gs2.touchTime to set_startTime ] [from PlayerPianoScript.playGs2 to set_startTime ] -->
                         <AudioClip DEF='PitchGs2description='playing Pitch Gs2pitch='.397'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
289                      </Sound>
290                 </Transform>
291 
               <!-- ROUTE information for A3TRANS node:  [from A3Mover.value_changed to set_translation ] -->
               <Transform DEF='A3TRANStranslation='-2.25 0 0'>
292                      <Shape USE='WhiteKey'/>
293 
                    <!-- ROUTE information for A3 node:  [from touchTime to PitchA3.set_startTime ] [from touchTime to ClockA3.set_startTime ] -->
                    <TouchSensor DEF='A3description='play pitch A3'/>
294                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
295 
                         <!-- ROUTE information for PitchA3 node:  [from A3.touchTime to set_startTime ] [from PlayerPianoScript.playA3 to set_startTime ] -->
                         <AudioClip DEF='PitchA3description='playing Pitch A3pitch='.420'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
296                      </Sound>
297                 </Transform>
298 
               <!-- ROUTE information for As3TRANS node:  [from As3Mover.value_changed to set_translation ] -->
               <Transform DEF='As3TRANStranslation='-2.125 0.1 -0.375'>
299                      <Shape USE='BlackKey'/>
300 
                    <!-- ROUTE information for As3 node:  [from touchTime to PitchAs3.set_startTime ] [from touchTime to ClockAs3.set_startTime ] -->
                    <TouchSensor DEF='As3description='play pitch As3'/>
301                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
302 
                         <!-- ROUTE information for PitchAs3 node:  [from As3.touchTime to set_startTime ] [from PlayerPianoScript.playAs3 to set_startTime ] -->
                         <AudioClip DEF='PitchAs3description='playing Pitch As3pitch='.445'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
303                      </Sound>
304                 </Transform>
305 
               <!-- ROUTE information for B3TRANS node:  [from B3Mover.value_changed to set_translation ] -->
               <Transform DEF='B3TRANStranslation='-2 0 0'>
306                      <Shape USE='WhiteKey'/>
307 
                    <!-- ROUTE information for B3 node:  [from touchTime to PitchB3.set_startTime ] [from touchTime to ClockB3.set_startTime ] -->
                    <TouchSensor DEF='B3description='play pitch B3'/>
308                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
309 
                         <!-- ROUTE information for PitchB3 node:  [from B3.touchTime to set_startTime ] [from PlayerPianoScript.playB3 to set_startTime ] -->
                         <AudioClip DEF='PitchB3description='playing Pitch B3pitch='.472'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
310                      </Sound>
311                 </Transform>
312 
               <!-- ROUTE information for C3TRANS node:  [from C3Mover.value_changed to set_translation ] -->
               <Transform DEF='C3TRANStranslation='-1.75 0 0'>
313                      <Shape USE='WhiteKey'/>
314 
                    <!-- ROUTE information for C3 node:  [from touchTime to PitchC3.set_startTime ] [from touchTime to ClockC3.set_startTime ] -->
                    <TouchSensor DEF='C3description='play pitch C3'/>
315                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
316 
                         <!-- ROUTE information for PitchC3 node:  [from C3.touchTime to set_startTime ] [from PlayerPianoScript.playC3 to set_startTime ] -->
                         <AudioClip DEF='PitchC3description='playing Pitch C3pitch='.500'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
317                      </Sound>
318                 </Transform>
319 
               <!-- ROUTE information for Cs3TRANS node:  [from Cs3Mover.value_changed to set_translation ] -->
               <Transform DEF='Cs3TRANStranslation='-1.625 0.1 -0.375'>
320                      <Shape USE='BlackKey'/>
321 
                    <!-- ROUTE information for Cs3 node:  [from touchTime to PitchCs3.set_startTime ] [from touchTime to ClockCs3.set_startTime ] -->
                    <TouchSensor DEF='Cs3description='play pitch Cs3'/>
322                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
323 
                         <!-- ROUTE information for PitchCs3 node:  [from Cs3.touchTime to set_startTime ] [from PlayerPianoScript.playCs3 to set_startTime ] -->
                         <AudioClip DEF='PitchCs3description='playing Pitch Cs3pitch='.530'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
324                      </Sound>
325                 </Transform>
326 
               <!-- ROUTE information for D3TRANS node:  [from D3Mover.value_changed to set_translation ] -->
               <Transform DEF='D3TRANStranslation='-1.5 0 0'>
327                      <Shape USE='WhiteKey'/>
328 
                    <!-- ROUTE information for D3 node:  [from touchTime to PitchD3.set_startTime ] [from touchTime to ClockD3.set_startTime ] -->
                    <TouchSensor DEF='D3description='play pitch D3'/>
329                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
330 
                         <!-- ROUTE information for PitchD3 node:  [from D3.touchTime to set_startTime ] [from PlayerPianoScript.playD3 to set_startTime ] -->
                         <AudioClip DEF='PitchD3description='playing Pitch D3pitch='.561'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
331                      </Sound>
332                 </Transform>
333 
               <!-- ROUTE information for Ds3TRANS node:  [from Ds3Mover.value_changed to set_translation ] -->
               <Transform DEF='Ds3TRANStranslation='-1.375 0.1 -0.375'>
334                      <Shape USE='BlackKey'/>
335 
                    <!-- ROUTE information for Ds3 node:  [from touchTime to PitchDs3.set_startTime ] [from touchTime to ClockDs3.set_startTime ] -->
                    <TouchSensor DEF='Ds3description='play pitch Ds3'/>
336                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
337 
                         <!-- ROUTE information for PitchDs3 node:  [from Ds3.touchTime to set_startTime ] [from PlayerPianoScript.playDs3 to set_startTime ] -->
                         <AudioClip DEF='PitchDs3description='playing Pitch Ds3pitch='.595'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
338                      </Sound>
339                 </Transform>
340 
               <!-- ROUTE information for E3TRANS node:  [from E3Mover.value_changed to set_translation ] -->
               <Transform DEF='E3TRANStranslation='-1.25 0 0'>
341                      <Shape USE='WhiteKey'/>
342 
                    <!-- ROUTE information for E3 node:  [from touchTime to PitchE3.set_startTime ] [from touchTime to ClockE3.set_startTime ] -->
                    <TouchSensor DEF='E3description='play pitch E3'/>
343                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
344 
                         <!-- ROUTE information for PitchE3 node:  [from E3.touchTime to set_startTime ] [from PlayerPianoScript.playE3 to set_startTime ] -->
                         <AudioClip DEF='PitchE3description='playing Pitch E3pitch='.630'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
345                      </Sound>
346                 </Transform>
347 
               <!-- ROUTE information for F3TRANS node:  [from F3Mover.value_changed to set_translation ] -->
               <Transform DEF='F3TRANStranslation='-1 0 0'>
348                      <Shape USE='WhiteKey'/>
349 
                    <!-- ROUTE information for F3 node:  [from touchTime to PitchF3.set_startTime ] [from touchTime to ClockF3.set_startTime ] -->
                    <TouchSensor DEF='F3description='play pitch F3'/>
350                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
351 
                         <!-- ROUTE information for PitchF3 node:  [from F3.touchTime to set_startTime ] [from PlayerPianoScript.playF3 to set_startTime ] -->
                         <AudioClip DEF='PitchF3description='playing Pitch F3pitch='.667'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
352                      </Sound>
353                 </Transform>
354 
               <!-- ROUTE information for Fs3TRANS node:  [from Fs3Mover.value_changed to set_translation ] -->
               <Transform DEF='Fs3TRANStranslation='-.875 0.1 -0.375'>
355                      <Shape USE='BlackKey'/>
356 
                    <!-- ROUTE information for Fs3 node:  [from touchTime to PitchFs3.set_startTime ] [from touchTime to ClockFs3.set_startTime ] -->
                    <TouchSensor DEF='Fs3description='play pitch Fs3'/>
357                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
358 
                         <!-- ROUTE information for PitchFs3 node:  [from Fs3.touchTime to set_startTime ] [from PlayerPianoScript.playFs3 to set_startTime ] -->
                         <AudioClip DEF='PitchFs3description='playing Pitch Fs3pitch='.707'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
359                      </Sound>
360                 </Transform>
361 
               <!-- ROUTE information for G3TRANS node:  [from G3Mover.value_changed to set_translation ] -->
               <Transform DEF='G3TRANStranslation='-.75 0 0'>
362                      <Shape USE='WhiteKey'/>
363 
                    <!-- ROUTE information for G3 node:  [from touchTime to PitchG3.set_startTime ] [from touchTime to ClockG3.set_startTime ] -->
                    <TouchSensor DEF='G3description='play pitch G3'/>
364                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
365 
                         <!-- ROUTE information for PitchG3 node:  [from G3.touchTime to set_startTime ] [from PlayerPianoScript.playG3 to set_startTime ] -->
                         <AudioClip DEF='PitchG3description='playing Pitch G3pitch='.749'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
366                      </Sound>
367                 </Transform>
368 
               <!-- ROUTE information for Gs3TRANS node:  [from Gs3Mover.value_changed to set_translation ] -->
               <Transform DEF='Gs3TRANStranslation='-.625 0.1 -0.375'>
369                      <Shape USE='BlackKey'/>
370 
                    <!-- ROUTE information for Gs3 node:  [from touchTime to PitchGs3.set_startTime ] [from touchTime to ClockGs3.set_startTime ] -->
                    <TouchSensor DEF='Gs3description='play pitch Gs3'/>
371                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
372 
                         <!-- ROUTE information for PitchGs3 node:  [from Gs3.touchTime to set_startTime ] [from PlayerPianoScript.playGs3 to set_startTime ] -->
                         <AudioClip DEF='PitchGs3description='playing Pitch Gs3pitch='.794'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
373                      </Sound>
374                 </Transform>
375 
               <!-- ROUTE information for A4TRANS node:  [from A4Mover.value_changed to set_translation ] -->
               <Transform DEF='A4TRANStranslation='-.5 0 0'>
376                      <Shape USE='WhiteKey'/>
377 
                    <!-- ROUTE information for A4 node:  [from touchTime to PitchA4.set_startTime ] [from touchTime to ClockA4.set_startTime ] -->
                    <TouchSensor DEF='A4description='play pitch A4'/>
378                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
379 
                         <!-- ROUTE information for PitchA4 node:  [from A4.touchTime to set_startTime ] [from PlayerPianoScript.playA4 to set_startTime ] -->
                         <AudioClip DEF='PitchA4description='playing Pitch A4pitch='.841'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
380                      </Sound>
381                 </Transform>
382 
               <!-- ROUTE information for As4TRANS node:  [from As4Mover.value_changed to set_translation ] -->
               <Transform DEF='As4TRANStranslation='-.375 0.1 -0.375'>
383                      <Shape USE='BlackKey'/>
384 
                    <!-- ROUTE information for As4 node:  [from touchTime to PitchAs4.set_startTime ] [from touchTime to ClockAs4.set_startTime ] -->
                    <TouchSensor DEF='As4description='play pitch As4'/>
385                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
386 
                         <!-- ROUTE information for PitchAs4 node:  [from As4.touchTime to set_startTime ] [from PlayerPianoScript.playAs4 to set_startTime ] -->
                         <AudioClip DEF='PitchAs4description='playing Pitch As4pitch='.891'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
387                      </Sound>
388                 </Transform>
389 
               <!-- ROUTE information for B4TRANS node:  [from B4Mover.value_changed to set_translation ] -->
               <Transform DEF='B4TRANStranslation='-.25 0 0'>
390                      <Shape USE='WhiteKey'/>
391 
                    <!-- ROUTE information for B4 node:  [from touchTime to PitchB4.set_startTime ] [from touchTime to ClockB4.set_startTime ] -->
                    <TouchSensor DEF='B4description='play pitch B4'/>
392                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
393 
                         <!-- ROUTE information for PitchB4 node:  [from B4.touchTime to set_startTime ] [from PlayerPianoScript.playB4 to set_startTime ] -->
                         <AudioClip DEF='PitchB4description='playing Pitch B4pitch='.944'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
394                      </Sound>
395                 </Transform>
396 
               <!-- ROUTE information for C4TRANS node:  [from C4Mover.value_changed to set_translation ] -->
               <Transform DEF='C4TRANS'>
397                      <Shape USE='WhiteKey'/>
398 
                    <!-- ROUTE information for C4 node:  [from touchTime to PitchC4.set_startTime ] [from touchTime to ClockC4.set_startTime ] -->
                    <TouchSensor DEF='C4description='play pitch C4'/>
399                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
400 
                         <!-- ROUTE information for PitchC4 node:  [from C4.touchTime to set_startTime ] [from PlayerPianoScript.playC4 to set_startTime ] -->
                         <AudioClip DEF='PitchC4description='playing Pitch C4'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
401                      </Sound>
402                 </Transform>
403 
               <!-- ROUTE information for Cs4TRANS node:  [from Cs4Mover.value_changed to set_translation ] -->
               <Transform DEF='Cs4TRANStranslation='0.125 0.1 -0.375'>
404                      <Shape USE='BlackKey'/>
405 
                    <!-- ROUTE information for Cs4 node:  [from touchTime to PitchCs4.set_startTime ] [from touchTime to ClockCs4.set_startTime ] -->
                    <TouchSensor DEF='Cs4description='play pitch Csharp4'/>
406                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
407 
                         <!-- ROUTE information for PitchCs4 node:  [from Cs4.touchTime to set_startTime ] [from PlayerPianoScript.playCs4 to set_startTime ] -->
                         <AudioClip DEF='PitchCs4description='playing Pitch Cs4pitch='1.059'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
408                      </Sound>
409                 </Transform>
410 
               <!-- ROUTE information for D4TRANS node:  [from D4Mover.value_changed to set_translation ] -->
               <Transform DEF='D4TRANStranslation='0.25 0 0'>
411                      <Shape USE='WhiteKey'/>
412 
                    <!-- ROUTE information for D4 node:  [from touchTime to PitchD4.set_startTime ] [from touchTime to ClockD4.set_startTime ] -->
                    <TouchSensor DEF='D4description='play pitch D4'/>
413                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
414 
                         <!-- ROUTE information for PitchD4 node:  [from D4.touchTime to set_startTime ] [from PlayerPianoScript.playD4 to set_startTime ] -->
                         <AudioClip DEF='PitchD4description='playing Pitch D4pitch='1.122'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
415                      </Sound>
416                 </Transform>
417 
               <!-- ROUTE information for Ds4TRANS node:  [from Ds4Mover.value_changed to set_translation ] -->
               <Transform DEF='Ds4TRANStranslation='0.375 0.1 -0.375'>
418                      <Shape USE='BlackKey'/>
419 
                    <!-- ROUTE information for Ds4 node:  [from touchTime to PitchDs4.set_startTime ] [from touchTime to ClockDs4.set_startTime ] -->
                    <TouchSensor DEF='Ds4description='play pitch Dsharp4'/>
420                      <Sound maxBack='110maxFront='110minBack='100minFront='100'>
421 
                         <!-- ROUTE information for PitchDs4 node:  [from Ds4.touchTime to set_startTime ] [from PlayerPianoScript.playDs4 to set_startTime ] -->
                         <AudioClip DEF='PitchDs4description='playing Pitch Ds4pitch='1.189'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
422                      </Sound>
423                 </Transform>
424 
               <!-- ROUTE information for E4TRANS node:  [from E4Mover.value_changed to set_translation ] -->
               <Transform DEF='E4TRANStranslation='.5 0 0'>
425                      <Shape USE='WhiteKey'/>
426 
                    <!-- ROUTE information for E4 node:  [from touchTime to PitchE4.set_startTime ] [from touchTime to ClockE4.set_startTime ] -->
                    <TouchSensor DEF='E4description='play pitch E4'/>
427                      <Sound>
428 
                         <!-- ROUTE information for PitchE4 node:  [from E4.touchTime to set_startTime ] [from PlayerPianoScript.playE4 to set_startTime ] -->
                         <AudioClip DEF='PitchE4description='playing Pitch E4pitch='1.260'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
429                      </Sound>
430                 </Transform>
431 
               <!-- ROUTE information for F4TRANS node:  [from F4Mover.value_changed to set_translation ] -->
               <Transform DEF='F4TRANStranslation='.75 0 0'>
432                      <Shape USE='WhiteKey'/>
433 
                    <!-- ROUTE information for F4 node:  [from touchTime to PitchF4.set_startTime ] [from touchTime to ClockF4.set_startTime ] -->
                    <TouchSensor DEF='F4description='play pitch F4'/>
434                      <Sound>
435 
                         <!-- ROUTE information for PitchF4 node:  [from F4.touchTime to set_startTime ] [from PlayerPianoScript.playF4 to set_startTime ] -->
                         <AudioClip DEF='PitchF4description='playing Pitch F4pitch='1.335'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
436                      </Sound>
437                 </Transform>
438 
               <!-- ROUTE information for Fs4TRANS node:  [from Fs4Mover.value_changed to set_translation ] -->
               <Transform DEF='Fs4TRANStranslation='.875 .1 -.375'>
439                      <Shape USE='BlackKey'/>
440 
                    <!-- ROUTE information for Fs4 node:  [from touchTime to PitchFs4.set_startTime ] [from touchTime to ClockFs4.set_startTime ] -->
                    <TouchSensor DEF='Fs4description='play pitch Fsharp4'/>
441                      <Sound>
442 
                         <!-- ROUTE information for PitchFs4 node:  [from Fs4.touchTime to set_startTime ] [from PlayerPianoScript.playFs4 to set_startTime ] -->
                         <AudioClip DEF='PitchFs4description='playing Pitch Fs4pitch='1.414'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
443                      </Sound>
444                 </Transform>
445 
               <!-- ROUTE information for G4TRANS node:  [from G4Mover.value_changed to set_translation ] -->
               <Transform DEF='G4TRANStranslation='1 0 0'>
446                      <Shape USE='WhiteKey'/>
447 
                    <!-- ROUTE information for G4 node:  [from touchTime to PitchG4.set_startTime ] [from touchTime to ClockG4.set_startTime ] -->
                    <TouchSensor DEF='G4description='play pitch G4'/>
448                      <Sound>
449 
                         <!-- ROUTE information for PitchG4 node:  [from G4.touchTime to set_startTime ] [from PlayerPianoScript.playG4 to set_startTime ] -->
                         <AudioClip DEF='PitchG4description='playing Pitch G4pitch='1.498'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
450                      </Sound>
451                 </Transform>
452 
               <!-- ROUTE information for Gs4TRANS node:  [from Gs4Mover.value_changed to set_translation ] -->
               <Transform DEF='Gs4TRANStranslation='1.125 .1 -.375'>
453                      <Shape USE='BlackKey'/>
454 
                    <!-- ROUTE information for Gs4 node:  [from touchTime to PitchGs4.set_startTime ] [from touchTime to ClockGs4.set_startTime ] -->
                    <TouchSensor DEF='Gs4description='play pitch Gsharp4'/>
455                      <Sound>
456 
                         <!-- ROUTE information for PitchGs4 node:  [from Gs4.touchTime to set_startTime ] [from PlayerPianoScript.playGs4 to set_startTime ] -->
                         <AudioClip DEF='PitchGs4description='playing Pitch Gs4pitch='1.587'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
457                      </Sound>
458                 </Transform>
459 
               <!-- ROUTE information for A5TRANS node:  [from A5Mover.value_changed to set_translation ] -->
               <Transform DEF='A5TRANStranslation='1.25 0 0'>
460                      <Shape USE='WhiteKey'/>
461 
                    <!-- ROUTE information for A5 node:  [from touchTime to PitchA5.set_startTime ] [from touchTime to ClockA5.set_startTime ] -->
                    <TouchSensor DEF='A5description='play pitch A5'/>
462                      <Sound>
463 
                         <!-- ROUTE information for PitchA5 node:  [from A5.touchTime to set_startTime ] -->
                         <AudioClip DEF='PitchA5description='playing Pitch A5pitch='1.682'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
464                      </Sound>
465                 </Transform>
466 
               <!-- ROUTE information for As5TRANS node:  [from As5Mover.value_changed to set_translation ] -->
               <Transform DEF='As5TRANStranslation='1.375 .1 -.375'>
467                      <Shape USE='BlackKey'/>
468 
                    <!-- ROUTE information for As5 node:  [from touchTime to PitchAs5.set_startTime ] [from touchTime to ClockAs5.set_startTime ] -->
                    <TouchSensor DEF='As5description='play pitch Asharp5'/>
469                      <Sound>
470 
                         <!-- ROUTE information for PitchAs5 node:  [from As5.touchTime to set_startTime ] -->
                         <AudioClip DEF='PitchAs5description='playing Pitch As5pitch='1.782'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
471                      </Sound>
472                 </Transform>
473 
               <!-- ROUTE information for B5TRANS node:  [from B5Mover.value_changed to set_translation ] -->
               <Transform DEF='B5TRANStranslation='1.5 0 0'>
474                      <Shape USE='WhiteKey'/>
475 
                    <!-- ROUTE information for B5 node:  [from touchTime to PitchB5.set_startTime ] [from touchTime to ClockB5.set_startTime ] -->
                    <TouchSensor DEF='B5description='play pitch B5'/>
476                      <Sound>
477 
                         <!-- ROUTE information for PitchB5 node:  [from B5.touchTime to set_startTime ] -->
                         <AudioClip DEF='PitchB5description='playing Pitch B5pitch='1.888'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
478                      </Sound>
479                 </Transform>
480 
               <!-- ROUTE information for C5TRANS node:  [from C5Mover.value_changed to set_translation ] -->
               <Transform DEF='C5TRANStranslation='1.75 0 0'>
481                      <Shape USE='WhiteKey'/>
482 
                    <!-- ROUTE information for C5 node:  [from touchTime to PitchC5.set_startTime ] [from touchTime to ClockC5.set_startTime ] -->
                    <TouchSensor DEF='C5description='play pitch C5'/>
483                      <Sound>
484 
                         <!-- ROUTE information for PitchC5 node:  [from C5.touchTime to set_startTime ] [from PlayerPianoScript.playC5 to set_startTime ] -->
                         <AudioClip DEF='PitchC5description='playing Pitch C5pitch='2'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
485                      </Sound>
486                 </Transform>
487 
               <!-- ROUTE information for Cs5TRANS node:  [from Cs5Mover.value_changed to set_translation ] -->
               <Transform DEF='Cs5TRANStranslation='1.875 .1 -.375'>
488                      <Shape USE='BlackKey'/>
489 
                    <!-- ROUTE information for Cs5 node:  [from touchTime to PitchCs5.set_startTime ] [from touchTime to ClockCs5.set_startTime ] -->
                    <TouchSensor DEF='Cs5description='play pitch Csharp5'/>
490                      <Sound>
491 
                         <!-- ROUTE information for PitchCs5 node:  [from Cs5.touchTime to set_startTime ] [from PlayerPianoScript.playCs5 to set_startTime ] -->
                         <AudioClip DEF='PitchCs5description='playing Pitch Cs5pitch='2.119'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
492                      </Sound>
493                 </Transform>
494 
               <!-- ROUTE information for D5TRANS node:  [from D5Mover.value_changed to set_translation ] -->
               <Transform DEF='D5TRANStranslation='2 0 0'>
495                      <Shape USE='WhiteKey'/>
496 
                    <!-- ROUTE information for D5 node:  [from touchTime to PitchD5.set_startTime ] [from touchTime to ClockD5.set_startTime ] -->
                    <TouchSensor DEF='D5description='play pitch D5'/>
497                      <Sound>
498 
                         <!-- ROUTE information for PitchD5 node:  [from D5.touchTime to set_startTime ] [from PlayerPianoScript.playD5 to set_startTime ] -->
                         <AudioClip DEF='PitchD5description='playing Pitch D5pitch='2.245'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
499                      </Sound>
500                 </Transform>
501 
               <!-- ROUTE information for Ds5TRANS node:  [from Ds5Mover.value_changed to set_translation ] -->
               <Transform DEF='Ds5TRANStranslation='2.125 .1 -.375'>
502                      <Shape USE='BlackKey'/>
503 
                    <!-- ROUTE information for Ds5 node:  [from touchTime to PitchDs5.set_startTime ] [from touchTime to ClockDs5.set_startTime ] -->
                    <TouchSensor DEF='Ds5description='play pitch Ds5'/>
504                      <Sound>
505 
                         <!-- ROUTE information for PitchDs5 node:  [from Ds5.touchTime to set_startTime ] [from PlayerPianoScript.playDs5 to set_startTime ] -->
                         <AudioClip DEF='PitchDs5description='playing Pitch Ds5pitch='2.378'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
506                      </Sound>
507                 </Transform>
508 
               <!-- ROUTE information for E5TRANS node:  [from E5Mover.value_changed to set_translation ] -->
               <Transform DEF='E5TRANStranslation='2.25 0 0'>
509                      <Shape USE='WhiteKey'/>
510 
                    <!-- ROUTE information for E5 node:  [from touchTime to PitchE5.set_startTime ] [from touchTime to ClockE5.set_startTime ] -->
                    <TouchSensor DEF='E5description='play pitch E5'/>
511                      <Sound>
512 
                         <!-- ROUTE information for PitchE5 node:  [from E5.touchTime to set_startTime ] [from PlayerPianoScript.playE5 to set_startTime ] -->
                         <AudioClip DEF='PitchE5description='playing Pitch E5pitch='2.520'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
513                      </Sound>
514                 </Transform>
515 
               <!-- ROUTE information for F5TRANS node:  [from F5Mover.value_changed to set_translation ] -->
               <Transform DEF='F5TRANStranslation='2.5 0 0'>
516                      <Shape USE='WhiteKey'/>
517 
                    <!-- ROUTE information for F5 node:  [from touchTime to PitchF5.set_startTime ] [from touchTime to ClockF5.set_startTime ] -->
                    <TouchSensor DEF='F5description='play pitch F5'/>
518                      <Sound>
519 
                         <!-- ROUTE information for PitchF5 node:  [from F5.touchTime to set_startTime ] [from PlayerPianoScript.playF5 to set_startTime ] -->
                         <AudioClip DEF='PitchF5description='playing Pitch F5pitch='2.670'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
520                      </Sound>
521                 </Transform>
522 
               <!-- ROUTE information for Fs5TRANS node:  [from Fs5Mover.value_changed to set_translation ] -->
               <Transform DEF='Fs5TRANStranslation='2.625 .1 -.375'>
523                      <Shape USE='BlackKey'/>
524 
                    <!-- ROUTE information for Fs5 node:  [from touchTime to PitchFs5.set_startTime ] [from touchTime to ClockFs5.set_startTime ] -->
                    <TouchSensor DEF='Fs5description='play pitch Fs5'/>
525                      <Sound>
526 
                         <!-- ROUTE information for PitchFs5 node:  [from Fs5.touchTime to set_startTime ] [from PlayerPianoScript.playFs5 to set_startTime ] -->
                         <AudioClip DEF='PitchFs5description='playing Pitch Fs5pitch='2.828'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
527                      </Sound>
528                 </Transform>
529 
               <!-- ROUTE information for G5TRANS node:  [from G5Mover.value_changed to set_translation ] -->
               <Transform DEF='G5TRANStranslation='2.75 0 0'>
530                      <Shape USE='WhiteKey'/>
531 
                    <!-- ROUTE information for G5 node:  [from touchTime to PitchG5.set_startTime ] [from touchTime to ClockG5.set_startTime ] -->
                    <TouchSensor DEF='G5description='play pitch G5'/>
532                      <Sound>
533 
                         <!-- ROUTE information for PitchG5 node:  [from G5.touchTime to set_startTime ] [from PlayerPianoScript.playG5 to set_startTime ] -->
                         <AudioClip DEF='PitchG5description='playing Pitch G5pitch='2.997'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
534                      </Sound>
535                 </Transform>
536 
               <!-- ROUTE information for Gs5TRANS node:  [from Gs5Mover.value_changed to set_translation ] -->
               <Transform DEF='Gs5TRANStranslation='2.875 .1 -.375'>
537                      <Shape USE='BlackKey'/>
538 
                    <!-- ROUTE information for Gs5 node:  [from touchTime to PitchGs5.set_startTime ] [from touchTime to ClockGs5.set_startTime ] -->
                    <TouchSensor DEF='Gs5description='play pitch Gs5'/>
539                      <Sound>
540 
                         <!-- ROUTE information for PitchGs5 node:  [from Gs5.touchTime to set_startTime ] [from PlayerPianoScript.playGs5 to set_startTime ] -->
                         <AudioClip DEF='PitchGs5description='playing Pitch Gs5pitch='3.175'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
541                      </Sound>
542                 </Transform>
543 
               <!-- ROUTE information for A6TRANS node:  [from A6Mover.value_changed to set_translation ] -->
               <Transform DEF='A6TRANStranslation='3 0 0'>
544                      <Shape USE='WhiteKey'/>
545 
                    <!-- ROUTE information for A6 node:  [from touchTime to PitchA6.set_startTime ] [from touchTime to ClockA6.set_startTime ] -->
                    <TouchSensor DEF='A6description='play pitch A6'/>
546                      <Sound>
547 
                         <!-- ROUTE information for PitchA6 node:  [from A6.touchTime to set_startTime ] [from PlayerPianoScript.playA6 to set_startTime ] -->
                         <AudioClip DEF='PitchA6description='playing Pitch A6pitch='3.364'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
548                      </Sound>
549                 </Transform>
550 
               <!-- ROUTE information for As6TRANS node:  [from As6Mover.value_changed to set_translation ] -->
               <Transform DEF='As6TRANStranslation='3.125 .1 -.375'>
551                      <Shape USE='BlackKey'/>
552 
                    <!-- ROUTE information for As6 node:  [from touchTime to PitchAs6.set_startTime ] [from touchTime to ClockAs6.set_startTime ] -->
                    <TouchSensor DEF='As6description='play pitch As6'/>
553                      <Sound>
554 
                         <!-- ROUTE information for PitchAs6 node:  [from As6.touchTime to set_startTime ] [from PlayerPianoScript.playAs6 to set_startTime ] -->
                         <AudioClip DEF='PitchAs6description='playing Pitch As6pitch='3.564'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
555                      </Sound>
556                 </Transform>
557 
               <!-- ROUTE information for B6TRANS node:  [from B6Mover.value_changed to set_translation ] -->
               <Transform DEF='B6TRANStranslation='3.25 0 0'>
558                      <Shape USE='WhiteKey'/>
559 
                    <!-- ROUTE information for B6 node:  [from touchTime to PitchB6.set_startTime ] [from touchTime to ClockB6.set_startTime ] -->
                    <TouchSensor DEF='B6description='play pitch B6'/>
560                      <Sound>
561 
                         <!-- ROUTE information for PitchB6 node:  [from B6.touchTime to set_startTime ] [from PlayerPianoScript.playB6 to set_startTime ] -->
                         <AudioClip DEF='PitchB6description='playing Pitch B6pitch='3.775'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
562                      </Sound>
563                 </Transform>
564 
               <!-- ROUTE information for C6TRANS node:  [from C6Mover.value_changed to set_translation ] -->
               <Transform DEF='C6TRANStranslation='3.5 0 0'>
565                      <Shape USE='WhiteKey'/>
566 
                    <!-- ROUTE information for C6 node:  [from touchTime to PitchC6.set_startTime ] [from touchTime to ClockC6.set_startTime ] -->
                    <TouchSensor DEF='C6description='play pitch C6'/>
567                      <Sound>
568 
                         <!-- ROUTE information for PitchC6 node:  [from C6.touchTime to set_startTime ] [from PlayerPianoScript.playC6 to set_startTime ] -->
                         <AudioClip DEF='PitchC6description='playing Pitch C6pitch='4'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
569                      </Sound>
570                 </Transform>
571 
               <!-- ROUTE information for Cs6TRANS node:  [from Cs6Mover.value_changed to set_translation ] -->
               <Transform DEF='Cs6TRANStranslation='3.625 .1 -.375'>
572                      <Shape USE='BlackKey'/>
573 
                    <!-- ROUTE information for Cs6 node:  [from touchTime to PitchCs6.set_startTime ] [from touchTime to ClockCs6.set_startTime ] -->
                    <TouchSensor DEF='Cs6description='play pitch Cs6'/>
574                      <Sound>
575 
                         <!-- ROUTE information for PitchCs6 node:  [from Cs6.touchTime to set_startTime ] [from PlayerPianoScript.playCs6 to set_startTime ] -->
                         <AudioClip DEF='PitchCs6description='playing Pitch Cs6pitch='4.238'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
576                      </Sound>
577                 </Transform>
578 
               <!-- ROUTE information for D6TRANS node:  [from D6Mover.value_changed to set_translation ] -->
               <Transform DEF='D6TRANStranslation='3.75 0 0'>
579                      <Shape USE='WhiteKey'/>
580 
                    <!-- ROUTE information for D6 node:  [from touchTime to PitchD6.set_startTime ] [from touchTime to ClockD6.set_startTime ] -->
                    <TouchSensor DEF='D6description='play pitch D6'/>
581                      <Sound>
582 
                         <!-- ROUTE information for PitchD6 node:  [from D6.touchTime to set_startTime ] [from PlayerPianoScript.playD6 to set_startTime ] -->
                         <AudioClip DEF='PitchD6description='playing Pitch D6pitch='4.49'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
583                      </Sound>
584                 </Transform>
585 
               <!-- ROUTE information for Ds6TRANS node:  [from Ds6Mover.value_changed to set_translation ] -->
               <Transform DEF='Ds6TRANStranslation='3.875 .1 -.375'>
586                      <Shape USE='BlackKey'/>
587 
                    <!-- ROUTE information for Ds6 node:  [from touchTime to PitchDs6.set_startTime ] [from touchTime to ClockDs6.set_startTime ] -->
                    <TouchSensor DEF='Ds6description='play pitch Ds6'/>
588                      <Sound>
589 
                         <!-- ROUTE information for PitchDs6 node:  [from Ds6.touchTime to set_startTime ] [from PlayerPianoScript.playDs6 to set_startTime ] -->
                         <AudioClip DEF='PitchDs6description='playing Pitch Ds6pitch='4.757'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
590                      </Sound>
591                 </Transform>
592 
               <!-- ROUTE information for E6TRANS node:  [from E6Mover.value_changed to set_translation ] -->
               <Transform DEF='E6TRANStranslation='4 0 0'>
593                      <Shape USE='WhiteKey'/>
594 
                    <!-- ROUTE information for E6 node:  [from touchTime to PitchE6.set_startTime ] [from touchTime to ClockE6.set_startTime ] -->
                    <TouchSensor DEF='E6description='play pitch E6'/>
595                      <Sound>
596 
                         <!-- ROUTE information for PitchE6 node:  [from E6.touchTime to set_startTime ] [from PlayerPianoScript.playE6 to set_startTime ] -->
                         <AudioClip DEF='PitchE6description='playing Pitch E6pitch='5.04'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
597                      </Sound>
598                 </Transform>
599 
               <!-- ROUTE information for F6TRANS node:  [from F6Mover.value_changed to set_translation ] -->
               <Transform DEF='F6TRANStranslation='4.25 0 0'>
600                      <Shape USE='WhiteKey'/>
601 
                    <!-- ROUTE information for F6 node:  [from touchTime to PitchF6.set_startTime ] [from touchTime to ClockF6.set_startTime ] -->
                    <TouchSensor DEF='F6description='play pitch F6'/>
602                      <Sound>
603 
                         <!-- ROUTE information for PitchF6 node:  [from F6.touchTime to set_startTime ] [from PlayerPianoScript.playF6 to set_startTime ] -->
                         <AudioClip DEF='PitchF6description='playing Pitch F6pitch='5.339'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
604                      </Sound>
605                 </Transform>
606 
               <!-- ROUTE information for Fs6TRANS node:  [from Fs6Mover.value_changed to set_translation ] -->
               <Transform DEF='Fs6TRANStranslation='4.375 .1 -.375'>
607                      <Shape USE='BlackKey'/>
608 
                    <!-- ROUTE information for Fs6 node:  [from touchTime to PitchFs6.set_startTime ] [from touchTime to ClockFs6.set_startTime ] -->
                    <TouchSensor DEF='Fs6description='play pitch Fs6'/>
609                      <Sound>
610 
                         <!-- ROUTE information for PitchFs6 node:  [from Fs6.touchTime to set_startTime ] [from PlayerPianoScript.playFs6 to set_startTime ] -->
                         <AudioClip DEF='PitchFs6description='playing Pitch Fs6pitch='5.657'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
611                      </Sound>
612                 </Transform>
613 
               <!-- ROUTE information for G6TRANS node:  [from G6Mover.value_changed to set_translation ] -->
               <Transform DEF='G6TRANStranslation='4.5 0 0'>
614                      <Shape USE='WhiteKey'/>
615 
                    <!-- ROUTE information for G6 node:  [from touchTime to PitchG6.set_startTime ] [from touchTime to ClockG6.set_startTime ] -->
                    <TouchSensor DEF='G6description='play pitch G6'/>
616                      <Sound>
617 
                         <!-- ROUTE information for PitchG6 node:  [from G6.touchTime to set_startTime ] [from PlayerPianoScript.playG6 to set_startTime ] -->
                         <AudioClip DEF='PitchG6description='playing Pitch G6pitch='5.993'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
618                      </Sound>
619                 </Transform>
620 
               <!-- ROUTE information for Gs6TRANS node:  [from Gs6Mover.value_changed to set_translation ] -->
               <Transform DEF='Gs6TRANStranslation='4.625 .1 -.375'>
621                      <Shape USE='BlackKey'/>
622 
                    <!-- ROUTE information for Gs6 node:  [from touchTime to PitchGs6.set_startTime ] [from touchTime to ClockGs6.set_startTime ] -->
                    <TouchSensor DEF='Gs6description='play pitch Gs6'/>
623                      <Sound>
624 
                         <!-- ROUTE information for PitchGs6 node:  [from Gs6.touchTime to set_startTime ] [from PlayerPianoScript.playGs6 to set_startTime ] -->
                         <AudioClip DEF='PitchGs6description='playing Pitch Gs6pitch='6.35'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
625                      </Sound>
626                 </Transform>
627 
               <!-- ROUTE information for A7TRANS node:  [from A7Mover.value_changed to set_translation ] -->
               <Transform DEF='A7TRANStranslation='4.75 0 0'>
628                      <Shape USE='WhiteKey'/>
629 
                    <!-- ROUTE information for A7 node:  [from touchTime to PitchA7.set_startTime ] [from touchTime to ClockA7.set_startTime ] -->
                    <TouchSensor DEF='A7description='play pitch A7'/>
630                      <Sound>
631 
                         <!-- ROUTE information for PitchA7 node:  [from A7.touchTime to set_startTime ] [from PlayerPianoScript.playA7 to set_startTime ] -->
                         <AudioClip DEF='PitchA7description='playing Pitch A7pitch='6.727'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
632                      </Sound>
633                 </Transform>
634 
               <!-- ROUTE information for As7TRANS node:  [from As7Mover.value_changed to set_translation ] -->
               <Transform DEF='As7TRANStranslation='4.875 .1 -.375'>
635                      <Shape USE='BlackKey'/>
636 
                    <!-- ROUTE information for As7 node:  [from touchTime to PitchAs7.set_startTime ] [from touchTime to ClockAs7.set_startTime ] -->
                    <TouchSensor DEF='As7description='play pitch As7'/>
637                      <Sound>
638 
                         <!-- ROUTE information for PitchAs7 node:  [from As7.touchTime to set_startTime ] [from PlayerPianoScript.playAs7 to set_startTime ] -->
                         <AudioClip DEF='PitchAs7description='playing Pitch As7pitch='7.127'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
639                      </Sound>
640                 </Transform>
641 
               <!-- ROUTE information for B7TRANS node:  [from B7Mover.value_changed to set_translation ] -->
               <Transform DEF='B7TRANStranslation='5 0 0'>
642                      <Shape USE='WhiteKey'/>
643 
                    <!-- ROUTE information for B7 node:  [from touchTime to PitchB7.set_startTime ] [from touchTime to ClockB7.set_startTime ] -->
                    <TouchSensor DEF='B7description='play pitch B7'/>
644                      <Sound>
645 
                         <!-- ROUTE information for PitchB7 node:  [from B7.touchTime to set_startTime ] [from PlayerPianoScript.playB7 to set_startTime ] -->
                         <AudioClip DEF='PitchB7description='playing Pitch B7pitch='7.551'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
646                      </Sound>
647                 </Transform>
648 
               <!-- ROUTE information for C7TRANS node:  [from C7Mover.value_changed to set_translation ] -->
               <Transform DEF='C7TRANStranslation='5.25 0 0'>
649                      <Shape USE='WhiteKey'/>
650 
                    <!-- ROUTE information for C7 node:  [from touchTime to PitchC7.set_startTime ] [from touchTime to ClockC7.set_startTime ] -->
                    <TouchSensor DEF='C7description='play pitch C7'/>
651                      <Sound>
652 
                         <!-- ROUTE information for PitchC7 node:  [from C7.touchTime to set_startTime ] [from PlayerPianoScript.playC7 to set_startTime ] -->
                         <AudioClip DEF='PitchC7description='playing Pitch C7pitch='8'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
653                      </Sound>
654                 </Transform>
655 
               <!-- ROUTE information for Cs7TRANS node:  [from Cs7Mover.value_changed to set_translation ] -->
               <Transform DEF='Cs7TRANStranslation='5.375 .1 -.375'>
656                      <Shape USE='BlackKey'/>
657 
                    <!-- ROUTE information for Cs7 node:  [from touchTime to PitchCs7.set_startTime ] [from touchTime to ClockCs7.set_startTime ] -->
                    <TouchSensor DEF='Cs7description='play pitch Cs7'/>
658                      <Sound>
659 
                         <!-- ROUTE information for PitchCs7 node:  [from Cs7.touchTime to set_startTime ] [from PlayerPianoScript.playCs7 to set_startTime ] -->
                         <AudioClip DEF='PitchCs7description='playing Pitch Cs7pitch='8.476'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
660                      </Sound>
661                 </Transform>
662 
               <!-- ROUTE information for D7TRANS node:  [from D7Mover.value_changed to set_translation ] -->
               <Transform DEF='D7TRANStranslation='5.5 0 0'>
663                      <Shape USE='WhiteKey'/>
664 
                    <!-- ROUTE information for D7 node:  [from touchTime to PitchD7.set_startTime ] [from touchTime to ClockD7.set_startTime ] -->
                    <TouchSensor DEF='D7description='play pitch D7'/>
665                      <Sound>
666 
                         <!-- ROUTE information for PitchD7 node:  [from D7.touchTime to set_startTime ] [from PlayerPianoScript.playD7 to set_startTime ] -->
                         <AudioClip DEF='PitchD7description='playing Pitch D7pitch='8.980'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
667                      </Sound>
668                 </Transform>
669 
               <!-- ROUTE information for Ds7TRANS node:  [from Ds7Mover.value_changed to set_translation ] -->
               <Transform DEF='Ds7TRANStranslation='5.625 .1 -.375'>
670                      <Shape USE='BlackKey'/>
671 
                    <!-- ROUTE information for Ds7 node:  [from touchTime to PitchDs7.set_startTime ] [from touchTime to ClockDs7.set_startTime ] -->
                    <TouchSensor DEF='Ds7description='play pitch Ds7'/>
672                      <Sound>
673 
                         <!-- ROUTE information for PitchDs7 node:  [from Ds7.touchTime to set_startTime ] [from PlayerPianoScript.playDs7 to set_startTime ] -->
                         <AudioClip DEF='PitchDs7description='playing Pitch Ds7pitch='9.514'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
674                      </Sound>
675                 </Transform>
676 
               <!-- ROUTE information for E7TRANS node:  [from E7Mover.value_changed to set_translation ] -->
               <Transform DEF='E7TRANStranslation='5.75 0 0'>
677                      <Shape USE='WhiteKey'/>
678 
                    <!-- ROUTE information for E7 node:  [from touchTime to PitchE7.set_startTime ] [from touchTime to ClockE7.set_startTime ] -->
                    <TouchSensor DEF='E7description='play pitch E7'/>
679                      <Sound>
680 
                         <!-- ROUTE information for PitchE7 node:  [from E7.touchTime to set_startTime ] [from PlayerPianoScript.playE7 to set_startTime ] -->
                         <AudioClip DEF='PitchE7description='playing Pitch E7pitch='10.079'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
681                      </Sound>
682                 </Transform>
683 
               <!-- ROUTE information for F7TRANS node:  [from F7Mover.value_changed to set_translation ] -->
               <Transform DEF='F7TRANStranslation='6 0 0'>
684                      <Shape USE='WhiteKey'/>
685 
                    <!-- ROUTE information for F7 node:  [from touchTime to PitchF7.set_startTime ] [from touchTime to ClockF7.set_startTime ] -->
                    <TouchSensor DEF='F7description='play pitch F7'/>
686                      <Sound>
687 
                         <!-- ROUTE information for PitchF7 node:  [from F7.touchTime to set_startTime ] [from PlayerPianoScript.playF7 to set_startTime ] -->
                         <AudioClip DEF='PitchF7description='playing Pitch F7pitch='10.679'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
688                      </Sound>
689                 </Transform>
690 
               <!-- ROUTE information for Fs7TRANS node:  [from Fs7Mover.value_changed to set_translation ] -->
               <Transform DEF='Fs7TRANStranslation='6.125 .1 -.375'>
691                      <Shape USE='BlackKey'/>
692 
                    <!-- ROUTE information for Fs7 node:  [from touchTime to PitchFs7.set_startTime ] [from touchTime to ClockFs7.set_startTime ] -->
                    <TouchSensor DEF='Fs7description='play pitch Fs7'/>
693                      <Sound>
694 
                         <!-- ROUTE information for PitchFs7 node:  [from Fs7.touchTime to set_startTime ] [from PlayerPianoScript.playFs7 to set_startTime ] -->
                         <AudioClip DEF='PitchFs7description='playing Pitch Fs7pitch='11.314'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
695                      </Sound>
696                 </Transform>
697 
               <!-- ROUTE information for G7TRANS node:  [from G7Mover.value_changed to set_translation ] -->
               <Transform DEF='G7TRANStranslation='6.25 0 0'>
698                      <Shape USE='WhiteKey'/>
699 
                    <!-- ROUTE information for G7 node:  [from touchTime to PitchG7.set_startTime ] [from touchTime to ClockG7.set_startTime ] -->
                    <TouchSensor DEF='G7description='play pitch G7'/>
700                      <Sound>
701 
                         <!-- ROUTE information for PitchG7 node:  [from G7.touchTime to set_startTime ] [from PlayerPianoScript.playG7 to set_startTime ] -->
                         <AudioClip DEF='PitchG7description='playing Pitch G7pitch='11.986'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
702                      </Sound>
703                 </Transform>
704 
               <!-- ROUTE information for Gs7TRANS node:  [from Gs7Mover.value_changed to set_translation ] -->
               <Transform DEF='Gs7TRANStranslation='6.375 .1 -.375'>
705                      <Shape USE='BlackKey'/>
706 
                    <!-- ROUTE information for Gs7 node:  [from touchTime to PitchGs7.set_startTime ] [from touchTime to ClockGs7.set_startTime ] -->
                    <TouchSensor DEF='Gs7description='play pitch Gs7'/>
707                      <Sound>
708 
                         <!-- ROUTE information for PitchGs7 node:  [from Gs7.touchTime to set_startTime ] [from PlayerPianoScript.playGs7 to set_startTime ] -->
                         <AudioClip DEF='PitchGs7description='playing Pitch Gs7pitch='12.699'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
709                      </Sound>
710                 </Transform>
711 
               <!-- ROUTE information for A8TRANS node:  [from A8Mover.value_changed to set_translation ] -->
               <Transform DEF='A8TRANStranslation='6.5 0 0'>
712                      <Shape USE='WhiteKey'/>
713 
                    <!-- ROUTE information for A8 node:  [from touchTime to PitchA8.set_startTime ] [from touchTime to ClockA8.set_startTime ] -->
                    <TouchSensor DEF='A8description='play pitch A8'/>
714                      <Sound>
715 
                         <!-- ROUTE information for PitchA8 node:  [from A8.touchTime to set_startTime ] [from PlayerPianoScript.playA8 to set_startTime ] -->
                         <AudioClip DEF='PitchA8description='playing Pitch A8pitch='13.454'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
716                      </Sound>
717                 </Transform>
718 
               <!-- ROUTE information for As8TRANS node:  [from As8Mover.value_changed to set_translation ] -->
               <Transform DEF='As8TRANStranslation='6.625 .1 -.375'>
719                      <Shape USE='BlackKey'/>
720 
                    <!-- ROUTE information for As8 node:  [from touchTime to PitchAs8.set_startTime ] [from touchTime to ClockAs8.set_startTime ] -->
                    <TouchSensor DEF='As8description='play pitch As8'/>
721                      <Sound>
722 
                         <!-- ROUTE information for PitchAs8 node:  [from As8.touchTime to set_startTime ] [from PlayerPianoScript.playAs8 to set_startTime ] -->
                         <AudioClip DEF='PitchAs8description='playing Pitch As8pitch='14.254'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
723                      </Sound>
724                 </Transform>
725 
               <!-- ROUTE information for B8TRANS node:  [from B8Mover.value_changed to set_translation ] -->
               <Transform DEF='B8TRANStranslation='6.75 0 0'>
726                      <Shape USE='WhiteKey'/>
727 
                    <!-- ROUTE information for B8 node:  [from touchTime to PitchB8.set_startTime ] [from touchTime to ClockB8.set_startTime ] -->
                    <TouchSensor DEF='B8description='play pitch B8'/>
728                      <Sound>
729 
                         <!-- ROUTE information for PitchB8 node:  [from B8.touchTime to set_startTime ] [from PlayerPianoScript.playB8 to set_startTime ] -->
                         <AudioClip DEF='PitchB8description='playing Pitch B8pitch='15.102'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
730                      </Sound>
731                 </Transform>
732 
               <!-- ROUTE information for C8TRANS node:  [from C8Mover.value_changed to set_translation ] -->
               <Transform DEF='C8TRANStranslation='7 0 0'>
733                      <Shape USE='WhiteKey'/>
734 
                    <!-- ROUTE information for C8 node:  [from touchTime to PitchC8.set_startTime ] [from touchTime to ClockC8.set_startTime ] -->
                    <TouchSensor DEF='C8description='play pitch C8'/>
735                      <Sound>
736 
                         <!-- ROUTE information for PitchC8 node:  [from C8.touchTime to set_startTime ] [from PlayerPianoScript.playC8 to set_startTime ] -->
                         <AudioClip DEF='PitchC8description='playing Pitch C8pitch='16'   url=' "tone1.wav" "../../Vrml2Sourcebook/Chapter24-Sound/tone1.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/tone1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter24-Sound/tone1.wav" '/>
737                      </Sound>
738                 </Transform>
739                 <Transform scale='.25 .25 .25translation='0 1 -2'>
740                      <Shape>
741                           <Sphere/>
742                           <Appearance>
743                                <Material diffuseColor='1 0 0'/>
744                           </Appearance>
745                      </Shape>
746 
                    <!-- ROUTE information for StartPlaying node:  [from touchTime to PlayerPianoScript.playScriptedNotes ] -->
                    <TouchSensor DEF='StartPlayingdescription='Touch to Activate Player Piano Script'/>
747                 </Transform>
748 
               <!-- ROUTE information for ClockA0 node:  [from A0.touchTime to set_startTime ] [from PlayerPianoScript.playA0 to set_startTime ] [from fraction_changed to A0Mover.set_fraction ] -->
               <TimeSensor DEF='ClockA0'/>
749 
               <!-- ROUTE information for ClockAs0 node:  [from As0.touchTime to set_startTime ] [from PlayerPianoScript.playAs0 to set_startTime ] [from fraction_changed to As0Mover.set_fraction ] -->
               <TimeSensor DEF='ClockAs0'/>
750 
               <!-- ROUTE information for ClockB0 node:  [from B0.touchTime to set_startTime ] [from PlayerPianoScript.playB0 to set_startTime ] [from fraction_changed to B0Mover.set_fraction ] -->
               <TimeSensor DEF='ClockB0'/>
751 
               <!-- ROUTE information for ClockC0 node:  [from C0.touchTime to set_startTime ] [from PlayerPianoScript.playC0 to set_startTime ] [from fraction_changed to C0Mover.set_fraction ] -->
               <TimeSensor DEF='ClockC0'/>
752 
               <!-- ROUTE information for ClockCs0 node:  [from Cs0.touchTime to set_startTime ] [from PlayerPianoScript.playCs0 to set_startTime ] [from fraction_changed to Cs0Mover.set_fraction ] -->
               <TimeSensor DEF='ClockCs0'/>
753 
               <!-- ROUTE information for ClockD0 node:  [from D0.touchTime to set_startTime ] [from PlayerPianoScript.playD0 to set_startTime ] [from fraction_changed to D0Mover.set_fraction ] -->
               <TimeSensor DEF='ClockD0'/>
754 
               <!-- ROUTE information for ClockDs0 node:  [from Ds0.touchTime to set_startTime ] [from PlayerPianoScript.playDs0 to set_startTime ] [from fraction_changed to Ds0Mover.set_fraction ] -->
               <TimeSensor DEF='ClockDs0'/>
755 
               <!-- ROUTE information for ClockE0 node:  [from E0.touchTime to set_startTime ] [from PlayerPianoScript.playE0 to set_startTime ] [from fraction_changed to E0Mover.set_fraction ] -->
               <TimeSensor DEF='ClockE0'/>
756 
               <!-- ROUTE information for ClockF0 node:  [from F0.touchTime to set_startTime ] [from PlayerPianoScript.playF0 to set_startTime ] [from fraction_changed to F0Mover.set_fraction ] -->
               <TimeSensor DEF='ClockF0'/>
757 
               <!-- ROUTE information for ClockFs0 node:  [from Fs0.touchTime to set_startTime ] [from PlayerPianoScript.playFs0 to set_startTime ] [from fraction_changed to Fs0Mover.set_fraction ] -->
               <TimeSensor DEF='ClockFs0'/>
758 
               <!-- ROUTE information for ClockG0 node:  [from G0.touchTime to set_startTime ] [from PlayerPianoScript.playG0 to set_startTime ] [from fraction_changed to G0Mover.set_fraction ] -->
               <TimeSensor DEF='ClockG0'/>
759 
               <!-- ROUTE information for ClockGs0 node:  [from Gs0.touchTime to set_startTime ] [from PlayerPianoScript.playGs0 to set_startTime ] [from fraction_changed to Gs0Mover.set_fraction ] -->
               <TimeSensor DEF='ClockGs0'/>
760 
               <!-- ROUTE information for ClockAs1 node:  [from As1.touchTime to set_startTime ] [from PlayerPianoScript.playAs1 to set_startTime ] [from fraction_changed to As1Mover.set_fraction ] -->
               <TimeSensor DEF='ClockAs1'/>
761 
               <!-- ROUTE information for ClockB1 node:  [from B1.touchTime to set_startTime ] [from PlayerPianoScript.playB1 to set_startTime ] [from fraction_changed to B1Mover.set_fraction ] -->
               <TimeSensor DEF='ClockB1'/>
762 
               <!-- ROUTE information for ClockC1 node:  [from C1.touchTime to set_startTime ] [from PlayerPianoScript.playC1 to set_startTime ] [from fraction_changed to C1Mover.set_fraction ] -->
               <TimeSensor DEF='ClockC1'/>
763 
               <!-- ROUTE information for ClockCs1 node:  [from Cs1.touchTime to set_startTime ] [from PlayerPianoScript.playCs1 to set_startTime ] [from fraction_changed to Cs1Mover.set_fraction ] -->
               <TimeSensor DEF='ClockCs1'/>
764 
               <!-- ROUTE information for ClockD1 node:  [from D1.touchTime to set_startTime ] [from PlayerPianoScript.playD1 to set_startTime ] [from fraction_changed to D1Mover.set_fraction ] -->
               <TimeSensor DEF='ClockD1'/>
765 
               <!-- ROUTE information for ClockDs1 node:  [from Ds1.touchTime to set_startTime ] [from PlayerPianoScript.playDs1 to set_startTime ] [from fraction_changed to Ds1Mover.set_fraction ] -->
               <TimeSensor DEF='ClockDs1'/>
766 
               <!-- ROUTE information for ClockE1 node:  [from E1.touchTime to set_startTime ] [from PlayerPianoScript.playE1 to set_startTime ] [from fraction_changed to E1Mover.set_fraction ] -->
               <TimeSensor DEF='ClockE1'/>
767 
               <!-- ROUTE information for ClockF1 node:  [from F1.touchTime to set_startTime ] [from PlayerPianoScript.playF1 to set_startTime ] [from fraction_changed to F1Mover.set_fraction ] -->
               <TimeSensor DEF='ClockF1'/>
768 
               <!-- ROUTE information for ClockFs1 node:  [from Fs1.touchTime to set_startTime ] [from PlayerPianoScript.playFs1 to set_startTime ] [from fraction_changed to Fs1Mover.set_fraction ] -->
               <TimeSensor DEF='ClockFs1'/>
769 
               <!-- ROUTE information for ClockG1 node:  [from G1.touchTime to set_startTime ] [from PlayerPianoScript.playG1 to set_startTime ] [from fraction_changed to G1Mover.set_fraction ] -->
               <TimeSensor DEF='ClockG1'/>
770 
               <!-- ROUTE information for ClockGs1 node:  [from Gs1.touchTime to set_startTime ] [from PlayerPianoScript.playGs1 to set_startTime ] [from fraction_changed to Gs1Mover.set_fraction ] -->
               <TimeSensor DEF='ClockGs1'/>
771 
               <!-- ROUTE information for ClockA1 node:  [from A1.touchTime to set_startTime ] [from PlayerPianoScript.playA1 to set_startTime ] [from fraction_changed to A1Mover.set_fraction ] -->
               <TimeSensor DEF='ClockA1'/>
772 
               <!-- ROUTE information for ClockA2 node:  [from A2.touchTime to set_startTime ] [from PlayerPianoScript.playA2 to set_startTime ] [from fraction_changed to A2Mover.set_fraction ] -->
               <TimeSensor DEF='ClockA2'/>
773 
               <!-- ROUTE information for ClockAs2 node:  [from As2.touchTime to set_startTime ] [from PlayerPianoScript.playAs2 to set_startTime ] [from fraction_changed to As2Mover.set_fraction ] -->
               <TimeSensor DEF='ClockAs2'/>
774 
               <!-- ROUTE information for ClockB2 node:  [from B2.touchTime to set_startTime ] [from PlayerPianoScript.playB2 to set_startTime ] [from fraction_changed to B2Mover.set_fraction ] -->
               <TimeSensor DEF='ClockB2'/>
775 
               <!-- ROUTE information for ClockC2 node:  [from C2.touchTime to set_startTime ] [from PlayerPianoScript.playC2 to set_startTime ] [from fraction_changed to C2Mover.set_fraction ] -->
               <TimeSensor DEF='ClockC2'/>
776 
               <!-- ROUTE information for ClockCs2 node:  [from Cs2.touchTime to set_startTime ] [from PlayerPianoScript.playCs2 to set_startTime ] [from fraction_changed to Cs2Mover.set_fraction ] -->
               <TimeSensor DEF='ClockCs2'/>
777 
               <!-- ROUTE information for ClockD2 node:  [from D2.touchTime to set_startTime ] [from PlayerPianoScript.playD2 to set_startTime ] [from fraction_changed to D2Mover.set_fraction ] -->
               <TimeSensor DEF='ClockD2'/>
778 
               <!-- ROUTE information for ClockDs2 node:  [from Ds2.touchTime to set_startTime ] [from PlayerPianoScript.playDs2 to set_startTime ] [from fraction_changed to Ds2Mover.set_fraction ] -->
               <TimeSensor DEF='ClockDs2'/>
779 
               <!-- ROUTE information for ClockE2 node:  [from E2.touchTime to set_startTime ] [from PlayerPianoScript.playE2 to set_startTime ] [from fraction_changed to E2Mover.set_fraction ] -->
               <TimeSensor DEF='ClockE2'/>
780 
               <!-- ROUTE information for ClockF2 node:  [from F2.touchTime to set_startTime ] [from PlayerPianoScript.playF2 to set_startTime ] [from fraction_changed to F2Mover.set_fraction ] -->
               <TimeSensor DEF='ClockF2'/>
781 
               <!-- ROUTE information for ClockFs2 node:  [from Fs2.touchTime to set_startTime ] [from PlayerPianoScript.playFs2 to set_startTime ] [from fraction_changed to Fs2Mover.set_fraction ] -->
               <TimeSensor DEF='ClockFs2'/>
782 
               <!-- ROUTE information for ClockG2 node:  [from G2.touchTime to set_startTime ] [from PlayerPianoScript.playG2 to set_startTime ] [from fraction_changed to G2Mover.set_fraction ] -->
               <TimeSensor DEF='ClockG2'/>
783 
               <!-- ROUTE information for ClockGs2 node:  [from Gs2.touchTime to set_startTime ] [from PlayerPianoScript.playGs2 to set_startTime ] [from fraction_changed to Gs2Mover.set_fraction ] -->
               <TimeSensor DEF='ClockGs2'/>
784 
               <!-- ROUTE information for ClockA3 node:  [from A3.touchTime to set_startTime ] [from PlayerPianoScript.playA3 to set_startTime ] [from fraction_changed to A3Mover.set_fraction ] -->
               <TimeSensor DEF='ClockA3'/>
785 
               <!-- ROUTE information for ClockAs3 node:  [from As3.touchTime to set_startTime ] [from PlayerPianoScript.playAs3 to set_startTime ] [from fraction_changed to As3Mover.set_fraction ] -->
               <TimeSensor DEF='ClockAs3'/>
786 
               <!-- ROUTE information for ClockB3 node:  [from B3.touchTime to set_startTime ] [from PlayerPianoScript.playB3 to set_startTime ] [from fraction_changed to B3Mover.set_fraction ] -->
               <TimeSensor DEF='ClockB3'/>
787 
               <!-- ROUTE information for ClockC3 node:  [from C3.touchTime to set_startTime ] [from PlayerPianoScript.playC3 to set_startTime ] [from fraction_changed to C3Mover.set_fraction ] -->
               <TimeSensor DEF='ClockC3'/>
788 
               <!-- ROUTE information for ClockCs3 node:  [from Cs3.touchTime to set_startTime ] [from PlayerPianoScript.playCs3 to set_startTime ] [from fraction_changed to Cs3Mover.set_fraction ] -->
               <TimeSensor DEF='ClockCs3'/>
789 
               <!-- ROUTE information for ClockD3 node:  [from D3.touchTime to set_startTime ] [from PlayerPianoScript.playD3 to set_startTime ] [from fraction_changed to D3Mover.set_fraction ] -->
               <TimeSensor DEF='ClockD3'/>
790 
               <!-- ROUTE information for ClockDs3 node:  [from Ds3.touchTime to set_startTime ] [from PlayerPianoScript.playDs3 to set_startTime ] [from fraction_changed to Ds3Mover.set_fraction ] -->
               <TimeSensor DEF='ClockDs3'/>
791 
               <!-- ROUTE information for ClockE3 node:  [from E3.touchTime to set_startTime ] [from PlayerPianoScript.playE3 to set_startTime ] [from fraction_changed to E3Mover.set_fraction ] -->
               <TimeSensor DEF='ClockE3'/>
792 
               <!-- ROUTE information for ClockF3 node:  [from F3.touchTime to set_startTime ] [from PlayerPianoScript.playF3 to set_startTime ] [from fraction_changed to F3Mover.set_fraction ] -->
               <TimeSensor DEF='ClockF3'/>
793 
               <!-- ROUTE information for ClockFs3 node:  [from Fs3.touchTime to set_startTime ] [from PlayerPianoScript.playFs3 to set_startTime ] [from fraction_changed to Fs3Mover.set_fraction ] -->
               <TimeSensor DEF='ClockFs3'/>
794 
               <!-- ROUTE information for ClockG3 node:  [from G3.touchTime to set_startTime ] [from PlayerPianoScript.playG3 to set_startTime ] [from fraction_changed to G3Mover.set_fraction ] -->
               <TimeSensor DEF='ClockG3'/>
795 
               <!-- ROUTE information for ClockGs3 node:  [from Gs3.touchTime to set_startTime ] [from PlayerPianoScript.playGs3 to set_startTime ] [from fraction_changed to Gs3Mover.set_fraction ] -->
               <TimeSensor DEF='ClockGs3'/>
796 
               <!-- ROUTE information for ClockA4 node:  [from A4.touchTime to set_startTime ] [from PlayerPianoScript.playA4 to set_startTime ] [from fraction_changed to A4Mover.set_fraction ] -->
               <TimeSensor DEF='ClockA4'/>
797 
               <!-- ROUTE information for ClockAs4 node:  [from As4.touchTime to set_startTime ] [from PlayerPianoScript.playAs4 to set_startTime ] [from fraction_changed to As4Mover.set_fraction ] -->
               <TimeSensor DEF='ClockAs4'/>
798 
               <!-- ROUTE information for ClockB4 node:  [from B4.touchTime to set_startTime ] [from PlayerPianoScript.playB4 to set_startTime ] [from fraction_changed to B4Mover.set_fraction ] -->
               <TimeSensor DEF='ClockB4'/>
799 
               <!-- ROUTE information for ClockC4 node:  [from C4.touchTime to set_startTime ] [from PlayerPianoScript.playC4 to set_startTime ] [from fraction_changed to C4Mover.set_fraction ] -->
               <TimeSensor DEF='ClockC4'/>
800 
               <!-- ROUTE information for ClockCs4 node:  [from Cs4.touchTime to set_startTime ] [from PlayerPianoScript.playCs4 to set_startTime ] [from fraction_changed to Cs4Mover.set_fraction ] -->
               <TimeSensor DEF='ClockCs4'/>
801 
               <!-- ROUTE information for ClockD4 node:  [from D4.touchTime to set_startTime ] [from PlayerPianoScript.playD4 to set_startTime ] [from fraction_changed to D4Mover.set_fraction ] -->
               <TimeSensor DEF='ClockD4'/>
802 
               <!-- ROUTE information for ClockDs4 node:  [from Ds4.touchTime to set_startTime ] [from PlayerPianoScript.playDs4 to set_startTime ] [from fraction_changed to Ds4Mover.set_fraction ] -->
               <TimeSensor DEF='ClockDs4'/>
803 
               <!-- ROUTE information for ClockE4 node:  [from E4.touchTime to set_startTime ] [from PlayerPianoScript.playE4 to set_startTime ] [from fraction_changed to E4Mover.set_fraction ] -->
               <TimeSensor DEF='ClockE4'/>
804 
               <!-- ROUTE information for ClockF4 node:  [from F4.touchTime to set_startTime ] [from PlayerPianoScript.playF4 to set_startTime ] [from fraction_changed to F4Mover.set_fraction ] -->
               <TimeSensor DEF='ClockF4'/>
805 
               <!-- ROUTE information for ClockFs4 node:  [from Fs4.touchTime to set_startTime ] [from PlayerPianoScript.playFs4 to set_startTime ] [from fraction_changed to Fs4Mover.set_fraction ] -->
               <TimeSensor DEF='ClockFs4'/>
806 
               <!-- ROUTE information for ClockG4 node:  [from G4.touchTime to set_startTime ] [from PlayerPianoScript.playG4 to set_startTime ] [from fraction_changed to G4Mover.set_fraction ] -->
               <TimeSensor DEF='ClockG4'/>
807 
               <!-- ROUTE information for ClockGs4 node:  [from Gs4.touchTime to set_startTime ] [from PlayerPianoScript.playGs4 to set_startTime ] [from fraction_changed to Gs4Mover.set_fraction ] -->
               <TimeSensor DEF='ClockGs4'/>
808 
               <!-- ROUTE information for ClockA5 node:  [from A5.touchTime to set_startTime ] [from fraction_changed to A5Mover.set_fraction ] -->
               <TimeSensor DEF='ClockA5'/>
809 
               <!-- ROUTE information for ClockAs5 node:  [from As5.touchTime to set_startTime ] [from fraction_changed to As5Mover.set_fraction ] -->
               <TimeSensor DEF='ClockAs5'/>
810 
               <!-- ROUTE information for ClockB5 node:  [from B5.touchTime to set_startTime ] [from PlayerPianoScript.playB5 to set_startTime ] [from fraction_changed to B5Mover.set_fraction ] -->
               <TimeSensor DEF='ClockB5'/>
811 
               <!-- ROUTE information for ClockC5 node:  [from C5.touchTime to set_startTime ] [from PlayerPianoScript.playC5 to set_startTime ] [from fraction_changed to C5Mover.set_fraction ] -->
               <TimeSensor DEF='ClockC5'/>
812 
               <!-- ROUTE information for ClockCs5 node:  [from Cs5.touchTime to set_startTime ] [from PlayerPianoScript.playCs5 to set_startTime ] [from fraction_changed to Cs5Mover.set_fraction ] -->
               <TimeSensor DEF='ClockCs5'/>
813 
               <!-- ROUTE information for ClockD5 node:  [from D5.touchTime to set_startTime ] [from PlayerPianoScript.playD5 to set_startTime ] [from fraction_changed to D5Mover.set_fraction ] -->
               <TimeSensor DEF='ClockD5'/>
814 
               <!-- ROUTE information for ClockDs5 node:  [from Ds5.touchTime to set_startTime ] [from PlayerPianoScript.playDs5 to set_startTime ] [from fraction_changed to Ds5Mover.set_fraction ] -->
               <TimeSensor DEF='ClockDs5'/>
815 
               <!-- ROUTE information for ClockE5 node:  [from E5.touchTime to set_startTime ] [from PlayerPianoScript.playE5 to set_startTime ] [from fraction_changed to E5Mover.set_fraction ] -->
               <TimeSensor DEF='ClockE5'/>
816 
               <!-- ROUTE information for ClockF5 node:  [from F5.touchTime to set_startTime ] [from PlayerPianoScript.playF5 to set_startTime ] [from fraction_changed to F5Mover.set_fraction ] -->
               <TimeSensor DEF='ClockF5'/>
817 
               <!-- ROUTE information for ClockFs5 node:  [from Fs5.touchTime to set_startTime ] [from PlayerPianoScript.playFs5 to set_startTime ] [from fraction_changed to Fs5Mover.set_fraction ] -->
               <TimeSensor DEF='ClockFs5'/>
818 
               <!-- ROUTE information for ClockG5 node:  [from G5.touchTime to set_startTime ] [from PlayerPianoScript.playG5 to set_startTime ] [from fraction_changed to G5Mover.set_fraction ] -->
               <TimeSensor DEF='ClockG5'/>
819 
               <!-- ROUTE information for ClockGs5 node:  [from Gs5.touchTime to set_startTime ] [from PlayerPianoScript.playGs5 to set_startTime ] [from fraction_changed to Gs5Mover.set_fraction ] -->
               <TimeSensor DEF='ClockGs5'/>
820 
               <!-- ROUTE information for ClockA6 node:  [from A6.touchTime to set_startTime ] [from PlayerPianoScript.playA6 to set_startTime ] [from fraction_changed to A6Mover.set_fraction ] -->
               <TimeSensor DEF='ClockA6'/>
821 
               <!-- ROUTE information for ClockAs6 node:  [from As6.touchTime to set_startTime ] [from PlayerPianoScript.playAs6 to set_startTime ] [from fraction_changed to As6Mover.set_fraction ] -->
               <TimeSensor DEF='ClockAs6'/>
822 
               <!-- ROUTE information for ClockB6 node:  [from B6.touchTime to set_startTime ] [from PlayerPianoScript.playB6 to set_startTime ] [from fraction_changed to B6Mover.set_fraction ] -->
               <TimeSensor DEF='ClockB6'/>
823 
               <!-- ROUTE information for ClockC6 node:  [from C6.touchTime to set_startTime ] [from PlayerPianoScript.playC6 to set_startTime ] [from fraction_changed to C6Mover.set_fraction ] -->
               <TimeSensor DEF='ClockC6'/>
824 
               <!-- ROUTE information for ClockCs6 node:  [from Cs6.touchTime to set_startTime ] [from PlayerPianoScript.playCs6 to set_startTime ] [from fraction_changed to Cs6Mover.set_fraction ] -->
               <TimeSensor DEF='ClockCs6'/>
825 
               <!-- ROUTE information for ClockD6 node:  [from D6.touchTime to set_startTime ] [from PlayerPianoScript.playD6 to set_startTime ] [from fraction_changed to D6Mover.set_fraction ] -->
               <TimeSensor DEF='ClockD6'/>
826 
               <!-- ROUTE information for ClockDs6 node:  [from Ds6.touchTime to set_startTime ] [from PlayerPianoScript.playDs6 to set_startTime ] [from fraction_changed to Ds6Mover.set_fraction ] -->
               <TimeSensor DEF='ClockDs6'/>
827 
               <!-- ROUTE information for ClockE6 node:  [from E6.touchTime to set_startTime ] [from PlayerPianoScript.playE6 to set_startTime ] [from fraction_changed to E6Mover.set_fraction ] -->
               <TimeSensor DEF='ClockE6'/>
828 
               <!-- ROUTE information for ClockF6 node:  [from F6.touchTime to set_startTime ] [from PlayerPianoScript.playF6 to set_startTime ] [from fraction_changed to F6Mover.set_fraction ] -->
               <TimeSensor DEF='ClockF6'/>
829 
               <!-- ROUTE information for ClockFs6 node:  [from Fs6.touchTime to set_startTime ] [from PlayerPianoScript.playFs6 to set_startTime ] [from fraction_changed to Fs6Mover.set_fraction ] -->
               <TimeSensor DEF='ClockFs6'/>
830 
               <!-- ROUTE information for ClockG6 node:  [from G6.touchTime to set_startTime ] [from PlayerPianoScript.playG6 to set_startTime ] [from fraction_changed to G6Mover.set_fraction ] -->
               <TimeSensor DEF='ClockG6'/>
831 
               <!-- ROUTE information for ClockGs6 node:  [from Gs6.touchTime to set_startTime ] [from PlayerPianoScript.playGs6 to set_startTime ] [from fraction_changed to Gs6Mover.set_fraction ] -->
               <TimeSensor DEF='ClockGs6'/>
832 
               <!-- ROUTE information for ClockA7 node:  [from A7.touchTime to set_startTime ] [from PlayerPianoScript.playA7 to set_startTime ] [from fraction_changed to A7Mover.set_fraction ] -->
               <TimeSensor DEF='ClockA7'/>
833 
               <!-- ROUTE information for ClockAs7 node:  [from As7.touchTime to set_startTime ] [from PlayerPianoScript.playAs7 to set_startTime ] [from fraction_changed to As7Mover.set_fraction ] -->
               <TimeSensor DEF='ClockAs7'/>
834 
               <!-- ROUTE information for ClockB7 node:  [from B7.touchTime to set_startTime ] [from PlayerPianoScript.playB7 to set_startTime ] [from fraction_changed to B7Mover.set_fraction ] -->
               <TimeSensor DEF='ClockB7'/>
835 
               <!-- ROUTE information for ClockC7 node:  [from C7.touchTime to set_startTime ] [from PlayerPianoScript.playC7 to set_startTime ] [from fraction_changed to C7Mover.set_fraction ] -->
               <TimeSensor DEF='ClockC7'/>
836 
               <!-- ROUTE information for ClockCs7 node:  [from Cs7.touchTime to set_startTime ] [from PlayerPianoScript.playCs7 to set_startTime ] [from fraction_changed to Cs7Mover.set_fraction ] -->
               <TimeSensor DEF='ClockCs7'/>
837 
               <!-- ROUTE information for ClockD7 node:  [from D7.touchTime to set_startTime ] [from PlayerPianoScript.playD7 to set_startTime ] [from fraction_changed to D7Mover.set_fraction ] -->
               <TimeSensor DEF='ClockD7'/>
838 
               <!-- ROUTE information for ClockDs7 node:  [from Ds7.touchTime to set_startTime ] [from PlayerPianoScript.playDs7 to set_startTime ] [from fraction_changed to Ds7Mover.set_fraction ] -->
               <TimeSensor DEF='ClockDs7'/>
839 
               <!-- ROUTE information for ClockE7 node:  [from E7.touchTime to set_startTime ] [from PlayerPianoScript.playE7 to set_startTime ] [from fraction_changed to E7Mover.set_fraction ] -->
               <TimeSensor DEF='ClockE7'/>
840 
               <!-- ROUTE information for ClockF7 node:  [from F7.touchTime to set_startTime ] [from PlayerPianoScript.playF7 to set_startTime ] [from fraction_changed to F7Mover.set_fraction ] -->
               <TimeSensor DEF='ClockF7'/>
841 
               <!-- ROUTE information for ClockFs7 node:  [from Fs7.touchTime to set_startTime ] [from PlayerPianoScript.playFs7 to set_startTime ] [from fraction_changed to Fs7Mover.set_fraction ] -->
               <TimeSensor DEF='ClockFs7'/>
842 
               <!-- ROUTE information for ClockG7 node:  [from G7.touchTime to set_startTime ] [from PlayerPianoScript.playG7 to set_startTime ] [from fraction_changed to G7Mover.set_fraction ] -->
               <TimeSensor DEF='ClockG7'/>
843 
               <!-- ROUTE information for ClockGs7 node:  [from Gs7.touchTime to set_startTime ] [from PlayerPianoScript.playGs7 to set_startTime ] [from fraction_changed to Gs7Mover.set_fraction ] -->
               <TimeSensor DEF='ClockGs7'/>
844 
               <!-- ROUTE information for ClockA8 node:  [from A8.touchTime to set_startTime ] [from PlayerPianoScript.playA8 to set_startTime ] [from fraction_changed to A8Mover.set_fraction ] -->
               <TimeSensor DEF='ClockA8'/>
845 
               <!-- ROUTE information for ClockAs8 node:  [from As8.touchTime to set_startTime ] [from PlayerPianoScript.playAs8 to set_startTime ] [from fraction_changed to As8Mover.set_fraction ] -->
               <TimeSensor DEF='ClockAs8'/>
846 
               <!-- ROUTE information for ClockB8 node:  [from B8.touchTime to set_startTime ] [from PlayerPianoScript.playB8 to set_startTime ] [from fraction_changed to B8Mover.set_fraction ] -->
               <TimeSensor DEF='ClockB8'/>
847 
               <!-- ROUTE information for ClockC8 node:  [from C8.touchTime to set_startTime ] [from PlayerPianoScript.playC8 to set_startTime ] [from fraction_changed to C8Mover.set_fraction ] -->
               <TimeSensor DEF='ClockC8'/>
848 
               <!-- 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'/>
849 
               <!-- 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'/>
850 
               <!-- 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'/>
851 
               <!-- 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'/>
852 
               <!-- 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'/>
853 
               <!-- 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'/>
854 
               <!-- 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'/>
855 
               <!-- 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'/>
856 
               <!-- 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'/>
857 
               <!-- 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'/>
858 
               <!-- 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'/>
859 
               <!-- 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'/>
860 
               <!-- 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'/>
861 
               <!-- 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'/>
862 
               <!-- 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'/>
863 
               <!-- 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'/>
864 
               <!-- 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'/>
865 
               <!-- 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'/>
866 
               <!-- 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'/>
867 
               <!-- 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'/>
868 
               <!-- 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'/>
869 
               <!-- 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'/>
870 
               <!-- 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'/>
871 
               <!-- 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'/>
872 
               <!-- 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'/>
873 
               <!-- 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'/>
874 
               <!-- 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'/>
875 
               <!-- 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'/>
876 
               <!-- 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'/>
877 
               <!-- 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'/>
878 
               <!-- 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'/>
879 
               <!-- 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'/>
880 
               <!-- 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'/>
881 
               <!-- 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'/>
882 
               <!-- 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'/>
883 
               <!-- 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'/>
884 
               <!-- 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'/>
885 
               <!-- 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'/>
886 
               <!-- 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'/>
887 
               <!-- 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'/>
888 
               <!-- 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'/>
889 
               <!-- 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'/>
890 
               <!-- 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'/>
891 
               <!-- 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'/>
892 
               <!-- 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'/>
893 
               <!-- 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'/>
894 
               <!-- 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'/>
895 
               <!-- 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'/>
896 
               <!-- 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'/>
897 
               <!-- 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'/>
898 
               <!-- 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'/>
899 
               <!-- 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'/>
900 
               <!-- 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'/>
901 
               <!-- 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'/>
902 
               <!-- 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'/>
903 
               <!-- 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'/>
904 
               <!-- 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'/>
905 
               <!-- 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'/>
906 
               <!-- 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'/>
907 
               <!-- 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'/>
908 
               <!-- 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'/>
909 
               <!-- 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'/>
910 
               <!-- 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'/>
911 
               <!-- 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'/>
912 
               <!-- 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'/>
913 
               <!-- 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'/>
914 
               <!-- 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'/>
915 
               <!-- 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'/>
916 
               <!-- 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'/>
917 
               <!-- 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'/>
918 
               <!-- 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'/>
919 
               <!-- 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'/>
920 
               <!-- 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'/>
921 
               <!-- 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'/>
922 
               <!-- 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'/>
923 
               <!-- 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'/>
924 
               <!-- 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'/>
925 
               <!-- 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'/>
926 
               <!-- 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'/>
927 
               <!-- 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'/>
928 
               <!-- 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'/>
929 
               <!-- 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'/>
930 
               <!-- 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'/>
931 
               <!-- 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'/>
932 
               <!-- 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'/>
933 
               <!-- 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'/>
934 
               <!-- 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'/>
935 
               <!-- 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'/>
936 
               <!-- 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'/>
937 
               <!-- 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'/>
938 
               <!-- 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'/>
939 
               <!-- 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'/>
940 
               <!-- 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'/>
941 
               <!-- 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'/>
942 
               <!-- 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'/>
943 
               <!-- 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'/>
944 
               <!-- 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'/>
945 
               <!-- 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'/>
946 
               <!-- 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'/>
947 
               <!-- 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'/>
948 
               <!-- 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'>
949                      <field name='playScriptedNotestype='SFTimeaccessType='inputOnly'/>
950                      <field name='playA0type='SFTimeaccessType='outputOnly'/>
951                      <field name='playAs0type='SFTimeaccessType='outputOnly'/>
952                      <field name='playB0type='SFTimeaccessType='outputOnly'/>
953                      <field name='playC0type='SFTimeaccessType='outputOnly'/>
954                      <field name='playCs0type='SFTimeaccessType='outputOnly'/>
955                      <field name='playD0type='SFTimeaccessType='outputOnly'/>
956                      <field name='playDs0type='SFTimeaccessType='outputOnly'/>
957                      <field name='playE0type='SFTimeaccessType='outputOnly'/>
958                      <field name='playF0type='SFTimeaccessType='outputOnly'/>
959                      <field name='playFs0type='SFTimeaccessType='outputOnly'/>
960                      <field name='playG0type='SFTimeaccessType='outputOnly'/>
961                      <field name='playGs0type='SFTimeaccessType='outputOnly'/>
962                      <field name='playA1type='SFTimeaccessType='outputOnly'/>
963                      <field name='playAs1type='SFTimeaccessType='outputOnly'/>
964                      <field name='playB1type='SFTimeaccessType='outputOnly'/>
965                      <field name='playC1type='SFTimeaccessType='outputOnly'/>
966                      <field name='playCs1type='SFTimeaccessType='outputOnly'/>
967                      <field name='playD1type='SFTimeaccessType='outputOnly'/>
968                      <field name='playDs1type='SFTimeaccessType='outputOnly'/>
969                      <field name='playE1type='SFTimeaccessType='outputOnly'/>
970                      <field name='playF1type='SFTimeaccessType='outputOnly'/>
971                      <field name='playFs1type='SFTimeaccessType='outputOnly'/>
972                      <field name='playG1type='SFTimeaccessType='outputOnly'/>
973                      <field name='playGs1type='SFTimeaccessType='outputOnly'/>
974                      <field name='playA2type='SFTimeaccessType='outputOnly'/>
975                      <field name='playAs2type='SFTimeaccessType='outputOnly'/>
976                      <field name='playB2type='SFTimeaccessType='outputOnly'/>
977                      <field name='playC2type='SFTimeaccessType='outputOnly'/>
978                      <field name='playCs2type='SFTimeaccessType='outputOnly'/>
979                      <field name='playD2type='SFTimeaccessType='outputOnly'/>
980                      <field name='playDs2type='SFTimeaccessType='outputOnly'/>
981                      <field name='playE2type='SFTimeaccessType='outputOnly'/>
982                      <field name='playF2type='SFTimeaccessType='outputOnly'/>
983                      <field name='playFs2type='SFTimeaccessType='outputOnly'/>
984                      <field name='playG2type='SFTimeaccessType='outputOnly'/>
985                      <field name='playGs2type='SFTimeaccessType='outputOnly'/>
986                      <field name='playA3type='SFTimeaccessType='outputOnly'/>
987                      <field name='playAs3type='SFTimeaccessType='outputOnly'/>
988                      <field name='playB3type='SFTimeaccessType='outputOnly'/>
989                      <field name='playC3type='SFTimeaccessType='outputOnly'/>
990                      <field name='playCs3type='SFTimeaccessType='outputOnly'/>
991                      <field name='playD3type='SFTimeaccessType='outputOnly'/>
992                      <field name='playDs3type='SFTimeaccessType='outputOnly'/>
993                      <field name='playE3type='SFTimeaccessType='outputOnly'/>
994                      <field name='playF3type='SFTimeaccessType='outputOnly'/>
995                      <field name='playFs3type='SFTimeaccessType='outputOnly'/>
996                      <field name='playG3type='SFTimeaccessType='outputOnly'/>
997                      <field name='playGs3type='SFTimeaccessType='outputOnly'/>
998                      <field name='playA4type='SFTimeaccessType='outputOnly'/>
999                      <field name='playAs4type='SFTimeaccessType='outputOnly'/>
1000                      <field name='playB4type='SFTimeaccessType='outputOnly'/>
1001                      <field name='playC4type='SFTimeaccessType='outputOnly'/>
1002                      <field name='playCs4type='SFTimeaccessType='outputOnly'/>
1003                      <field name='playD4type='SFTimeaccessType='outputOnly'/>
1004                      <field name='playDs4type='SFTimeaccessType='outputOnly'/>
1005                      <field name='playE4type='SFTimeaccessType='outputOnly'/>
1006                      <field name='playF4type='SFTimeaccessType='outputOnly'/>
1007                      <field name='playFs4type='SFTimeaccessType='outputOnly'/>
1008                      <field name='playG4type='SFTimeaccessType='outputOnly'/>
1009                      <field name='playGs4type='SFTimeaccessType='outputOnly'/>
1010                      <field name='playA5type='SFTimeaccessType='outputOnly'/>
1011                      <field name='playAs5type='SFTimeaccessType='outputOnly'/>
1012                      <field name='playB5type='SFTimeaccessType='outputOnly'/>
1013                      <field name='playC5type='SFTimeaccessType='outputOnly'/>
1014                      <field name='playCs5type='SFTimeaccessType='outputOnly'/>
1015                      <field name='playD5type='SFTimeaccessType='outputOnly'/>
1016                      <field name='playDs5type='SFTimeaccessType='outputOnly'/>
1017                      <field name='playE5type='SFTimeaccessType='outputOnly'/>
1018                      <field name='playF5type='SFTimeaccessType='outputOnly'/>
1019                      <field name='playFs5type='SFTimeaccessType='outputOnly'/>
1020                      <field name='playG5type='SFTimeaccessType='outputOnly'/>
1021                      <field name='playGs5type='SFTimeaccessType='outputOnly'/>
1022                      <field name='playA6type='SFTimeaccessType='outputOnly'/>
1023                      <field name='playAs6type='SFTimeaccessType='outputOnly'/>
1024                      <field name='playB6type='SFTimeaccessType='outputOnly'/>
1025                      <field name='playC6type='SFTimeaccessType='outputOnly'/>
1026                      <field name='playCs6type='SFTimeaccessType='outputOnly'/>
1027                      <field name='playD6type='SFTimeaccessType='outputOnly'/>
1028                      <field name='playDs6type='SFTimeaccessType='outputOnly'/>
1029                      <field name='playE6type='SFTimeaccessType='outputOnly'/>
1030                      <field name='playF6type='SFTimeaccessType='outputOnly'/>
1031                      <field name='playFs6type='SFTimeaccessType='outputOnly'/>
1032                      <field name='playG6type='SFTimeaccessType='outputOnly'/>
1033                      <field name='playGs6type='SFTimeaccessType='outputOnly'/>
1034                      <field name='playA7type='SFTimeaccessType='outputOnly'/>
1035                      <field name='playAs7type='SFTimeaccessType='outputOnly'/>
1036                      <field name='playB7type='SFTimeaccessType='outputOnly'/>
1037                      <field name='playC7type='SFTimeaccessType='outputOnly'/>
1038                      <field name='playCs7type='SFTimeaccessType='outputOnly'/>
1039                      <field name='playD7type='SFTimeaccessType='outputOnly'/>
1040                      <field name='playDs7type='SFTimeaccessType='outputOnly'/>
1041                      <field name='playE7type='SFTimeaccessType='outputOnly'/>
1042                      <field name='playF7type='SFTimeaccessType='outputOnly'/>
1043                      <field name='playFs7type='SFTimeaccessType='outputOnly'/>
1044                      <field name='playG7type='SFTimeaccessType='outputOnly'/>
1045                      <field name='playGs7type='SFTimeaccessType='outputOnly'/>
1046                      <field name='playA8type='SFTimeaccessType='outputOnly'/>
1047                      <field name='playAs8type='SFTimeaccessType='outputOnly'/>
1048                      <field name='playB8type='SFTimeaccessType='outputOnly'/>
1049                      <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;
}

      
]]>
1051                 </Script>
1052            </Group>
1053            < ROUTE  fromNode='StartPlaying' fromField='touchTime' toNode='PlayerPianoScript' toField='playScriptedNotes'/>
1054            < ROUTE  fromNode='A0' fromField='touchTime' toNode='PitchA1' toField='set_startTime'/>
1055            < ROUTE  fromNode='As0' fromField='touchTime' toNode='PitchAs1' toField='set_startTime'/>
1056            < ROUTE  fromNode='B0' fromField='touchTime' toNode='PitchB1' toField='set_startTime'/>
1057            < ROUTE  fromNode='C0' fromField='touchTime' toNode='PitchC1' toField='set_startTime'/>
1058            < ROUTE  fromNode='Cs0' fromField='touchTime' toNode='PitchCs1' toField='set_startTime'/>
1059            < ROUTE  fromNode='D0' fromField='touchTime' toNode='PitchD1' toField='set_startTime'/>
1060            < ROUTE  fromNode='Ds0' fromField='touchTime' toNode='PitchDs1' toField='set_startTime'/>
1061            < ROUTE  fromNode='E0' fromField='touchTime' toNode='PitchE1' toField='set_startTime'/>
1062            < ROUTE  fromNode='F0' fromField='touchTime' toNode='PitchF1' toField='set_startTime'/>
1063            < ROUTE  fromNode='Fs0' fromField='touchTime' toNode='PitchFs1' toField='set_startTime'/>
1064            < ROUTE  fromNode='G0' fromField='touchTime' toNode='PitchG1' toField='set_startTime'/>
1065            < ROUTE  fromNode='Gs0' fromField='touchTime' toNode='PitchGs1' toField='set_startTime'/>
1066            < ROUTE  fromNode='A1' fromField='touchTime' toNode='PitchA1' toField='set_startTime'/>
1067            < ROUTE  fromNode='As1' fromField='touchTime' toNode='PitchAs1' toField='set_startTime'/>
1068            < ROUTE  fromNode='B1' fromField='touchTime' toNode='PitchB1' toField='set_startTime'/>
1069            < ROUTE  fromNode='C1' fromField='touchTime' toNode='PitchC1' toField='set_startTime'/>
1070            < ROUTE  fromNode='Cs1' fromField='touchTime' toNode='PitchCs1' toField='set_startTime'/>
1071            < ROUTE  fromNode='D1' fromField='touchTime' toNode='PitchD1' toField='set_startTime'/>
1072            < ROUTE  fromNode='Ds1' fromField='touchTime' toNode='PitchDs1' toField='set_startTime'/>
1073            < ROUTE  fromNode='E1' fromField='touchTime' toNode='PitchE1' toField='set_startTime'/>
1074            < ROUTE  fromNode='F1' fromField='touchTime' toNode='PitchF1' toField='set_startTime'/>
1075            < ROUTE  fromNode='Fs1' fromField='touchTime' toNode='PitchFs1' toField='set_startTime'/>
1076            < ROUTE  fromNode='G1' fromField='touchTime' toNode='PitchG1' toField='set_startTime'/>
1077            < ROUTE  fromNode='Gs1' fromField='touchTime' toNode='PitchGs1' toField='set_startTime'/>
1078            < ROUTE  fromNode='A2' fromField='touchTime' toNode='PitchA2' toField='set_startTime'/>
1079            < ROUTE  fromNode='As2' fromField='touchTime' toNode='PitchAs2' toField='set_startTime'/>
1080            < ROUTE  fromNode='B2' fromField='touchTime' toNode='PitchB2' toField='set_startTime'/>
1081            < ROUTE  fromNode='C2' fromField='touchTime' toNode='PitchC2' toField='set_startTime'/>
1082            < ROUTE  fromNode='Cs2' fromField='touchTime' toNode='PitchCs2' toField='set_startTime'/>
1083            < ROUTE  fromNode='D2' fromField='touchTime' toNode='PitchD2' toField='set_startTime'/>
1084            < ROUTE  fromNode='Ds2' fromField='touchTime' toNode='PitchDs2' toField='set_startTime'/>
1085            < ROUTE  fromNode='E2' fromField='touchTime' toNode='PitchE2' toField='set_startTime'/>
1086            < ROUTE  fromNode='F2' fromField='touchTime' toNode='PitchF2' toField='set_startTime'/>
1087            < ROUTE  fromNode='Fs2' fromField='touchTime' toNode='PitchFs2' toField='set_startTime'/>
1088            < ROUTE  fromNode='G2' fromField='touchTime' toNode='PitchG2' toField='set_startTime'/>
1089            < ROUTE  fromNode='Gs2' fromField='touchTime' toNode='PitchGs2' toField='set_startTime'/>
1090            < ROUTE  fromNode='A3' fromField='touchTime' toNode='PitchA3' toField='set_startTime'/>
1091            < ROUTE  fromNode='As3' fromField='touchTime' toNode='PitchAs3' toField='set_startTime'/>
1092            < ROUTE  fromNode='B3' fromField='touchTime' toNode='PitchB3' toField='set_startTime'/>
1093            < ROUTE  fromNode='C3' fromField='touchTime' toNode='PitchC3' toField='set_startTime'/>
1094            < ROUTE  fromNode='Cs3' fromField='touchTime' toNode='PitchCs3' toField='set_startTime'/>
1095            < ROUTE  fromNode='D3' fromField='touchTime' toNode='PitchD3' toField='set_startTime'/>
1096            < ROUTE  fromNode='Ds3' fromField='touchTime' toNode='PitchDs3' toField='set_startTime'/>
1097            < ROUTE  fromNode='E3' fromField='touchTime' toNode='PitchE3' toField='set_startTime'/>
1098            < ROUTE  fromNode='F3' fromField='touchTime' toNode='PitchF3' toField='set_startTime'/>
1099            < ROUTE  fromNode='Fs3' fromField='touchTime' toNode='PitchFs3' toField='set_startTime'/>
1100            < ROUTE  fromNode='G3' fromField='touchTime' toNode='PitchG3' toField='set_startTime'/>
1101            < ROUTE  fromNode='Gs3' fromField='touchTime' toNode='PitchGs3' toField='set_startTime'/>
1102            < ROUTE  fromNode='A4' fromField='touchTime' toNode='PitchA4' toField='set_startTime'/>
1103            < ROUTE  fromNode='As4' fromField='touchTime' toNode='PitchAs4' toField='set_startTime'/>
1104            < ROUTE  fromNode='B4' fromField='touchTime' toNode='PitchB4' toField='set_startTime'/>
1105            < ROUTE  fromNode='C4' fromField='touchTime' toNode='PitchC4' toField='set_startTime'/>
1106            < ROUTE  fromNode='Cs4' fromField='touchTime' toNode='PitchCs4' toField='set_startTime'/>
1107            < ROUTE  fromNode='D4' fromField='touchTime' toNode='PitchD4' toField='set_startTime'/>
1108            < ROUTE  fromNode='Ds4' fromField='touchTime' toNode='PitchDs4' toField='set_startTime'/>
1109            < ROUTE  fromNode='E4' fromField='touchTime' toNode='PitchE4' toField='set_startTime'/>
1110            < ROUTE  fromNode='F4' fromField='touchTime' toNode='PitchF4' toField='set_startTime'/>
1111            < ROUTE  fromNode='Fs4' fromField='touchTime' toNode='PitchFs4' toField='set_startTime'/>
1112            < ROUTE  fromNode='G4' fromField='touchTime' toNode='PitchG4' toField='set_startTime'/>
1113            < ROUTE  fromNode='Gs4' fromField='touchTime' toNode='PitchGs4' toField='set_startTime'/>
1114            < ROUTE  fromNode='A5' fromField='touchTime' toNode='PitchA5' toField='set_startTime'/>
1115            < ROUTE  fromNode='As5' fromField='touchTime' toNode='PitchAs5' toField='set_startTime'/>
1116            < ROUTE  fromNode='B5' fromField='touchTime' toNode='PitchB5' toField='set_startTime'/>
1117            < ROUTE  fromNode='C5' fromField='touchTime' toNode='PitchC5' toField='set_startTime'/>
1118            < ROUTE  fromNode='Cs5' fromField='touchTime' toNode='PitchCs5' toField='set_startTime'/>
1119            < ROUTE  fromNode='D5' fromField='touchTime' toNode='PitchD5' toField='set_startTime'/>
1120            < ROUTE  fromNode='Ds5' fromField='touchTime' toNode='PitchDs5' toField='set_startTime'/>
1121            < ROUTE  fromNode='E5' fromField='touchTime' toNode='PitchE5' toField='set_startTime'/>
1122            < ROUTE  fromNode='F5' fromField='touchTime' toNode='PitchF5' toField='set_startTime'/>
1123            < ROUTE  fromNode='Fs5' fromField='touchTime' toNode='PitchFs5' toField='set_startTime'/>
1124            < ROUTE  fromNode='G5' fromField='touchTime' toNode='PitchG5' toField='set_startTime'/>
1125            < ROUTE  fromNode='Gs5' fromField='touchTime' toNode='PitchGs5' toField='set_startTime'/>
1126            < ROUTE  fromNode='A6' fromField='touchTime' toNode='PitchA6' toField='set_startTime'/>
1127            < ROUTE  fromNode='As6' fromField='touchTime' toNode='PitchAs6' toField='set_startTime'/>
1128            < ROUTE  fromNode='B6' fromField='touchTime' toNode='PitchB6' toField='set_startTime'/>
1129            < ROUTE  fromNode='C6' fromField='touchTime' toNode='PitchC6' toField='set_startTime'/>
1130            < ROUTE  fromNode='Cs6' fromField='touchTime' toNode='PitchCs6' toField='set_startTime'/>
1131            < ROUTE  fromNode='D6' fromField='touchTime' toNode='PitchD6' toField='set_startTime'/>
1132            < ROUTE  fromNode='Ds6' fromField='touchTime' toNode='PitchDs6' toField='set_startTime'/>
1133            < ROUTE  fromNode='E6' fromField='touchTime' toNode='PitchE6' toField='set_startTime'/>
1134            < ROUTE  fromNode='F6' fromField='touchTime' toNode='PitchF6' toField='set_startTime'/>
1135            < ROUTE  fromNode='Fs6' fromField='touchTime' toNode='PitchFs6' toField='set_startTime'/>
1136            < ROUTE  fromNode='G6' fromField='touchTime' toNode='PitchG6' toField='set_startTime'/>
1137            < ROUTE  fromNode='Gs6' fromField='touchTime' toNode='PitchGs6' toField='set_startTime'/>
1138            < ROUTE  fromNode='A7' fromField='touchTime' toNode='PitchA7' toField='set_startTime'/>
1139            < ROUTE  fromNode='As7' fromField='touchTime' toNode='PitchAs7' toField='set_startTime'/>
1140            < ROUTE  fromNode='B7' fromField='touchTime' toNode='PitchB7' toField='set_startTime'/>
1141            < ROUTE  fromNode='C7' fromField='touchTime' toNode='PitchC7' toField='set_startTime'/>
1142            < ROUTE  fromNode='Cs7' fromField='touchTime' toNode='PitchCs7' toField='set_startTime'/>
1143            < ROUTE  fromNode='D7' fromField='touchTime' toNode='PitchD7' toField='set_startTime'/>
1144            < ROUTE  fromNode='Ds7' fromField='touchTime' toNode='PitchDs7' toField='set_startTime'/>
1145            < ROUTE  fromNode='E7' fromField='touchTime' toNode='PitchE7' toField='set_startTime'/>
1146            < ROUTE  fromNode='F7' fromField='touchTime' toNode='PitchF7' toField='set_startTime'/>
1147            < ROUTE  fromNode='Fs7' fromField='touchTime' toNode='PitchFs7' toField='set_startTime'/>
1148            < ROUTE  fromNode='G7' fromField='touchTime' toNode='PitchG7' toField='set_startTime'/>
1149            < ROUTE  fromNode='Gs7' fromField='touchTime' toNode='PitchGs7' toField='set_startTime'/>
1150            < ROUTE  fromNode='A8' fromField='touchTime' toNode='PitchA8' toField='set_startTime'/>
1151            < ROUTE  fromNode='As8' fromField='touchTime' toNode='PitchAs8' toField='set_startTime'/>
1152            < ROUTE  fromNode='B8' fromField='touchTime' toNode='PitchB8' toField='set_startTime'/>
1153            < ROUTE  fromNode='C8' fromField='touchTime' toNode='PitchC8' toField='set_startTime'/>
1154            < ROUTE  fromNode='A0' fromField='touchTime' toNode='ClockA0' toField='set_startTime'/>
1155            < ROUTE  fromNode='ClockA0' fromField='fraction_changed' toNode='A0Mover' toField='set_fraction'/>
1156            < ROUTE  fromNode='A0Mover' fromField='value_changed' toNode='A0TRANS' toField='set_translation'/>
1157            < ROUTE  fromNode='As0' fromField='touchTime' toNode='ClockAs0' toField='set_startTime'/>
1158            < ROUTE  fromNode='ClockAs0' fromField='fraction_changed' toNode='As0Mover' toField='set_fraction'/>
1159            < ROUTE  fromNode='As0Mover' fromField='value_changed' toNode='As0TRANS' toField='set_translation'/>
1160            < ROUTE  fromNode='B0' fromField='touchTime' toNode='ClockB0' toField='set_startTime'/>
1161            < ROUTE  fromNode='ClockB0' fromField='fraction_changed' toNode='B0Mover' toField='set_fraction'/>
1162            < ROUTE  fromNode='B0Mover' fromField='value_changed' toNode='B0TRANS' toField='set_translation'/>
1163            < ROUTE  fromNode='C0' fromField='touchTime' toNode='ClockC0' toField='set_startTime'/>
1164            < ROUTE  fromNode='ClockC0' fromField='fraction_changed' toNode='C0Mover' toField='set_fraction'/>
1165            < ROUTE  fromNode='C0Mover' fromField='value_changed' toNode='C0TRANS' toField='set_translation'/>
1166            < ROUTE  fromNode='Cs0' fromField='touchTime' toNode='ClockCs0' toField='set_startTime'/>
1167            < ROUTE  fromNode='ClockCs0' fromField='fraction_changed' toNode='Cs0Mover' toField='set_fraction'/>
1168            < ROUTE  fromNode='Cs0Mover' fromField='value_changed' toNode='Cs0TRANS' toField='set_translation'/>
1169            < ROUTE  fromNode='D0' fromField='touchTime' toNode='ClockD0' toField='set_startTime'/>
1170            < ROUTE  fromNode='ClockD0' fromField='fraction_changed' toNode='D0Mover' toField='set_fraction'/>
1171            < ROUTE  fromNode='D0Mover' fromField='value_changed' toNode='D0TRANS' toField='set_translation'/>
1172            < ROUTE  fromNode='Ds0' fromField='touchTime' toNode='ClockDs0' toField='set_startTime'/>
1173            < ROUTE  fromNode='ClockDs0' fromField='fraction_changed' toNode='Ds0Mover' toField='set_fraction'/>
1174            < ROUTE  fromNode='Ds0Mover' fromField='value_changed' toNode='Ds0TRANS' toField='set_translation'/>
1175            < ROUTE  fromNode='E0' fromField='touchTime' toNode='ClockE0' toField='set_startTime'/>
1176            < ROUTE  fromNode='ClockE0' fromField='fraction_changed' toNode='E0Mover' toField='set_fraction'/>
1177            < ROUTE  fromNode='E0Mover' fromField='value_changed' toNode='E0TRANS' toField='set_translation'/>
1178            < ROUTE  fromNode='F0' fromField='touchTime' toNode='ClockF0' toField='set_startTime'/>
1179            < ROUTE  fromNode='ClockF0' fromField='fraction_changed' toNode='F0Mover' toField='set_fraction'/>
1180            < ROUTE  fromNode='F0Mover' fromField='value_changed' toNode='F0TRANS' toField='set_translation'/>
1181            < ROUTE  fromNode='Fs0' fromField='touchTime' toNode='ClockFs0' toField='set_startTime'/>
1182            < ROUTE  fromNode='ClockFs0' fromField='fraction_changed' toNode='Fs0Mover' toField='set_fraction'/>
1183            < ROUTE  fromNode='Fs0Mover' fromField='value_changed' toNode='Fs0TRANS' toField='set_translation'/>
1184            < ROUTE  fromNode='G0' fromField='touchTime' toNode='ClockG0' toField='set_startTime'/>
1185            < ROUTE  fromNode='ClockG0' fromField='fraction_changed' toNode='G0Mover' toField='set_fraction'/>
1186            < ROUTE  fromNode='G0Mover' fromField='value_changed' toNode='G0TRANS' toField='set_translation'/>
1187            < ROUTE  fromNode='Gs0' fromField='touchTime' toNode='ClockGs0' toField='set_startTime'/>
1188            < ROUTE  fromNode='ClockGs0' fromField='fraction_changed' toNode='Gs0Mover' toField='set_fraction'/>
1189            < ROUTE  fromNode='Gs0Mover' fromField='value_changed' toNode='Gs0TRANS' toField='set_translation'/>
1190            < ROUTE  fromNode='A1' fromField='touchTime' toNode='ClockA1' toField='set_startTime'/>
1191            < ROUTE  fromNode='ClockA1' fromField='fraction_changed' toNode='A1Mover' toField='set_fraction'/>
1192            < ROUTE  fromNode='A1Mover' fromField='value_changed' toNode='A1TRANS' toField='set_translation'/>
1193            < ROUTE  fromNode='As1' fromField='touchTime' toNode='ClockAs1' toField='set_startTime'/>
1194            < ROUTE  fromNode='ClockAs1' fromField='fraction_changed' toNode='As1Mover' toField='set_fraction'/>
1195            < ROUTE  fromNode='As1Mover' fromField='value_changed' toNode='As1TRANS' toField='set_translation'/>
1196            < ROUTE  fromNode='B1' fromField='touchTime' toNode='ClockB1' toField='set_startTime'/>
1197            < ROUTE  fromNode='ClockB1' fromField='fraction_changed' toNode='B1Mover' toField='set_fraction'/>
1198            < ROUTE  fromNode='B1Mover' fromField='value_changed' toNode='B1TRANS' toField='set_translation'/>
1199            < ROUTE  fromNode='C1' fromField='touchTime' toNode='ClockC1' toField='set_startTime'/>
1200            < ROUTE  fromNode='ClockC1' fromField='fraction_changed' toNode='C1Mover' toField='set_fraction'/>
1201            < ROUTE  fromNode='C1Mover' fromField='value_changed' toNode='C1TRANS' toField='set_translation'/>
1202            < ROUTE  fromNode='Cs1' fromField='touchTime' toNode='ClockCs1' toField='set_startTime'/>
1203            < ROUTE  fromNode='ClockCs1' fromField='fraction_changed' toNode='Cs1Mover' toField='set_fraction'/>
1204            < ROUTE  fromNode='Cs1Mover' fromField='value_changed' toNode='Cs1TRANS' toField='set_translation'/>
1205            < ROUTE  fromNode='D1' fromField='touchTime' toNode='ClockD1' toField='set_startTime'/>
1206            < ROUTE  fromNode='ClockD1' fromField='fraction_changed' toNode='D1Mover' toField='set_fraction'/>
1207            < ROUTE  fromNode='D1Mover' fromField='value_changed' toNode='D1TRANS' toField='set_translation'/>
1208            < ROUTE  fromNode='Ds1' fromField='touchTime' toNode='ClockDs1' toField='set_startTime'/>
1209            < ROUTE  fromNode='ClockDs1' fromField='fraction_changed' toNode='Ds1Mover' toField='set_fraction'/>
1210            < ROUTE  fromNode='Ds1Mover' fromField='value_changed' toNode='Ds1TRANS' toField='set_translation'/>
1211            < ROUTE  fromNode='E1' fromField='touchTime' toNode='ClockE1' toField='set_startTime'/>
1212            < ROUTE  fromNode='ClockE1' fromField='fraction_changed' toNode='E1Mover' toField='set_fraction'/>
1213            < ROUTE  fromNode='E1Mover' fromField='value_changed' toNode='E1TRANS' toField='set_translation'/>
1214            < ROUTE  fromNode='F1' fromField='touchTime' toNode='ClockF1' toField='set_startTime'/>
1215            < ROUTE  fromNode='ClockF1' fromField='fraction_changed' toNode='F1Mover' toField='set_fraction'/>
1216            < ROUTE  fromNode='F1Mover' fromField='value_changed' toNode='F1TRANS' toField='set_translation'/>
1217            < ROUTE  fromNode='Fs1' fromField='touchTime' toNode='ClockFs1' toField='set_startTime'/>
1218            < ROUTE  fromNode='ClockFs1' fromField='fraction_changed' toNode='Fs1Mover' toField='set_fraction'/>
1219            < ROUTE  fromNode='Fs1Mover' fromField='value_changed' toNode='Fs1TRANS' toField='set_translation'/>
1220            < ROUTE  fromNode='G1' fromField='touchTime' toNode='ClockG1' toField='set_startTime'/>
1221            < ROUTE  fromNode='ClockG1' fromField='fraction_changed' toNode='G1Mover' toField='set_fraction'/>
1222            < ROUTE  fromNode='G1Mover' fromField='value_changed' toNode='G1TRANS' toField='set_translation'/>
1223            < ROUTE  fromNode='Gs1' fromField='touchTime' toNode='ClockGs1' toField='set_startTime'/>
1224            < ROUTE  fromNode='ClockGs1' fromField='fraction_changed' toNode='Gs1Mover' toField='set_fraction'/>
1225            < ROUTE  fromNode='Gs1Mover' fromField='value_changed' toNode='Gs1TRANS' toField='set_translation'/>
1226            < ROUTE  fromNode='A2' fromField='touchTime' toNode='ClockA2' toField='set_startTime'/>
1227            < ROUTE  fromNode='ClockA2' fromField='fraction_changed' toNode='A2Mover' toField='set_fraction'/>
1228            < ROUTE  fromNode='A2Mover' fromField='value_changed' toNode='A2TRANS' toField='set_translation'/>
1229            < ROUTE  fromNode='As2' fromField='touchTime' toNode='ClockAs2' toField='set_startTime'/>
1230            < ROUTE  fromNode='ClockAs2' fromField='fraction_changed' toNode='As2Mover' toField='set_fraction'/>
1231            < ROUTE  fromNode='As2Mover' fromField='value_changed' toNode='As2TRANS' toField='set_translation'/>
1232            < ROUTE  fromNode='B2' fromField='touchTime' toNode='ClockB2' toField='set_startTime'/>
1233            < ROUTE  fromNode='ClockB2' fromField='fraction_changed' toNode='B2Mover' toField='set_fraction'/>
1234            < ROUTE  fromNode='B2Mover' fromField='value_changed' toNode='B2TRANS' toField='set_translation'/>
1235            < ROUTE  fromNode='C2' fromField='touchTime' toNode='ClockC2' toField='set_startTime'/>
1236            < ROUTE  fromNode='ClockC2' fromField='fraction_changed' toNode='C2Mover' toField='set_fraction'/>
1237            < ROUTE  fromNode='C2Mover' fromField='value_changed' toNode='C2TRANS' toField='set_translation'/>
1238            < ROUTE  fromNode='Cs2' fromField='touchTime' toNode='ClockCs2' toField='set_startTime'/>
1239            < ROUTE  fromNode='ClockCs2' fromField='fraction_changed' toNode='Cs2Mover' toField='set_fraction'/>
1240            < ROUTE  fromNode='Cs2Mover' fromField='value_changed' toNode='Cs2TRANS' toField='set_translation'/>
1241            < ROUTE  fromNode='D2' fromField='touchTime' toNode='ClockD2' toField='set_startTime'/>
1242            < ROUTE  fromNode='ClockD2' fromField='fraction_changed' toNode='D2Mover' toField='set_fraction'/>
1243            < ROUTE  fromNode='D2Mover' fromField='value_changed' toNode='D2TRANS' toField='set_translation'/>
1244            < ROUTE  fromNode='Ds2' fromField='touchTime' toNode='ClockDs2' toField='set_startTime'/>
1245            < ROUTE  fromNode='ClockDs2' fromField='fraction_changed' toNode='Ds2Mover' toField='set_fraction'/>
1246            < ROUTE  fromNode='Ds2Mover' fromField='value_changed' toNode='Ds2TRANS' toField='set_translation'/>
1247            < ROUTE  fromNode='E2' fromField='touchTime' toNode='ClockE2' toField='set_startTime'/>
1248            < ROUTE  fromNode='ClockE2' fromField='fraction_changed' toNode='E2Mover' toField='set_fraction'/>
1249            < ROUTE  fromNode='E2Mover' fromField='value_changed' toNode='E2TRANS' toField='set_translation'/>
1250            < ROUTE  fromNode='F2' fromField='touchTime' toNode='ClockF2' toField='set_startTime'/>
1251            < ROUTE  fromNode='ClockF2' fromField='fraction_changed' toNode='F2Mover' toField='set_fraction'/>
1252            < ROUTE  fromNode='F2Mover' fromField='value_changed' toNode='F2TRANS' toField='set_translation'/>
1253            < ROUTE  fromNode='Fs2' fromField='touchTime' toNode='ClockFs2' toField='set_startTime'/>
1254            < ROUTE  fromNode='ClockFs2' fromField='fraction_changed' toNode='Fs2Mover' toField='set_fraction'/>
1255            < ROUTE  fromNode='Fs2Mover' fromField='value_changed' toNode='Fs2TRANS' toField='set_translation'/>
1256            < ROUTE  fromNode='G2' fromField='touchTime' toNode='ClockG2' toField='set_startTime'/>
1257            < ROUTE  fromNode='ClockG2' fromField='fraction_changed' toNode='G2Mover' toField='set_fraction'/>
1258            < ROUTE  fromNode='G2Mover' fromField='value_changed' toNode='G2TRANS' toField='set_translation'/>
1259            < ROUTE  fromNode='Gs2' fromField='touchTime' toNode='ClockGs2' toField='set_startTime'/>
1260            < ROUTE  fromNode='ClockGs2' fromField='fraction_changed' toNode='Gs2Mover' toField='set_fraction'/>
1261            < ROUTE  fromNode='Gs2Mover' fromField='value_changed' toNode='Gs2TRANS' toField='set_translation'/>
1262            < ROUTE  fromNode='A3' fromField='touchTime' toNode='ClockA3' toField='set_startTime'/>
1263            < ROUTE  fromNode='ClockA3' fromField='fraction_changed' toNode='A3Mover' toField='set_fraction'/>
1264            < ROUTE  fromNode='A3Mover' fromField='value_changed' toNode='A3TRANS' toField='set_translation'/>
1265            < ROUTE  fromNode='As3' fromField='touchTime' toNode='ClockAs3' toField='set_startTime'/>
1266            < ROUTE  fromNode='ClockAs3' fromField='fraction_changed' toNode='As3Mover' toField='set_fraction'/>
1267            < ROUTE  fromNode='As3Mover' fromField='value_changed' toNode='As3TRANS' toField='set_translation'/>
1268            < ROUTE  fromNode='B3' fromField='touchTime' toNode='ClockB3' toField='set_startTime'/>
1269            < ROUTE  fromNode='ClockB3' fromField='fraction_changed' toNode='B3Mover' toField='set_fraction'/>
1270            < ROUTE  fromNode='B3Mover' fromField='value_changed' toNode='B3TRANS' toField='set_translation'/>
1271            < ROUTE  fromNode='C3' fromField='touchTime' toNode='ClockC3' toField='set_startTime'/>
1272            < ROUTE  fromNode='ClockC3' fromField='fraction_changed' toNode='C3Mover' toField='set_fraction'/>
1273            < ROUTE  fromNode='C3Mover' fromField='value_changed' toNode='C3TRANS' toField='set_translation'/>
1274            < ROUTE  fromNode='Cs3' fromField='touchTime' toNode='ClockCs3' toField='set_startTime'/>
1275            < ROUTE  fromNode='ClockCs3' fromField='fraction_changed' toNode='Cs3Mover' toField='set_fraction'/>
1276            < ROUTE  fromNode='Cs3Mover' fromField='value_changed' toNode='Cs3TRANS' toField='set_translation'/>
1277            < ROUTE  fromNode='D3' fromField='touchTime' toNode='ClockD3' toField='set_startTime'/>
1278            < ROUTE  fromNode='ClockD3' fromField='fraction_changed' toNode='D3Mover' toField='set_fraction'/>
1279            < ROUTE  fromNode='D3Mover' fromField='value_changed' toNode='D3TRANS' toField='set_translation'/>
1280            < ROUTE  fromNode='Ds3' fromField='touchTime' toNode='ClockDs3' toField='set_startTime'/>
1281            < ROUTE  fromNode='ClockDs3' fromField='fraction_changed' toNode='Ds3Mover' toField='set_fraction'/>
1282            < ROUTE  fromNode='Ds3Mover' fromField='value_changed' toNode='Ds3TRANS' toField='set_translation'/>
1283            < ROUTE  fromNode='E3' fromField='touchTime' toNode='ClockE3' toField='set_startTime'/>
1284            < ROUTE  fromNode='ClockE3' fromField='fraction_changed' toNode='E3Mover' toField='set_fraction'/>
1285            < ROUTE  fromNode='E3Mover' fromField='value_changed' toNode='E3TRANS' toField='set_translation'/>
1286            < ROUTE  fromNode='F3' fromField='touchTime' toNode='ClockF3' toField='set_startTime'/>
1287            < ROUTE  fromNode='ClockF3' fromField='fraction_changed' toNode='F3Mover' toField='set_fraction'/>
1288            < ROUTE  fromNode='F3Mover' fromField='value_changed' toNode='F3TRANS' toField='set_translation'/>
1289            < ROUTE  fromNode='Fs3' fromField='touchTime' toNode='ClockFs3' toField='set_startTime'/>
1290            < ROUTE  fromNode='ClockFs3' fromField='fraction_changed' toNode='Fs3Mover' toField='set_fraction'/>
1291            < ROUTE  fromNode='Fs3Mover' fromField='value_changed' toNode='Fs3TRANS' toField='set_translation'/>
1292            < ROUTE  fromNode='G3' fromField='touchTime' toNode='ClockG3' toField='set_startTime'/>
1293            < ROUTE  fromNode='ClockG3' fromField='fraction_changed' toNode='G3Mover' toField='set_fraction'/>
1294            < ROUTE  fromNode='G3Mover' fromField='value_changed' toNode='G3TRANS' toField='set_translation'/>
1295            < ROUTE  fromNode='Gs3' fromField='touchTime' toNode='ClockGs3' toField='set_startTime'/>
1296            < ROUTE  fromNode='ClockGs3' fromField='fraction_changed' toNode='Gs3Mover' toField='set_fraction'/>
1297            < ROUTE  fromNode='Gs3Mover' fromField='value_changed' toNode='Gs3TRANS' toField='set_translation'/>
1298            < ROUTE  fromNode='A4' fromField='touchTime' toNode='ClockA4' toField='set_startTime'/>
1299            < ROUTE  fromNode='ClockA4' fromField='fraction_changed' toNode='A4Mover' toField='set_fraction'/>
1300            < ROUTE  fromNode='A4Mover' fromField='value_changed' toNode='A4TRANS' toField='set_translation'/>
1301            < ROUTE  fromNode='As4' fromField='touchTime' toNode='ClockAs4' toField='set_startTime'/>
1302            < ROUTE  fromNode='ClockAs4' fromField='fraction_changed' toNode='As4Mover' toField='set_fraction'/>
1303            < ROUTE  fromNode='As4Mover' fromField='value_changed' toNode='As4TRANS' toField='set_translation'/>
1304            < ROUTE  fromNode='B4' fromField='touchTime' toNode='ClockB4' toField='set_startTime'/>
1305            < ROUTE  fromNode='ClockB4' fromField='fraction_changed' toNode='B4Mover' toField='set_fraction'/>
1306            < ROUTE  fromNode='B4Mover' fromField='value_changed' toNode='B4TRANS' toField='set_translation'/>
1307            < ROUTE  fromNode='C4' fromField='touchTime' toNode='ClockC4' toField='set_startTime'/>
1308            < ROUTE  fromNode='ClockC4' fromField='fraction_changed' toNode='C4Mover' toField='set_fraction'/>
1309            < ROUTE  fromNode='C4Mover' fromField='value_changed' toNode='C4TRANS' toField='set_translation'/>
1310            < ROUTE  fromNode='Cs4' fromField='touchTime' toNode='ClockCs4' toField='set_startTime'/>
1311            < ROUTE  fromNode='ClockCs4' fromField='fraction_changed' toNode='Cs4Mover' toField='set_fraction'/>
1312            < ROUTE  fromNode='Cs4Mover' fromField='value_changed' toNode='Cs4TRANS' toField='set_translation'/>
1313            < ROUTE  fromNode='D4' fromField='touchTime' toNode='ClockD4' toField='set_startTime'/>
1314            < ROUTE  fromNode='ClockD4' fromField='fraction_changed' toNode='D4Mover' toField='set_fraction'/>
1315            < ROUTE  fromNode='D4Mover' fromField='value_changed' toNode='D4TRANS' toField='set_translation'/>
1316            < ROUTE  fromNode='Ds4' fromField='touchTime' toNode='ClockDs4' toField='set_startTime'/>
1317            < ROUTE  fromNode='ClockDs4' fromField='fraction_changed' toNode='Ds4Mover' toField='set_fraction'/>
1318            < ROUTE  fromNode='Ds4Mover' fromField='value_changed' toNode='Ds4TRANS' toField='set_translation'/>
1319            < ROUTE  fromNode='E4' fromField='touchTime' toNode='ClockE4' toField='set_startTime'/>
1320            < ROUTE  fromNode='ClockE4' fromField='fraction_changed' toNode='E4Mover' toField='set_fraction'/>
1321            < ROUTE  fromNode='E4Mover' fromField='value_changed' toNode='E4TRANS' toField='set_translation'/>
1322            < ROUTE  fromNode='F4' fromField='touchTime' toNode='ClockF4' toField='set_startTime'/>
1323            < ROUTE  fromNode='ClockF4' fromField='fraction_changed' toNode='F4Mover' toField='set_fraction'/>
1324            < ROUTE  fromNode='F4Mover' fromField='value_changed' toNode='F4TRANS' toField='set_translation'/>
1325            < ROUTE  fromNode='Fs4' fromField='touchTime' toNode='ClockFs4' toField='set_startTime'/>
1326            < ROUTE  fromNode='ClockFs4' fromField='fraction_changed' toNode='Fs4Mover' toField='set_fraction'/>
1327            < ROUTE  fromNode='Fs4Mover' fromField='value_changed' toNode='Fs4TRANS' toField='set_translation'/>
1328            < ROUTE  fromNode='G4' fromField='touchTime' toNode='ClockG4' toField='set_startTime'/>
1329            < ROUTE  fromNode='ClockG4' fromField='fraction_changed' toNode='G4Mover' toField='set_fraction'/>
1330            < ROUTE  fromNode='G4Mover' fromField='value_changed' toNode='G4TRANS' toField='set_translation'/>
1331            < ROUTE  fromNode='Gs4' fromField='touchTime' toNode='ClockGs4' toField='set_startTime'/>
1332            < ROUTE  fromNode='ClockGs4' fromField='fraction_changed' toNode='Gs4Mover' toField='set_fraction'/>
1333            < ROUTE  fromNode='Gs4Mover' fromField='value_changed' toNode='Gs4TRANS' toField='set_translation'/>
1334            < ROUTE  fromNode='A5' fromField='touchTime' toNode='ClockA5' toField='set_startTime'/>
1335            < ROUTE  fromNode='ClockA5' fromField='fraction_changed' toNode='A5Mover' toField='set_fraction'/>
1336            < ROUTE  fromNode='A5Mover' fromField='value_changed' toNode='A5TRANS' toField='set_translation'/>
1337            < ROUTE  fromNode='As5' fromField='touchTime' toNode='ClockAs5' toField='set_startTime'/>
1338            < ROUTE  fromNode='ClockAs5' fromField='fraction_changed' toNode='As5Mover' toField='set_fraction'/>
1339            < ROUTE  fromNode='As5Mover' fromField='value_changed' toNode='As5TRANS' toField='set_translation'/>
1340            < ROUTE  fromNode='B5' fromField='touchTime' toNode='ClockB5' toField='set_startTime'/>
1341            < ROUTE  fromNode='ClockB5' fromField='fraction_changed' toNode='B5Mover' toField='set_fraction'/>
1342            < ROUTE  fromNode='B5Mover' fromField='value_changed' toNode='B5TRANS' toField='set_translation'/>
1343            < ROUTE  fromNode='C5' fromField='touchTime' toNode='ClockC5' toField='set_startTime'/>
1344            < ROUTE  fromNode='ClockC5' fromField='fraction_changed' toNode='C5Mover' toField='set_fraction'/>
1345            < ROUTE  fromNode='C5Mover' fromField='value_changed' toNode='C5TRANS' toField='set_translation'/>
1346            < ROUTE  fromNode='Cs5' fromField='touchTime' toNode='ClockCs5' toField='set_startTime'/>
1347            < ROUTE  fromNode='ClockCs5' fromField='fraction_changed' toNode='Cs5Mover' toField='set_fraction'/>
1348            < ROUTE  fromNode='Cs5Mover' fromField='value_changed' toNode='Cs5TRANS' toField='set_translation'/>
1349            < ROUTE  fromNode='D5' fromField='touchTime' toNode='ClockD5' toField='set_startTime'/>
1350            < ROUTE  fromNode='ClockD5' fromField='fraction_changed' toNode='D5Mover' toField='set_fraction'/>
1351            < ROUTE  fromNode='D5Mover' fromField='value_changed' toNode='D5TRANS' toField='set_translation'/>
1352            < ROUTE  fromNode='Ds5' fromField='touchTime' toNode='ClockDs5' toField='set_startTime'/>
1353            < ROUTE  fromNode='ClockDs5' fromField='fraction_changed' toNode='Ds5Mover' toField='set_fraction'/>
1354            < ROUTE  fromNode='Ds5Mover' fromField='value_changed' toNode='Ds5TRANS' toField='set_translation'/>
1355            < ROUTE  fromNode='E5' fromField='touchTime' toNode='ClockE5' toField='set_startTime'/>
1356            < ROUTE  fromNode='ClockE5' fromField='fraction_changed' toNode='E5Mover' toField='set_fraction'/>
1357            < ROUTE  fromNode='E5Mover' fromField='value_changed' toNode='E5TRANS' toField='set_translation'/>
1358            < ROUTE  fromNode='F5' fromField='touchTime' toNode='ClockF5' toField='set_startTime'/>
1359            < ROUTE  fromNode='ClockF5' fromField='fraction_changed' toNode='F5Mover' toField='set_fraction'/>
1360            < ROUTE  fromNode='F5Mover' fromField='value_changed' toNode='F5TRANS' toField='set_translation'/>
1361            < ROUTE  fromNode='Fs5' fromField='touchTime' toNode='ClockFs5' toField='set_startTime'/>
1362            < ROUTE  fromNode='ClockFs5' fromField='fraction_changed' toNode='Fs5Mover' toField='set_fraction'/>
1363            < ROUTE  fromNode='Fs5Mover' fromField='value_changed' toNode='Fs5TRANS' toField='set_translation'/>
1364            < ROUTE  fromNode='G5' fromField='touchTime' toNode='ClockG5' toField='set_startTime'/>
1365            < ROUTE  fromNode='ClockG5' fromField='fraction_changed' toNode='G5Mover' toField='set_fraction'/>
1366            < ROUTE  fromNode='G5Mover' fromField='value_changed' toNode='G5TRANS' toField='set_translation'/>
1367            < ROUTE  fromNode='Gs5' fromField='touchTime' toNode='ClockGs5' toField='set_startTime'/>
1368            < ROUTE  fromNode='ClockGs5' fromField='fraction_changed' toNode='Gs5Mover' toField='set_fraction'/>
1369            < ROUTE  fromNode='Gs5Mover' fromField='value_changed' toNode='Gs5TRANS' toField='set_translation'/>
1370            < ROUTE  fromNode='A6' fromField='touchTime' toNode='ClockA6' toField='set_startTime'/>
1371            < ROUTE  fromNode='ClockA6' fromField='fraction_changed' toNode='A6Mover' toField='set_fraction'/>
1372            < ROUTE  fromNode='A6Mover' fromField='value_changed' toNode='A6TRANS' toField='set_translation'/>
1373            < ROUTE  fromNode='As6' fromField='touchTime' toNode='ClockAs6' toField='set_startTime'/>
1374            < ROUTE  fromNode='ClockAs6' fromField='fraction_changed' toNode='As6Mover' toField='set_fraction'/>
1375            < ROUTE  fromNode='As6Mover' fromField='value_changed' toNode='As6TRANS' toField='set_translation'/>
1376            < ROUTE  fromNode='B6' fromField='touchTime' toNode='ClockB6' toField='set_startTime'/>
1377            < ROUTE  fromNode='ClockB6' fromField='fraction_changed' toNode='B6Mover' toField='set_fraction'/>
1378            < ROUTE  fromNode='B6Mover' fromField='value_changed' toNode='B6TRANS' toField='set_translation'/>
1379            < ROUTE  fromNode='C6' fromField='touchTime' toNode='ClockC6' toField='set_startTime'/>
1380            < ROUTE  fromNode='ClockC6' fromField='fraction_changed' toNode='C6Mover' toField='set_fraction'/>
1381            < ROUTE  fromNode='C6Mover' fromField='value_changed' toNode='C6TRANS' toField='set_translation'/>
1382            < ROUTE  fromNode='Cs6' fromField='touchTime' toNode='ClockCs6' toField='set_startTime'/>
1383            < ROUTE  fromNode='ClockCs6' fromField='fraction_changed' toNode='Cs6Mover' toField='set_fraction'/>
1384            < ROUTE  fromNode='Cs6Mover' fromField='value_changed' toNode='Cs6TRANS' toField='set_translation'/>
1385            < ROUTE  fromNode='D6' fromField='touchTime' toNode='ClockD6' toField='set_startTime'/>
1386            < ROUTE  fromNode='ClockD6' fromField='fraction_changed' toNode='D6Mover' toField='set_fraction'/>
1387            < ROUTE  fromNode='D6Mover' fromField='value_changed' toNode='D6TRANS' toField='set_translation'/>
1388            < ROUTE  fromNode='Ds6' fromField='touchTime' toNode='ClockDs6' toField='set_startTime'/>
1389            < ROUTE  fromNode='ClockDs6' fromField='fraction_changed' toNode='Ds6Mover' toField='set_fraction'/>
1390            < ROUTE  fromNode='Ds6Mover' fromField='value_changed' toNode='Ds6TRANS' toField='set_translation'/>
1391            < ROUTE  fromNode='E6' fromField='touchTime' toNode='ClockE6' toField='set_startTime'/>
1392            < ROUTE  fromNode='ClockE6' fromField='fraction_changed' toNode='E6Mover' toField='set_fraction'/>
1393            < ROUTE  fromNode='E6Mover' fromField='value_changed' toNode='E6TRANS' toField='set_translation'/>
1394            < ROUTE  fromNode='F6' fromField='touchTime' toNode='ClockF6' toField='set_startTime'/>
1395            < ROUTE  fromNode='ClockF6' fromField='fraction_changed' toNode='F6Mover' toField='set_fraction'/>
1396            < ROUTE  fromNode='F6Mover' fromField='value_changed' toNode='F6TRANS' toField='set_translation'/>
1397            < ROUTE  fromNode='Fs6' fromField='touchTime' toNode='ClockFs6' toField='set_startTime'/>
1398            < ROUTE  fromNode='ClockFs6' fromField='fraction_changed' toNode='Fs6Mover' toField='set_fraction'/>
1399            < ROUTE  fromNode='Fs6Mover' fromField='value_changed' toNode='Fs6TRANS' toField='set_translation'/>
1400            < ROUTE  fromNode='G6' fromField='touchTime' toNode='ClockG6' toField='set_startTime'/>
1401            < ROUTE  fromNode='ClockG6' fromField='fraction_changed' toNode='G6Mover' toField='set_fraction'/>
1402            < ROUTE  fromNode='G6Mover' fromField='value_changed' toNode='G6TRANS' toField='set_translation'/>
1403            < ROUTE  fromNode='Gs6' fromField='touchTime' toNode='ClockGs6' toField='set_startTime'/>
1404            < ROUTE  fromNode='ClockGs6' fromField='fraction_changed' toNode='Gs6Mover' toField='set_fraction'/>
1405            < ROUTE  fromNode='Gs6Mover' fromField='value_changed' toNode='Gs6TRANS' toField='set_translation'/>
1406            < ROUTE  fromNode='A7' fromField='touchTime' toNode='ClockA7' toField='set_startTime'/>
1407            < ROUTE  fromNode='ClockA7' fromField='fraction_changed' toNode='A7Mover' toField='set_fraction'/>
1408            < ROUTE  fromNode='A7Mover' fromField='value_changed' toNode='A7TRANS' toField='set_translation'/>
1409            < ROUTE  fromNode='As7' fromField='touchTime' toNode='ClockAs7' toField='set_startTime'/>
1410            < ROUTE  fromNode='ClockAs7' fromField='fraction_changed' toNode='As7Mover' toField='set_fraction'/>
1411            < ROUTE  fromNode='As7Mover' fromField='value_changed' toNode='As7TRANS' toField='set_translation'/>
1412            < ROUTE  fromNode='B7' fromField='touchTime' toNode='ClockB7' toField='set_startTime'/>
1413            < ROUTE  fromNode='ClockB7' fromField='fraction_changed' toNode='B7Mover' toField='set_fraction'/>
1414            < ROUTE  fromNode='B7Mover' fromField='value_changed' toNode='B7TRANS' toField='set_translation'/>
1415            < ROUTE  fromNode='C7' fromField='touchTime' toNode='ClockC7' toField='set_startTime'/>
1416            < ROUTE  fromNode='ClockC7' fromField='fraction_changed' toNode='C7Mover' toField='set_fraction'/>
1417            < ROUTE  fromNode='C7Mover' fromField='value_changed' toNode='C7TRANS' toField='set_translation'/>
1418            < ROUTE  fromNode='Cs7' fromField='touchTime' toNode='ClockCs7' toField='set_startTime'/>
1419            < ROUTE  fromNode='ClockCs7' fromField='fraction_changed' toNode='Cs7Mover' toField='set_fraction'/>
1420            < ROUTE  fromNode='Cs7Mover' fromField='value_changed' toNode='Cs7TRANS' toField='set_translation'/>
1421            < ROUTE  fromNode='D7' fromField='touchTime' toNode='ClockD7' toField='set_startTime'/>
1422            < ROUTE  fromNode='ClockD7' fromField='fraction_changed' toNode='D7Mover' toField='set_fraction'/>
1423            < ROUTE  fromNode='D7Mover' fromField='value_changed' toNode='D7TRANS' toField='set_translation'/>
1424            < ROUTE  fromNode='Ds7' fromField='touchTime' toNode='ClockDs7' toField='set_startTime'/>
1425            < ROUTE  fromNode='ClockDs7' fromField='fraction_changed' toNode='Ds7Mover' toField='set_fraction'/>
1426            < ROUTE  fromNode='Ds7Mover' fromField='value_changed' toNode='Ds7TRANS' toField='set_translation'/>
1427            < ROUTE  fromNode='E7' fromField='touchTime' toNode='ClockE7' toField='set_startTime'/>
1428            < ROUTE  fromNode='ClockE7' fromField='fraction_changed' toNode='E7Mover' toField='set_fraction'/>
1429            < ROUTE  fromNode='E7Mover' fromField='value_changed' toNode='E7TRANS' toField='set_translation'/>
1430            < ROUTE  fromNode='F7' fromField='touchTime' toNode='ClockF7' toField='set_startTime'/>
1431            < ROUTE  fromNode='ClockF7' fromField='fraction_changed' toNode='F7Mover' toField='set_fraction'/>
1432            < ROUTE  fromNode='F7Mover' fromField='value_changed' toNode='F7TRANS' toField='set_translation'/>
1433            < ROUTE  fromNode='Fs7' fromField='touchTime' toNode='ClockFs7' toField='set_startTime'/>
1434            < ROUTE  fromNode='ClockFs7' fromField='fraction_changed' toNode='Fs7Mover' toField='set_fraction'/>
1435            < ROUTE  fromNode='Fs7Mover' fromField='value_changed' toNode='Fs7TRANS' toField='set_translation'/>
1436            < ROUTE  fromNode='G7' fromField='touchTime' toNode='ClockG7' toField='set_startTime'/>
1437            < ROUTE  fromNode='ClockG7' fromField='fraction_changed' toNode='G7Mover' toField='set_fraction'/>
1438            < ROUTE  fromNode='G7Mover' fromField='value_changed' toNode='G7TRANS' toField='set_translation'/>
1439            < ROUTE  fromNode='Gs7' fromField='touchTime' toNode='ClockGs7' toField='set_startTime'/>
1440            < ROUTE  fromNode='ClockGs7' fromField='fraction_changed' toNode='Gs7Mover' toField='set_fraction'/>
1441            < ROUTE  fromNode='Gs7Mover' fromField='value_changed' toNode='Gs7TRANS' toField='set_translation'/>
1442            < ROUTE  fromNode='A8' fromField='touchTime' toNode='ClockA8' toField='set_startTime'/>
1443            < ROUTE  fromNode='ClockA8' fromField='fraction_changed' toNode='A8Mover' toField='set_fraction'/>
1444            < ROUTE  fromNode='A8Mover' fromField='value_changed' toNode='A8TRANS' toField='set_translation'/>
1445            < ROUTE  fromNode='As8' fromField='touchTime' toNode='ClockAs8' toField='set_startTime'/>
1446            < ROUTE  fromNode='ClockAs8' fromField='fraction_changed' toNode='As8Mover' toField='set_fraction'/>
1447            < ROUTE  fromNode='As8Mover' fromField='value_changed' toNode='As8TRANS' toField='set_translation'/>
1448            < ROUTE  fromNode='B8' fromField='touchTime' toNode='ClockB8' toField='set_startTime'/>
1449            < ROUTE  fromNode='ClockB8' fromField='fraction_changed' toNode='B8Mover' toField='set_fraction'/>
1450            < ROUTE  fromNode='B8Mover' fromField='value_changed' toNode='B8TRANS' toField='set_translation'/>
1451            < ROUTE  fromNode='C8' fromField='touchTime' toNode='ClockC8' toField='set_startTime'/>
1452            < ROUTE  fromNode='ClockC8' fromField='fraction_changed' toNode='C8Mover' toField='set_fraction'/>
1453            < ROUTE  fromNode='C8Mover' fromField='value_changed' toNode='C8TRANS' toField='set_translation'/>
1454            < ROUTE  fromNode='PlayerPianoScript' fromField='playA0' toNode='PitchA0' toField='set_startTime'/>
1455            < ROUTE  fromNode='PlayerPianoScript' fromField='playA0' toNode='ClockA0' toField='set_startTime'/>
1456            < ROUTE  fromNode='PlayerPianoScript' fromField='playAs0' toNode='PitchAs0' toField='set_startTime'/>
1457            < ROUTE  fromNode='PlayerPianoScript' fromField='playAs0' toNode='ClockAs0' toField='set_startTime'/>
1458            < ROUTE  fromNode='PlayerPianoScript' fromField='playB0' toNode='PitchB0' toField='set_startTime'/>
1459            < ROUTE  fromNode='PlayerPianoScript' fromField='playB0' toNode='ClockB0' toField='set_startTime'/>
1460            < ROUTE  fromNode='PlayerPianoScript' fromField='playC0' toNode='PitchC0' toField='set_startTime'/>
1461            < ROUTE  fromNode='PlayerPianoScript' fromField='playC0' toNode='ClockC0' toField='set_startTime'/>
1462            < ROUTE  fromNode='PlayerPianoScript' fromField='playCs0' toNode='PitchCs0' toField='set_startTime'/>
1463            < ROUTE  fromNode='PlayerPianoScript' fromField='playCs0' toNode='ClockCs0' toField='set_startTime'/>
1464            < ROUTE  fromNode='PlayerPianoScript' fromField='playD0' toNode='PitchD0' toField='set_startTime'/>
1465            < ROUTE  fromNode='PlayerPianoScript' fromField='playD0' toNode='ClockD0' toField='set_startTime'/>
1466            < ROUTE  fromNode='PlayerPianoScript' fromField='playDs0' toNode='PitchDs0' toField='set_startTime'/>
1467            < ROUTE  fromNode='PlayerPianoScript' fromField='playDs0' toNode='ClockDs0' toField='set_startTime'/>
1468            < ROUTE  fromNode='PlayerPianoScript' fromField='playE0' toNode='PitchE0' toField='set_startTime'/>
1469            < ROUTE  fromNode='PlayerPianoScript' fromField='playE0' toNode='ClockE0' toField='set_startTime'/>
1470            < ROUTE  fromNode='PlayerPianoScript' fromField='playF0' toNode='PitchF0' toField='set_startTime'/>
1471            < ROUTE  fromNode='PlayerPianoScript' fromField='playF0' toNode='ClockF0' toField='set_startTime'/>
1472            < ROUTE  fromNode='PlayerPianoScript' fromField='playFs0' toNode='PitchFs0' toField='set_startTime'/>
1473            < ROUTE  fromNode='PlayerPianoScript' fromField='playFs0' toNode='ClockFs0' toField='set_startTime'/>
1474            < ROUTE  fromNode='PlayerPianoScript' fromField='playG0' toNode='PitchG0' toField='set_startTime'/>
1475            < ROUTE  fromNode='PlayerPianoScript' fromField='playG0' toNode='ClockG0' toField='set_startTime'/>
1476            < ROUTE  fromNode='PlayerPianoScript' fromField='playGs0' toNode='PitchGs0' toField='set_startTime'/>
1477            < ROUTE  fromNode='PlayerPianoScript' fromField='playGs0' toNode='ClockGs0' toField='set_startTime'/>
1478            < ROUTE  fromNode='PlayerPianoScript' fromField='playA1' toNode='PitchA1' toField='set_startTime'/>
1479            < ROUTE  fromNode='PlayerPianoScript' fromField='playA1' toNode='ClockA1' toField='set_startTime'/>
1480            < ROUTE  fromNode='PlayerPianoScript' fromField='playAs1' toNode='PitchAs1' toField='set_startTime'/>
1481            < ROUTE  fromNode='PlayerPianoScript' fromField='playAs1' toNode='ClockAs1' toField='set_startTime'/>
1482            < ROUTE  fromNode='PlayerPianoScript' fromField='playB1' toNode='PitchB1' toField='set_startTime'/>
1483            < ROUTE  fromNode='PlayerPianoScript' fromField='playB1' toNode='ClockB1' toField='set_startTime'/>
1484            < ROUTE  fromNode='PlayerPianoScript' fromField='playC1' toNode='PitchC1' toField='set_startTime'/>
1485            < ROUTE  fromNode='PlayerPianoScript' fromField='playC1' toNode='ClockC1' toField='set_startTime'/>
1486            < ROUTE  fromNode='PlayerPianoScript' fromField='playCs1' toNode='PitchCs1' toField='set_startTime'/>
1487            < ROUTE  fromNode='PlayerPianoScript' fromField='playCs1' toNode='ClockCs1' toField='set_startTime'/>
1488            < ROUTE  fromNode='PlayerPianoScript' fromField='playD1' toNode='PitchD1' toField='set_startTime'/>
1489            < ROUTE  fromNode='PlayerPianoScript' fromField='playD1' toNode='ClockD1' toField='set_startTime'/>
1490            < ROUTE  fromNode='PlayerPianoScript' fromField='playDs1' toNode='PitchDs1' toField='set_startTime'/>
1491            < ROUTE  fromNode='PlayerPianoScript' fromField='playDs1' toNode='ClockDs1' toField='set_startTime'/>
1492            < ROUTE  fromNode='PlayerPianoScript' fromField='playE1' toNode='PitchE1' toField='set_startTime'/>
1493            < ROUTE  fromNode='PlayerPianoScript' fromField='playE1' toNode='ClockE1' toField='set_startTime'/>
1494            < ROUTE  fromNode='PlayerPianoScript' fromField='playF1' toNode='PitchF1' toField='set_startTime'/>
1495            < ROUTE  fromNode='PlayerPianoScript' fromField='playF1' toNode='ClockF1' toField='set_startTime'/>
1496            < ROUTE  fromNode='PlayerPianoScript' fromField='playFs1' toNode='PitchFs1' toField='set_startTime'/>
1497            < ROUTE  fromNode='PlayerPianoScript' fromField='playFs1' toNode='ClockFs1' toField='set_startTime'/>
1498            < ROUTE  fromNode='PlayerPianoScript' fromField='playG1' toNode='PitchG1' toField='set_startTime'/>
1499            < ROUTE  fromNode='PlayerPianoScript' fromField='playG1' toNode='ClockG1' toField='set_startTime'/>
1500            < ROUTE  fromNode='PlayerPianoScript' fromField='playGs1' toNode='PitchGs1' toField='set_startTime'/>
1501            < ROUTE  fromNode='PlayerPianoScript' fromField='playGs1' toNode='ClockGs1' toField='set_startTime'/>
1502            < ROUTE  fromNode='PlayerPianoScript' fromField='playA2' toNode='PitchA2' toField='set_startTime'/>
1503            < ROUTE  fromNode='PlayerPianoScript' fromField='playA2' toNode='ClockA2' toField='set_startTime'/>
1504            < ROUTE  fromNode='PlayerPianoScript' fromField='playAs2' toNode='PitchAs2' toField='set_startTime'/>
1505            < ROUTE  fromNode='PlayerPianoScript' fromField='playAs2' toNode='ClockAs2' toField='set_startTime'/>
1506            < ROUTE  fromNode='PlayerPianoScript' fromField='playB2' toNode='PitchB2' toField='set_startTime'/>
1507            < ROUTE  fromNode='PlayerPianoScript' fromField='playB2' toNode='ClockB2' toField='set_startTime'/>
1508            < ROUTE  fromNode='PlayerPianoScript' fromField='playC2' toNode='PitchC2' toField='set_startTime'/>
1509            < ROUTE  fromNode='PlayerPianoScript' fromField='playC2' toNode='ClockC2' toField='set_startTime'/>
1510            < ROUTE  fromNode='PlayerPianoScript' fromField='playCs2' toNode='PitchCs2' toField='set_startTime'/>
1511            < ROUTE  fromNode='PlayerPianoScript' fromField='playCs2' toNode='ClockCs2' toField='set_startTime'/>
1512            < ROUTE  fromNode='PlayerPianoScript' fromField='playD2' toNode='PitchD2' toField='set_startTime'/>
1513            < ROUTE  fromNode='PlayerPianoScript' fromField='playD2' toNode='ClockD2' toField='set_startTime'/>
1514            < ROUTE  fromNode='PlayerPianoScript' fromField='playDs2' toNode='PitchDs2' toField='set_startTime'/>
1515            < ROUTE  fromNode='PlayerPianoScript' fromField='playDs2' toNode='ClockDs2' toField='set_startTime'/>
1516            < ROUTE  fromNode='PlayerPianoScript' fromField='playE2' toNode='PitchE2' toField='set_startTime'/>
1517            < ROUTE  fromNode='PlayerPianoScript' fromField='playE2' toNode='ClockE2' toField='set_startTime'/>
1518            < ROUTE  fromNode='PlayerPianoScript' fromField='playF2' toNode='PitchF2' toField='set_startTime'/>
1519            < ROUTE  fromNode='PlayerPianoScript' fromField='playF2' toNode='ClockF2' toField='set_startTime'/>
1520            < ROUTE  fromNode='PlayerPianoScript' fromField='playFs2' toNode='PitchFs2' toField='set_startTime'/>
1521            < ROUTE  fromNode='PlayerPianoScript' fromField='playFs2' toNode='ClockFs2' toField='set_startTime'/>
1522            < ROUTE  fromNode='PlayerPianoScript' fromField='playG2' toNode='PitchG2' toField='set_startTime'/>
1523            < ROUTE  fromNode='PlayerPianoScript' fromField='playG2' toNode='ClockG2' toField='set_startTime'/>
1524            < ROUTE  fromNode='PlayerPianoScript' fromField='playGs2' toNode='PitchGs2' toField='set_startTime'/>
1525            < ROUTE  fromNode='PlayerPianoScript' fromField='playGs2' toNode='ClockGs2' toField='set_startTime'/>
1526            < ROUTE  fromNode='PlayerPianoScript' fromField='playA3' toNode='PitchA3' toField='set_startTime'/>
1527            < ROUTE  fromNode='PlayerPianoScript' fromField='playA3' toNode='ClockA3' toField='set_startTime'/>
1528            < ROUTE  fromNode='PlayerPianoScript' fromField='playAs3' toNode='PitchAs3' toField='set_startTime'/>
1529            < ROUTE  fromNode='PlayerPianoScript' fromField='playAs3' toNode='ClockAs3' toField='set_startTime'/>
1530            < ROUTE  fromNode='PlayerPianoScript' fromField='playB3' toNode='PitchB3' toField='set_startTime'/>
1531            < ROUTE  fromNode='PlayerPianoScript' fromField='playB3' toNode='ClockB3' toField='set_startTime'/>
1532            < ROUTE  fromNode='PlayerPianoScript' fromField='playC3' toNode='PitchC3' toField='set_startTime'/>
1533            < ROUTE  fromNode='PlayerPianoScript' fromField='playC3' toNode='ClockC3' toField='set_startTime'/>
1534            < ROUTE  fromNode='PlayerPianoScript' fromField='playCs3' toNode='PitchCs3' toField='set_startTime'/>
1535            < ROUTE  fromNode='PlayerPianoScript' fromField='playCs3' toNode='ClockCs3' toField='set_startTime'/>
1536            < ROUTE  fromNode='PlayerPianoScript' fromField='playD3' toNode='PitchD3' toField='set_startTime'/>
1537            < ROUTE  fromNode='PlayerPianoScript' fromField='playD3' toNode='ClockD3' toField='set_startTime'/>
1538            < ROUTE  fromNode='PlayerPianoScript' fromField='playDs3' toNode='PitchDs3' toField='set_startTime'/>
1539            < ROUTE  fromNode='PlayerPianoScript' fromField='playDs3' toNode='ClockDs3' toField='set_startTime'/>
1540            < ROUTE  fromNode='PlayerPianoScript' fromField='playE3' toNode='PitchE3' toField='set_startTime'/>
1541            < ROUTE  fromNode='PlayerPianoScript' fromField='playE3' toNode='ClockE3' toField='set_startTime'/>
1542            < ROUTE  fromNode='PlayerPianoScript' fromField='playF3' toNode='PitchF3' toField='set_startTime'/>
1543            < ROUTE  fromNode='PlayerPianoScript' fromField='playF3' toNode='ClockF3' toField='set_startTime'/>
1544            < ROUTE  fromNode='PlayerPianoScript' fromField='playFs3' toNode='PitchFs3' toField='set_startTime'/>
1545            < ROUTE  fromNode='PlayerPianoScript' fromField='playFs3' toNode='ClockFs3' toField='set_startTime'/>
1546            < ROUTE  fromNode='PlayerPianoScript' fromField='playG3' toNode='PitchG3' toField='set_startTime'/>
1547            < ROUTE  fromNode='PlayerPianoScript' fromField='playG3' toNode='ClockG3' toField='set_startTime'/>
1548            < ROUTE  fromNode='PlayerPianoScript' fromField='playGs3' toNode='PitchGs3' toField='set_startTime'/>
1549            < ROUTE  fromNode='PlayerPianoScript' fromField='playGs3' toNode='ClockGs3' toField='set_startTime'/>
1550            < ROUTE  fromNode='PlayerPianoScript' fromField='playA4' toNode='PitchA4' toField='set_startTime'/>
1551            < ROUTE  fromNode='PlayerPianoScript' fromField='playA4' toNode='ClockA4' toField='set_startTime'/>
1552            < ROUTE  fromNode='PlayerPianoScript' fromField='playAs4' toNode='PitchAs4' toField='set_startTime'/>
1553            < ROUTE  fromNode='PlayerPianoScript' fromField='playAs4' toNode='ClockAs4' toField='set_startTime'/>
1554            < ROUTE  fromNode='PlayerPianoScript' fromField='playB4' toNode='PitchB4' toField='set_startTime'/>
1555            < ROUTE  fromNode='PlayerPianoScript' fromField='playB4' toNode='ClockB4' toField='set_startTime'/>
1556            < ROUTE  fromNode='PlayerPianoScript' fromField='playC4' toNode='PitchC4' toField='set_startTime'/>
1557            < ROUTE  fromNode='PlayerPianoScript' fromField='playC4' toNode='ClockC4' toField='set_startTime'/>
1558            < ROUTE  fromNode='PlayerPianoScript' fromField='playCs4' toNode='PitchCs4' toField='set_startTime'/>
1559            < ROUTE  fromNode='PlayerPianoScript' fromField='playCs4' toNode='ClockCs4' toField='set_startTime'/>
1560            < ROUTE  fromNode='PlayerPianoScript' fromField='playD4' toNode='PitchD4' toField='set_startTime'/>
1561            < ROUTE  fromNode='PlayerPianoScript' fromField='playD4' toNode='ClockD4' toField='set_startTime'/>
1562            < ROUTE  fromNode='PlayerPianoScript' fromField='playDs4' toNode='PitchDs4' toField='set_startTime'/>
1563            < ROUTE  fromNode='PlayerPianoScript' fromField='playDs4' toNode='ClockDs4' toField='set_startTime'/>
1564            < ROUTE  fromNode='PlayerPianoScript' fromField='playE4' toNode='PitchE4' toField='set_startTime'/>
1565            < ROUTE  fromNode='PlayerPianoScript' fromField='playE4' toNode='ClockE4' toField='set_startTime'/>
1566            < ROUTE  fromNode='PlayerPianoScript' fromField='playF4' toNode='PitchF4' toField='set_startTime'/>
1567            < ROUTE  fromNode='PlayerPianoScript' fromField='playF4' toNode='ClockF4' toField='set_startTime'/>
1568            < ROUTE  fromNode='PlayerPianoScript' fromField='playFs4' toNode='PitchFs4' toField='set_startTime'/>
1569            < ROUTE  fromNode='PlayerPianoScript' fromField='playFs4' toNode='ClockFs4' toField='set_startTime'/>
1570            < ROUTE  fromNode='PlayerPianoScript' fromField='playG4' toNode='PitchG4' toField='set_startTime'/>
1571            < ROUTE  fromNode='PlayerPianoScript' fromField='playG4' toNode='ClockG4' toField='set_startTime'/>
1572            < ROUTE  fromNode='PlayerPianoScript' fromField='playGs4' toNode='PitchGs4' toField='set_startTime'/>
1573            < ROUTE  fromNode='PlayerPianoScript' fromField='playGs4' toNode='ClockGs4' toField='set_startTime'/>
1574            < ROUTE  fromNode='PlayerPianoScript' fromField='playB5' toNode='ClockB5' toField='set_startTime'/>
1575            < ROUTE  fromNode='PlayerPianoScript' fromField='playC5' toNode='PitchC5' toField='set_startTime'/>
1576            < ROUTE  fromNode='PlayerPianoScript' fromField='playC5' toNode='ClockC5' toField='set_startTime'/>
1577            < ROUTE  fromNode='PlayerPianoScript' fromField='playCs5' toNode='PitchCs5' toField='set_startTime'/>
1578            < ROUTE  fromNode='PlayerPianoScript' fromField='playCs5' toNode='ClockCs5' toField='set_startTime'/>
1579            < ROUTE  fromNode='PlayerPianoScript' fromField='playD5' toNode='PitchD5' toField='set_startTime'/>
1580            < ROUTE  fromNode='PlayerPianoScript' fromField='playD5' toNode='ClockD5' toField='set_startTime'/>
1581            < ROUTE  fromNode='PlayerPianoScript' fromField='playDs5' toNode='PitchDs5' toField='set_startTime'/>
1582            < ROUTE  fromNode='PlayerPianoScript' fromField='playDs5' toNode='ClockDs5' toField='set_startTime'/>
1583            < ROUTE  fromNode='PlayerPianoScript' fromField='playE5' toNode='PitchE5' toField='set_startTime'/>
1584            < ROUTE  fromNode='PlayerPianoScript' fromField='playE5' toNode='ClockE5' toField='set_startTime'/>
1585            < ROUTE  fromNode='PlayerPianoScript' fromField='playF5' toNode='PitchF5' toField='set_startTime'/>
1586            < ROUTE  fromNode='PlayerPianoScript' fromField='playF5' toNode='ClockF5' toField='set_startTime'/>
1587            < ROUTE  fromNode='PlayerPianoScript' fromField='playFs5' toNode='PitchFs5' toField='set_startTime'/>
1588            < ROUTE  fromNode='PlayerPianoScript' fromField='playFs5' toNode='ClockFs5' toField='set_startTime'/>
1589            < ROUTE  fromNode='PlayerPianoScript' fromField='playG5' toNode='PitchG5' toField='set_startTime'/>
1590            < ROUTE  fromNode='PlayerPianoScript' fromField='playG5' toNode='ClockG5' toField='set_startTime'/>
1591            < ROUTE  fromNode='PlayerPianoScript' fromField='playGs5' toNode='PitchGs5' toField='set_startTime'/>
1592            < ROUTE  fromNode='PlayerPianoScript' fromField='playGs5' toNode='ClockGs5' toField='set_startTime'/>
1593            < ROUTE  fromNode='PlayerPianoScript' fromField='playA6' toNode='PitchA6' toField='set_startTime'/>
1594            < ROUTE  fromNode='PlayerPianoScript' fromField='playA6' toNode='ClockA6' toField='set_startTime'/>
1595            < ROUTE  fromNode='PlayerPianoScript' fromField='playAs6' toNode='PitchAs6' toField='set_startTime'/>
1596            < ROUTE  fromNode='PlayerPianoScript' fromField='playAs6' toNode='ClockAs6' toField='set_startTime'/>
1597            < ROUTE  fromNode='PlayerPianoScript' fromField='playB6' toNode='PitchB6' toField='set_startTime'/>
1598            < ROUTE  fromNode='PlayerPianoScript' fromField='playB6' toNode='ClockB6' toField='set_startTime'/>
1599            < ROUTE  fromNode='PlayerPianoScript' fromField='playC6' toNode='PitchC6' toField='set_startTime'/>
1600            < ROUTE  fromNode='PlayerPianoScript' fromField='playC6' toNode='ClockC6' toField='set_startTime'/>
1601            < ROUTE  fromNode='PlayerPianoScript' fromField='playCs6' toNode='PitchCs6' toField='set_startTime'/>
1602            < ROUTE  fromNode='PlayerPianoScript' fromField='playCs6' toNode='ClockCs6' toField='set_startTime'/>
1603            < ROUTE  fromNode='PlayerPianoScript' fromField='playD6' toNode='PitchD6' toField='set_startTime'/>
1604            < ROUTE  fromNode='PlayerPianoScript' fromField='playD6' toNode='ClockD6' toField='set_startTime'/>
1605            < ROUTE  fromNode='PlayerPianoScript' fromField='playDs6' toNode='PitchDs6' toField='set_startTime'/>
1606            < ROUTE  fromNode='PlayerPianoScript' fromField='playDs6' toNode='ClockDs6' toField='set_startTime'/>
1607            < ROUTE  fromNode='PlayerPianoScript' fromField='playE6' toNode='PitchE6' toField='set_startTime'/>
1608            < ROUTE  fromNode='PlayerPianoScript' fromField='playE6' toNode='ClockE6' toField='set_startTime'/>
1609            < ROUTE  fromNode='PlayerPianoScript' fromField='playF6' toNode='PitchF6' toField='set_startTime'/>
1610            < ROUTE  fromNode='PlayerPianoScript' fromField='playF6' toNode='ClockF6' toField='set_startTime'/>
1611            < ROUTE  fromNode='PlayerPianoScript' fromField='playFs6' toNode='PitchFs6' toField='set_startTime'/>
1612            < ROUTE  fromNode='PlayerPianoScript' fromField='playFs6' toNode='ClockFs6' toField='set_startTime'/>
1613            < ROUTE  fromNode='PlayerPianoScript' fromField='playG6' toNode='PitchG6' toField='set_startTime'/>
1614            < ROUTE  fromNode='PlayerPianoScript' fromField='playG6' toNode='ClockG6' toField='set_startTime'/>
1615            < ROUTE  fromNode='PlayerPianoScript' fromField='playGs6' toNode='PitchGs6' toField='set_startTime'/>
1616            < ROUTE  fromNode='PlayerPianoScript' fromField='playGs6' toNode='ClockGs6' toField='set_startTime'/>
1617            < ROUTE  fromNode='PlayerPianoScript' fromField='playA7' toNode='PitchA7' toField='set_startTime'/>
1618            < ROUTE  fromNode='PlayerPianoScript' fromField='playA7' toNode='ClockA7' toField='set_startTime'/>
1619            < ROUTE  fromNode='PlayerPianoScript' fromField='playAs7' toNode='PitchAs7' toField='set_startTime'/>
1620            < ROUTE  fromNode='PlayerPianoScript' fromField='playAs7' toNode='ClockAs7' toField='set_startTime'/>
1621            < ROUTE  fromNode='PlayerPianoScript' fromField='playB7' toNode='PitchB7' toField='set_startTime'/>
1622            < ROUTE  fromNode='PlayerPianoScript' fromField='playB7' toNode='ClockB7' toField='set_startTime'/>
1623            < ROUTE  fromNode='PlayerPianoScript' fromField='playC7' toNode='PitchC7' toField='set_startTime'/>
1624            < ROUTE  fromNode='PlayerPianoScript' fromField='playC7' toNode='ClockC7' toField='set_startTime'/>
1625            < ROUTE  fromNode='PlayerPianoScript' fromField='playCs7' toNode='PitchCs7' toField='set_startTime'/>
1626            < ROUTE  fromNode='PlayerPianoScript' fromField='playCs7' toNode='ClockCs7' toField='set_startTime'/>
1627            < ROUTE  fromNode='PlayerPianoScript' fromField='playD7' toNode='PitchD7' toField='set_startTime'/>
1628            < ROUTE  fromNode='PlayerPianoScript' fromField='playD7' toNode='ClockD7' toField='set_startTime'/>
1629            < ROUTE  fromNode='PlayerPianoScript' fromField='playDs7' toNode='PitchDs7' toField='set_startTime'/>
1630            < ROUTE  fromNode='PlayerPianoScript' fromField='playDs7' toNode='ClockDs7' toField='set_startTime'/>
1631            < ROUTE  fromNode='PlayerPianoScript' fromField='playE7' toNode='PitchE7' toField='set_startTime'/>
1632            < ROUTE  fromNode='PlayerPianoScript' fromField='playE7' toNode='ClockE7' toField='set_startTime'/>
1633            < ROUTE  fromNode='PlayerPianoScript' fromField='playF7' toNode='PitchF7' toField='set_startTime'/>
1634            < ROUTE  fromNode='PlayerPianoScript' fromField='playF7' toNode='ClockF7' toField='set_startTime'/>
1635            < ROUTE  fromNode='PlayerPianoScript' fromField='playFs7' toNode='PitchFs7' toField='set_startTime'/>
1636            < ROUTE  fromNode='PlayerPianoScript' fromField='playFs7' toNode='ClockFs7' toField='set_startTime'/>
1637            < ROUTE  fromNode='PlayerPianoScript' fromField='playG7' toNode='PitchG7' toField='set_startTime'/>
1638            < ROUTE  fromNode='PlayerPianoScript' fromField='playG7' toNode='ClockG7' toField='set_startTime'/>
1639            < ROUTE  fromNode='PlayerPianoScript' fromField='playGs7' toNode='PitchGs7' toField='set_startTime'/>
1640            < ROUTE  fromNode='PlayerPianoScript' fromField='playGs7' toNode='ClockGs7' toField='set_startTime'/>
1641            < ROUTE  fromNode='PlayerPianoScript' fromField='playA8' toNode='PitchA8' toField='set_startTime'/>
1642            < ROUTE  fromNode='PlayerPianoScript' fromField='playA8' toNode='ClockA8' toField='set_startTime'/>
1643            < ROUTE  fromNode='PlayerPianoScript' fromField='playAs8' toNode='PitchAs8' toField='set_startTime'/>
1644            < ROUTE  fromNode='PlayerPianoScript' fromField='playAs8' toNode='ClockAs8' toField='set_startTime'/>
1645            < ROUTE  fromNode='PlayerPianoScript' fromField='playB8' toNode='PitchB8' toField='set_startTime'/>
1646            < ROUTE  fromNode='PlayerPianoScript' fromField='playB8' toNode='ClockB8' toField='set_startTime'/>
1647            < ROUTE  fromNode='PlayerPianoScript' fromField='playC8' toNode='PitchC8' toField='set_startTime'/>
1648            < ROUTE  fromNode='PlayerPianoScript' fromField='playC8' toNode='ClockC8' toField='set_startTime'/>
1649       </Scene>
1650  </X3D>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->

<!-- to top 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
-->
X3D Tooltips element index: Appearance, AudioClip, Box, DirectionalLight, field, Group, head, Material, meta, PositionInterpolator, ROUTE, Scene, Script, Shape, Sound, Sphere, TimeSensor, TouchSensor, Transform, Viewpoint, WorldInfo, X3D, accessType and type, XML data types, field types

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

Additional guidance on X3D animation can be found in the 10-Step Animation Design Process and Event Tracing hint sheets. Have fun with X3D! 😀

-->
<!-- 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. -->