{"id":0,"registry":{"0":{"submorphs":[{"__isSmartRef__":true,"id":1},{"__isSmartRef__":true,"id":32},{"__isSmartRef__":true,"id":63},{"__isSmartRef__":true,"id":94},{"__isSmartRef__":true,"id":108},{"__isSmartRef__":true,"id":139}],"scripts":[{"__isSmartRef__":true,"id":170}],"shape":{"__isSmartRef__":true,"id":171},"id":"891758BE-5C4A-4EA8-BD66-BDCEBF0E39D2","eventHandler":{"__isSmartRef__":true,"id":172},"droppingEnabled":true,"halosEnabled":true,"showsHalos":false,"layout":{"__isSmartRef__":true,"id":173},"name":"RhythmWheel","partsBinMetaInfo":{"__isSmartRef__":true,"id":174},"derivationIds":[113,"07BC3F00-A1CC-4E18-8B69-527B6067A724","0E2EF047-734A-43A5-A887-5BDAF550496C","9C4F11D7-24F8-4687-9CCD-515C286B8715"],"_ClipMode":"visible","_StyleSheet":{"__isSmartRef__":true,"id":186},"_StyleClassNames":["Morph"],"activeSounds":[{"__isSmartRef__":true,"id":189}],"patchName":"plucked","patchSound":{"__isSmartRef__":true,"id":190},"keyDown":null,"sampRate":44100,"nChans":2,"doNotSerialize":["audioHandle"],"moved":true,"isBeingDragged":false,"magnets":[{"__isSmartRef__":true,"id":191},{"__isSmartRef__":true,"id":192},{"__isSmartRef__":true,"id":193},{"__isSmartRef__":true,"id":194},{"__isSmartRef__":true,"id":195},{"__isSmartRef__":true,"id":196},{"__isSmartRef__":true,"id":197},{"__isSmartRef__":true,"id":198}],"__serializedExpressions__":["_Position"],"_Scale":1,"_Rotation":0,"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":199},"__LivelyClassName__":"lively.morphic.Morph","__SourceModuleName__":"Global.lively.morphic.Core","_Position":"lively.pt(0.0,0.0)"},"1":{"submorphs":[],"scripts":[],"id":"66055A6B-AD8D-4B17-A938-2E64456EE58B","shape":{"__isSmartRef__":true,"id":2},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"__serializedExpressions__":["_Position"],"showsHalos":false,"name":"T","partsBinMetaInfo":{"__isSmartRef__":true,"id":3},"eventHandler":{"__isSmartRef__":true,"id":21},"derivationIds":[127,"F0291F62-F100-480C-AEBF-0230398F7983","AE8B5ED7-E305-45BC-BE4A-1C28A49EE12B","39BA345C-17FA-45A0-BAC2-F0CF5654ACF8","FE91EA31-D8AE-461B-8A49-95DA5FBAE5B4","F38439A3-2F4E-4AC2-BF73-2633C00B1393","6748F5B5-2284-4748-A6EE-F1A261CBAD0B","BBAFB862-93AE-4F89-BCFF-9F1C67B7FE4C","7EC17E78-593A-4CC8-B7E3-859BCBBFE785"],"partTests":{"__isSmartRef__":true,"id":22},"_ClipMode":"visible","moved":true,"owner":{"__isSmartRef__":true,"id":0},"isBeingDragged":false,"notenumber":10,"_Rotation":0,"_Scale":1,"doNotSerialize":["soundPlaying"],"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":27},"__LivelyClassName__":"lively.morphic.Box","__SourceModuleName__":"Global.lively.morphic.Core","_Position":"lively.pt(-8.0,-72.0)"},"2":{"__serializedExpressions__":["position","_Extent","_BorderColor","_Fill","_Padding"],"_BorderWidth":1,"_ClipMode":"visible","_BorderRadius":22.58,"_Opacity":1,"_BorderStyle":"solid","_AppearanceStylingMode":false,"_BorderStylingMode":false,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes","position":"lively.pt(0.0,0.0)","_Extent":"lively.pt(20.0,20.0)","_BorderColor":"Color.rgb(0,0,0)","_Fill":"Color.rgb(0,0,204)","_Padding":"lively.rect(0,0,0,0)"},"3":{"partsSpaceName":"PartsBin/Basic","comment":"A simple box morph. A really orange one. Its amazing what you can build out of simple boxes.... Who needs stars when you got orange rectangles!","migrationLevel":4,"partName":"Rectangle","changes":[{"__isSmartRef__":true,"id":4},{"__isSmartRef__":true,"id":6},{"__isSmartRef__":true,"id":8},{"__isSmartRef__":true,"id":10},{"__isSmartRef__":true,"id":12},{"__isSmartRef__":true,"id":14},{"__isSmartRef__":true,"id":16},{"__isSmartRef__":true,"id":18}],"lastModifiedDate":{"__isSmartRef__":true,"id":20},"revisionOnLoad":184624,"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo","__SourceModuleName__":"Global.lively.PartsBin"},"4":{"date":{"__isSmartRef__":true,"id":5},"author":"undefined","message":"whoopsie","id":"3F17A2D2-3C24-424B-B0FA-E43112267D23"},"5":{"isSerializedDate":true,"string":"Thu May 03 2012 06:51:36 GMT-0700 (PDT)"},"6":{"date":{"__isSmartRef__":true,"id":7},"author":"undefined","message":"whoopsie","id":"CEA5DCD5-2DB7-40AD-A776-262A7A0666FC"},"7":{"isSerializedDate":true,"string":"Thu May 03 2012 06:51:30 GMT-0700 (PDT)"},"8":{"date":{"__isSmartRef__":true,"id":9},"author":"undefined","message":"sorry","id":"44B56D2E-9B59-4C67-A305-49A6E10E66C2"},"9":{"isSerializedDate":true,"string":"Wed Mar 14 2012 02:53:45 GMT-0700 (PDT)"},"10":{"date":{"__isSmartRef__":true,"id":11},"author":"fbo","message":"","id":"BD1C654D-9100-4B66-BC62-B15FF2498B2B"},"11":{"isSerializedDate":true,"string":"Fri Feb 24 2012 17:59:09 GMT-0800 (PST)"},"12":{"date":{"__isSmartRef__":true,"id":13},"author":"undefined","message":"css transitions","id":"1004E0FC-D96B-4F40-B3E0-F514A3FCFFD7"},"13":{"isSerializedDate":true,"string":"Wed Mar 14 2012 02:42:26 GMT-0700 (PDT)"},"14":{"date":{"__isSmartRef__":true,"id":15},"author":"undefined","message":"suddenly, the rectangle became a CarDemo","id":"B5083AA8-9BAE-48DD-A6B4-FD7DB3998350"},"15":{"isSerializedDate":true,"string":"Mon Apr 09 2012 04:42:07 GMT-0700 (PDT)"},"16":{"date":{"__isSmartRef__":true,"id":17},"author":"bgnauk","message":"no comment","id":"0124E570-50B7-4CE3-83A1-6E7BA89B5CD8"},"17":{"isSerializedDate":true,"string":"Mon Jun 18 2012 10:35:08 GMT-0700 (PDT)"},"18":{"date":{"__isSmartRef__":true,"id":19},"author":"jenslincke","message":"I want my blue rectangle back!","id":"5AA9291A-869F-4D36-8095-4721B5A5B205"},"19":{"isSerializedDate":true,"string":"Thu Nov 22 2012 01:35:51 GMT-0800 (PST)"},"20":{"isSerializedDate":true,"string":"Thu Nov 22 2012 01:33:25 GMT-0800 (PST)"},"21":{"morph":{"__isSmartRef__":true,"id":1},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"22":{"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":23}},"23":{"test01IsMorph":{"__isSmartRef__":true,"id":24}},"24":{"varMapping":{"__isSmartRef__":true,"id":25},"source":"function test01IsMorph(aPart) {\n    this.assert(aPart.isMorph, 'rectangle should be a morph');\n}","funcProperties":{"__isSmartRef__":true,"id":26},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"25":{"this":{"__isSmartRef__":true,"id":22}},"26":{},"27":{"play":{"__isSmartRef__":true,"id":28}},"28":{"varMapping":{"__isSmartRef__":true,"id":29},"source":"function play() {\n    this.owner.pianoKeyDown(this);\n    this.owner.pianoKeyUp.bind(this.owner, this).delay(0.15);\n}","funcProperties":{"__isSmartRef__":true,"id":30},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"29":{"this":{"__isSmartRef__":true,"id":1}},"30":{"timestamp":{"__isSmartRef__":true,"id":31},"user":"cschuster","tags":[]},"31":{"isSerializedDate":true,"string":"Thu Nov 29 2012 23:43:26 GMT-0800 (PST)"},"32":{"submorphs":[],"scripts":[],"id":"57B84613-39E3-4895-93CB-7CCC4F26E5F8","shape":{"__isSmartRef__":true,"id":33},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"showsHalos":false,"name":"R","partsBinMetaInfo":{"__isSmartRef__":true,"id":34},"eventHandler":{"__isSmartRef__":true,"id":52},"derivationIds":[127,"F0291F62-F100-480C-AEBF-0230398F7983","AE8B5ED7-E305-45BC-BE4A-1C28A49EE12B","39BA345C-17FA-45A0-BAC2-F0CF5654ACF8","FE91EA31-D8AE-461B-8A49-95DA5FBAE5B4","F38439A3-2F4E-4AC2-BF73-2633C00B1393","6748F5B5-2284-4748-A6EE-F1A261CBAD0B","BBAFB862-93AE-4F89-BCFF-9F1C67B7FE4C","7EC17E78-593A-4CC8-B7E3-859BCBBFE785","66055A6B-AD8D-4B17-A938-2E64456EE58B"],"partTests":{"__isSmartRef__":true,"id":53},"_ClipMode":"visible","moved":true,"isBeingDragged":false,"notenumber":14,"__serializedExpressions__":["_Position"],"owner":{"__isSmartRef__":true,"id":0},"_Rotation":0,"_Scale":1,"doNotSerialize":["soundPlaying"],"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":58},"__LivelyClassName__":"lively.morphic.Box","__SourceModuleName__":"Global.lively.morphic.Core","_Position":"lively.pt(-7.0,50.0)"},"33":{"_BorderWidth":1,"_ClipMode":"visible","_BorderRadius":22.58,"_Opacity":1,"_BorderStyle":"solid","_AppearanceStylingMode":false,"_BorderStylingMode":false,"__serializedExpressions__":["position","_Extent","_BorderColor","_Fill","_Padding"],"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes","position":"lively.pt(0.0,0.0)","_Extent":"lively.pt(20.0,20.0)","_BorderColor":"Color.rgb(0,0,0)","_Fill":"Color.rgb(0,204,4)","_Padding":"lively.rect(0,0,0,0)"},"34":{"partsSpaceName":"PartsBin/Basic","comment":"A simple box morph. A really orange one. Its amazing what you can build out of simple boxes.... Who needs stars when you got orange rectangles!","migrationLevel":4,"partName":"Rectangle","changes":[{"__isSmartRef__":true,"id":35},{"__isSmartRef__":true,"id":37},{"__isSmartRef__":true,"id":39},{"__isSmartRef__":true,"id":41},{"__isSmartRef__":true,"id":43},{"__isSmartRef__":true,"id":45},{"__isSmartRef__":true,"id":47},{"__isSmartRef__":true,"id":49}],"lastModifiedDate":{"__isSmartRef__":true,"id":51},"revisionOnLoad":184624,"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo","__SourceModuleName__":"Global.lively.PartsBin"},"35":{"date":{"__isSmartRef__":true,"id":36},"author":"undefined","message":"whoopsie","id":"3F17A2D2-3C24-424B-B0FA-E43112267D23"},"36":{"isSerializedDate":true,"string":"Thu May 03 2012 06:51:36 GMT-0700 (PDT)"},"37":{"date":{"__isSmartRef__":true,"id":38},"author":"undefined","message":"whoopsie","id":"CEA5DCD5-2DB7-40AD-A776-262A7A0666FC"},"38":{"isSerializedDate":true,"string":"Thu May 03 2012 06:51:30 GMT-0700 (PDT)"},"39":{"date":{"__isSmartRef__":true,"id":40},"author":"undefined","message":"sorry","id":"44B56D2E-9B59-4C67-A305-49A6E10E66C2"},"40":{"isSerializedDate":true,"string":"Wed Mar 14 2012 02:53:45 GMT-0700 (PDT)"},"41":{"date":{"__isSmartRef__":true,"id":42},"author":"fbo","message":"","id":"BD1C654D-9100-4B66-BC62-B15FF2498B2B"},"42":{"isSerializedDate":true,"string":"Fri Feb 24 2012 17:59:09 GMT-0800 (PST)"},"43":{"date":{"__isSmartRef__":true,"id":44},"author":"undefined","message":"css transitions","id":"1004E0FC-D96B-4F40-B3E0-F514A3FCFFD7"},"44":{"isSerializedDate":true,"string":"Wed Mar 14 2012 02:42:26 GMT-0700 (PDT)"},"45":{"date":{"__isSmartRef__":true,"id":46},"author":"undefined","message":"suddenly, the rectangle became a CarDemo","id":"B5083AA8-9BAE-48DD-A6B4-FD7DB3998350"},"46":{"isSerializedDate":true,"string":"Mon Apr 09 2012 04:42:07 GMT-0700 (PDT)"},"47":{"date":{"__isSmartRef__":true,"id":48},"author":"bgnauk","message":"no comment","id":"0124E570-50B7-4CE3-83A1-6E7BA89B5CD8"},"48":{"isSerializedDate":true,"string":"Mon Jun 18 2012 10:35:08 GMT-0700 (PDT)"},"49":{"date":{"__isSmartRef__":true,"id":50},"author":"jenslincke","message":"I want my blue rectangle back!","id":"5AA9291A-869F-4D36-8095-4721B5A5B205"},"50":{"isSerializedDate":true,"string":"Thu Nov 22 2012 01:35:51 GMT-0800 (PST)"},"51":{"isSerializedDate":true,"string":"Thu Nov 22 2012 01:33:25 GMT-0800 (PST)"},"52":{"morph":{"__isSmartRef__":true,"id":32},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"53":{"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":54}},"54":{"test01IsMorph":{"__isSmartRef__":true,"id":55}},"55":{"varMapping":{"__isSmartRef__":true,"id":56},"source":"function test01IsMorph(aPart) {\n    this.assert(aPart.isMorph, 'rectangle should be a morph');\n}","funcProperties":{"__isSmartRef__":true,"id":57},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"56":{"this":{"__isSmartRef__":true,"id":53}},"57":{},"58":{"play":{"__isSmartRef__":true,"id":59}},"59":{"varMapping":{"__isSmartRef__":true,"id":60},"source":"function play() {\n    this.owner.pianoKeyDown(this);\n    this.owner.pianoKeyUp.bind(this.owner, this).delay(0.15);\n}","funcProperties":{"__isSmartRef__":true,"id":61},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"60":{"this":{"__isSmartRef__":true,"id":32}},"61":{"timestamp":{"__isSmartRef__":true,"id":62},"user":"cschuster","tags":[]},"62":{"isSerializedDate":true,"string":"Thu Nov 29 2012 23:43:39 GMT-0800 (PST)"},"63":{"submorphs":[],"scripts":[],"id":"B00F6D41-27FB-47C4-BEFC-5DF854D1CA58","shape":{"__isSmartRef__":true,"id":64},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"showsHalos":false,"name":"S","partsBinMetaInfo":{"__isSmartRef__":true,"id":65},"eventHandler":{"__isSmartRef__":true,"id":83},"derivationIds":[127,"F0291F62-F100-480C-AEBF-0230398F7983","AE8B5ED7-E305-45BC-BE4A-1C28A49EE12B","39BA345C-17FA-45A0-BAC2-F0CF5654ACF8","FE91EA31-D8AE-461B-8A49-95DA5FBAE5B4","F38439A3-2F4E-4AC2-BF73-2633C00B1393","6748F5B5-2284-4748-A6EE-F1A261CBAD0B","BBAFB862-93AE-4F89-BCFF-9F1C67B7FE4C","7EC17E78-593A-4CC8-B7E3-859BCBBFE785","66055A6B-AD8D-4B17-A938-2E64456EE58B","57B84613-39E3-4895-93CB-7CCC4F26E5F8"],"partTests":{"__isSmartRef__":true,"id":84},"_ClipMode":"visible","moved":true,"isBeingDragged":false,"notenumber":17,"__serializedExpressions__":["_Position"],"owner":{"__isSmartRef__":true,"id":0},"_Rotation":0,"_Scale":1,"doNotSerialize":["soundPlaying"],"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":89},"__LivelyClassName__":"lively.morphic.Box","__SourceModuleName__":"Global.lively.morphic.Core","_Position":"lively.pt(53.0,-11.0)"},"64":{"_BorderWidth":1,"_ClipMode":"visible","_BorderRadius":22.58,"_Opacity":1,"_BorderStyle":"solid","_AppearanceStylingMode":false,"_BorderStylingMode":false,"__serializedExpressions__":["position","_Extent","_BorderColor","_Fill","_Padding"],"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes","position":"lively.pt(0.0,0.0)","_Extent":"lively.pt(20.0,20.0)","_BorderColor":"Color.rgb(0,0,0)","_Fill":"Color.rgb(157,0,204)","_Padding":"lively.rect(0,0,0,0)"},"65":{"partsSpaceName":"PartsBin/Basic","comment":"A simple box morph. A really orange one. Its amazing what you can build out of simple boxes.... Who needs stars when you got orange rectangles!","migrationLevel":4,"partName":"Rectangle","changes":[{"__isSmartRef__":true,"id":66},{"__isSmartRef__":true,"id":68},{"__isSmartRef__":true,"id":70},{"__isSmartRef__":true,"id":72},{"__isSmartRef__":true,"id":74},{"__isSmartRef__":true,"id":76},{"__isSmartRef__":true,"id":78},{"__isSmartRef__":true,"id":80}],"lastModifiedDate":{"__isSmartRef__":true,"id":82},"revisionOnLoad":184624,"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo","__SourceModuleName__":"Global.lively.PartsBin"},"66":{"date":{"__isSmartRef__":true,"id":67},"author":"undefined","message":"whoopsie","id":"3F17A2D2-3C24-424B-B0FA-E43112267D23"},"67":{"isSerializedDate":true,"string":"Thu May 03 2012 06:51:36 GMT-0700 (PDT)"},"68":{"date":{"__isSmartRef__":true,"id":69},"author":"undefined","message":"whoopsie","id":"CEA5DCD5-2DB7-40AD-A776-262A7A0666FC"},"69":{"isSerializedDate":true,"string":"Thu May 03 2012 06:51:30 GMT-0700 (PDT)"},"70":{"date":{"__isSmartRef__":true,"id":71},"author":"undefined","message":"sorry","id":"44B56D2E-9B59-4C67-A305-49A6E10E66C2"},"71":{"isSerializedDate":true,"string":"Wed Mar 14 2012 02:53:45 GMT-0700 (PDT)"},"72":{"date":{"__isSmartRef__":true,"id":73},"author":"fbo","message":"","id":"BD1C654D-9100-4B66-BC62-B15FF2498B2B"},"73":{"isSerializedDate":true,"string":"Fri Feb 24 2012 17:59:09 GMT-0800 (PST)"},"74":{"date":{"__isSmartRef__":true,"id":75},"author":"undefined","message":"css transitions","id":"1004E0FC-D96B-4F40-B3E0-F514A3FCFFD7"},"75":{"isSerializedDate":true,"string":"Wed Mar 14 2012 02:42:26 GMT-0700 (PDT)"},"76":{"date":{"__isSmartRef__":true,"id":77},"author":"undefined","message":"suddenly, the rectangle became a CarDemo","id":"B5083AA8-9BAE-48DD-A6B4-FD7DB3998350"},"77":{"isSerializedDate":true,"string":"Mon Apr 09 2012 04:42:07 GMT-0700 (PDT)"},"78":{"date":{"__isSmartRef__":true,"id":79},"author":"bgnauk","message":"no comment","id":"0124E570-50B7-4CE3-83A1-6E7BA89B5CD8"},"79":{"isSerializedDate":true,"string":"Mon Jun 18 2012 10:35:08 GMT-0700 (PDT)"},"80":{"date":{"__isSmartRef__":true,"id":81},"author":"jenslincke","message":"I want my blue rectangle back!","id":"5AA9291A-869F-4D36-8095-4721B5A5B205"},"81":{"isSerializedDate":true,"string":"Thu Nov 22 2012 01:35:51 GMT-0800 (PST)"},"82":{"isSerializedDate":true,"string":"Thu Nov 22 2012 01:33:25 GMT-0800 (PST)"},"83":{"morph":{"__isSmartRef__":true,"id":63},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"84":{"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":85}},"85":{"test01IsMorph":{"__isSmartRef__":true,"id":86}},"86":{"varMapping":{"__isSmartRef__":true,"id":87},"source":"function test01IsMorph(aPart) {\n    this.assert(aPart.isMorph, 'rectangle should be a morph');\n}","funcProperties":{"__isSmartRef__":true,"id":88},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"87":{"this":{"__isSmartRef__":true,"id":84}},"88":{},"89":{"play":{"__isSmartRef__":true,"id":90}},"90":{"varMapping":{"__isSmartRef__":true,"id":91},"source":"function play() {\n    this.owner.pianoKeyDown(this);\n    this.owner.pianoKeyUp.bind(this.owner, this).delay(0.15);\n}","funcProperties":{"__isSmartRef__":true,"id":92},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"91":{"this":{"__isSmartRef__":true,"id":63}},"92":{"timestamp":{"__isSmartRef__":true,"id":93},"user":"cschuster","tags":[]},"93":{"isSerializedDate":true,"string":"Thu Nov 29 2012 23:43:33 GMT-0800 (PST)"},"94":{"submorphs":[],"scripts":[],"shape":{"__isSmartRef__":true,"id":95},"id":"A3BABD8A-924B-48FF-9C8B-3F035D54AF88","eventHandler":{"__isSmartRef__":true,"id":98},"droppingEnabled":false,"halosEnabled":true,"isBeingDragged":false,"__serializedExpressions__":["_Position"],"controlPoints":[{"__isSmartRef__":true,"id":99},{"__isSmartRef__":true,"id":100}],"showsHalos":false,"partsBinMetaInfo":{"__isSmartRef__":true,"id":101},"name":"Bar","derivationIds":[731],"_ClipMode":"visible","owner":{"__isSmartRef__":true,"id":0},"_Rotation":582.9028453360099,"_Scale":1,"#startLetters":"morphs","__serializedLivelyClosures__":{"__isSmartRef__":true,"id":103},"__LivelyClassName__":"lively.morphic.Path","__SourceModuleName__":"Global.lively.morphic.AdditionalMorphs","_Position":"lively.pt(3.0,1.0)"},"95":{"dontChangeShape":false,"cachedVertices":null,"_PathElements":[{"__isSmartRef__":true,"id":96},{"__isSmartRef__":true,"id":97}],"_ClipMode":"visible","__serializedExpressions__":["_Padding","_Position","_Extent","_BorderColor"],"_BorderWidth":2.184,"_Fill":null,"_BorderRadius":0,"_Opacity":1,"_BorderStyle":"solid","_AppearanceStylingMode":false,"_BorderStylingMode":false,"__LivelyClassName__":"lively.morphic.Shapes.Path","__SourceModuleName__":"Global.lively.morphic.PathShapes","_Padding":"lively.rect(0,0,0,0)","_Position":"lively.pt(-3.0,-70.0)","_Extent":"lively.pt(4.0,71.0)","_BorderColor":"Color.rgb(0,0,0)"},"96":{"isAbsolute":true,"x":-1,"y":-68,"__LivelyClassName__":"lively.morphic.Shapes.MoveTo","__SourceModuleName__":"Global.lively.morphic.PathShapes"},"97":{"isAbsolute":true,"x":0,"y":0,"__LivelyClassName__":"lively.morphic.Shapes.LineTo","__SourceModuleName__":"Global.lively.morphic.PathShapes"},"98":{"morph":{"__isSmartRef__":true,"id":94},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"99":{"morph":{"__isSmartRef__":true,"id":94},"index":0,"connectedMagnet":null,"__LivelyClassName__":"lively.morphic.ControlPoint","__SourceModuleName__":"Global.lively.morphic.AdditionalMorphs"},"100":{"morph":{"__isSmartRef__":true,"id":94},"index":1,"connectedMagnet":null,"#startLetters":"","__LivelyClassName__":"lively.morphic.ControlPoint","__SourceModuleName__":"Global.lively.morphic.AdditionalMorphs"},"101":{"requiredModules":[],"migrationLevel":4,"partsSpaceName":"PartsBin/Basic","comment":"a line","partName":"line","lastModifiedDate":{"__isSmartRef__":true,"id":102},"revisionOnLoad":148769,"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo","__SourceModuleName__":"Global.lively.PartsBin"},"102":{"isSerializedDate":true,"string":"Thu Sep 06 2012 19:04:46 GMT-0700 (PDT)"},"103":{"step":{"__isSmartRef__":true,"id":104}},"104":{"varMapping":{"__isSmartRef__":true,"id":105},"source":"function step() {\n    var oldPos = this.controlPoints.first().getGlobalPos();\n    var oldMorphs = this.world().morphsContainingPoint(oldPos);\n    this.rotateBy(0.1);\n    var newPos = this.controlPoints.first().getGlobalPos();\n    var newMorphs = this.world().morphsContainingPoint(newPos);\n    for (var i = 0; i < newMorphs.length; i++) {\n        var m = newMorphs[i];\n        if (m.owner !== this.owner) continue;\n        if (!oldMorphs.include(m) && Object.isFunction(m.play)) {\n            m.play();\n        }\n    }\n}","funcProperties":{"__isSmartRef__":true,"id":106},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"105":{"this":{"__isSmartRef__":true,"id":94}},"106":{"timestamp":{"__isSmartRef__":true,"id":107},"user":"cschuster","tags":[]},"107":{"isSerializedDate":true,"string":"Thu Nov 29 2012 23:41:50 GMT-0800 (PST)"},"108":{"submorphs":[],"scripts":[],"id":"9316E7B3-43F5-427E-9E86-9EF47A345B94","shape":{"__isSmartRef__":true,"id":109},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"showsHalos":false,"name":"Q","partsBinMetaInfo":{"__isSmartRef__":true,"id":110},"eventHandler":{"__isSmartRef__":true,"id":128},"derivationIds":[127,"F0291F62-F100-480C-AEBF-0230398F7983","AE8B5ED7-E305-45BC-BE4A-1C28A49EE12B","39BA345C-17FA-45A0-BAC2-F0CF5654ACF8","FE91EA31-D8AE-461B-8A49-95DA5FBAE5B4","F38439A3-2F4E-4AC2-BF73-2633C00B1393","6748F5B5-2284-4748-A6EE-F1A261CBAD0B","BBAFB862-93AE-4F89-BCFF-9F1C67B7FE4C","7EC17E78-593A-4CC8-B7E3-859BCBBFE785","66055A6B-AD8D-4B17-A938-2E64456EE58B","57B84613-39E3-4895-93CB-7CCC4F26E5F8","B00F6D41-27FB-47C4-BEFC-5DF854D1CA58","917D239A-A40C-47EB-98A7-E68013374FFD"],"partTests":{"__isSmartRef__":true,"id":129},"_ClipMode":"visible","moved":true,"isBeingDragged":false,"notenumber":12,"__serializedExpressions__":["_Position"],"owner":{"__isSmartRef__":true,"id":0},"_Rotation":0,"_Scale":1,"doNotSerialize":["soundPlaying"],"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":134},"__LivelyClassName__":"lively.morphic.Box","__SourceModuleName__":"Global.lively.morphic.Core","_Position":"lively.pt(39.0,-54.0)"},"109":{"_BorderWidth":1,"_ClipMode":"visible","_BorderRadius":22.58,"_Opacity":1,"_BorderStyle":"solid","_AppearanceStylingMode":false,"_BorderStylingMode":false,"__serializedExpressions__":["position","_Extent","_BorderColor","_Fill","_Padding"],"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes","position":"lively.pt(0.0,0.0)","_Extent":"lively.pt(20.0,20.0)","_BorderColor":"Color.rgb(0,0,0)","_Fill":"Color.rgb(204,90,0)","_Padding":"lively.rect(0,0,0,0)"},"110":{"partsSpaceName":"PartsBin/Basic","comment":"A simple box morph. A really orange one. Its amazing what you can build out of simple boxes.... Who needs stars when you got orange rectangles!","migrationLevel":4,"partName":"Rectangle","changes":[{"__isSmartRef__":true,"id":111},{"__isSmartRef__":true,"id":113},{"__isSmartRef__":true,"id":115},{"__isSmartRef__":true,"id":117},{"__isSmartRef__":true,"id":119},{"__isSmartRef__":true,"id":121},{"__isSmartRef__":true,"id":123},{"__isSmartRef__":true,"id":125}],"lastModifiedDate":{"__isSmartRef__":true,"id":127},"revisionOnLoad":184624,"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo","__SourceModuleName__":"Global.lively.PartsBin"},"111":{"date":{"__isSmartRef__":true,"id":112},"author":"undefined","message":"whoopsie","id":"3F17A2D2-3C24-424B-B0FA-E43112267D23"},"112":{"isSerializedDate":true,"string":"Thu May 03 2012 06:51:36 GMT-0700 (PDT)"},"113":{"date":{"__isSmartRef__":true,"id":114},"author":"undefined","message":"whoopsie","id":"CEA5DCD5-2DB7-40AD-A776-262A7A0666FC"},"114":{"isSerializedDate":true,"string":"Thu May 03 2012 06:51:30 GMT-0700 (PDT)"},"115":{"date":{"__isSmartRef__":true,"id":116},"author":"undefined","message":"sorry","id":"44B56D2E-9B59-4C67-A305-49A6E10E66C2"},"116":{"isSerializedDate":true,"string":"Wed Mar 14 2012 02:53:45 GMT-0700 (PDT)"},"117":{"date":{"__isSmartRef__":true,"id":118},"author":"fbo","message":"","id":"BD1C654D-9100-4B66-BC62-B15FF2498B2B"},"118":{"isSerializedDate":true,"string":"Fri Feb 24 2012 17:59:09 GMT-0800 (PST)"},"119":{"date":{"__isSmartRef__":true,"id":120},"author":"undefined","message":"css transitions","id":"1004E0FC-D96B-4F40-B3E0-F514A3FCFFD7"},"120":{"isSerializedDate":true,"string":"Wed Mar 14 2012 02:42:26 GMT-0700 (PDT)"},"121":{"date":{"__isSmartRef__":true,"id":122},"author":"undefined","message":"suddenly, the rectangle became a CarDemo","id":"B5083AA8-9BAE-48DD-A6B4-FD7DB3998350"},"122":{"isSerializedDate":true,"string":"Mon Apr 09 2012 04:42:07 GMT-0700 (PDT)"},"123":{"date":{"__isSmartRef__":true,"id":124},"author":"bgnauk","message":"no comment","id":"0124E570-50B7-4CE3-83A1-6E7BA89B5CD8"},"124":{"isSerializedDate":true,"string":"Mon Jun 18 2012 10:35:08 GMT-0700 (PDT)"},"125":{"date":{"__isSmartRef__":true,"id":126},"author":"jenslincke","message":"I want my blue rectangle back!","id":"5AA9291A-869F-4D36-8095-4721B5A5B205"},"126":{"isSerializedDate":true,"string":"Thu Nov 22 2012 01:35:51 GMT-0800 (PST)"},"127":{"isSerializedDate":true,"string":"Thu Nov 22 2012 01:33:25 GMT-0800 (PST)"},"128":{"morph":{"__isSmartRef__":true,"id":108},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"129":{"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":130}},"130":{"test01IsMorph":{"__isSmartRef__":true,"id":131}},"131":{"varMapping":{"__isSmartRef__":true,"id":132},"source":"function test01IsMorph(aPart) {\n    this.assert(aPart.isMorph, 'rectangle should be a morph');\n}","funcProperties":{"__isSmartRef__":true,"id":133},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"132":{"this":{"__isSmartRef__":true,"id":129}},"133":{},"134":{"play":{"__isSmartRef__":true,"id":135}},"135":{"varMapping":{"__isSmartRef__":true,"id":136},"source":"function play() {\n    this.owner.pianoKeyDown(this);\n    this.owner.pianoKeyUp.bind(this.owner, this).delay(0.15);\n}","funcProperties":{"__isSmartRef__":true,"id":137},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"136":{"this":{"__isSmartRef__":true,"id":108}},"137":{"timestamp":{"__isSmartRef__":true,"id":138},"user":"cschuster","tags":[]},"138":{"isSerializedDate":true,"string":"Thu Nov 29 2012 23:43:46 GMT-0800 (PST)"},"139":{"submorphs":[],"scripts":[],"id":"917D239A-A40C-47EB-98A7-E68013374FFD","shape":{"__isSmartRef__":true,"id":140},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"showsHalos":false,"name":"P","partsBinMetaInfo":{"__isSmartRef__":true,"id":141},"eventHandler":{"__isSmartRef__":true,"id":159},"derivationIds":[127,"F0291F62-F100-480C-AEBF-0230398F7983","AE8B5ED7-E305-45BC-BE4A-1C28A49EE12B","39BA345C-17FA-45A0-BAC2-F0CF5654ACF8","FE91EA31-D8AE-461B-8A49-95DA5FBAE5B4","F38439A3-2F4E-4AC2-BF73-2633C00B1393","6748F5B5-2284-4748-A6EE-F1A261CBAD0B","BBAFB862-93AE-4F89-BCFF-9F1C67B7FE4C","7EC17E78-593A-4CC8-B7E3-859BCBBFE785","66055A6B-AD8D-4B17-A938-2E64456EE58B","57B84613-39E3-4895-93CB-7CCC4F26E5F8","B00F6D41-27FB-47C4-BEFC-5DF854D1CA58"],"partTests":{"__isSmartRef__":true,"id":160},"_ClipMode":"visible","moved":true,"isBeingDragged":false,"notenumber":12,"__serializedExpressions__":["_Position"],"owner":{"__isSmartRef__":true,"id":0},"_Rotation":0,"_Scale":1,"doNotSerialize":["soundPlaying"],"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":165},"__LivelyClassName__":"lively.morphic.Box","__SourceModuleName__":"Global.lively.morphic.Core","_Position":"lively.pt(-71.0,-7.0)"},"140":{"_BorderWidth":1,"_ClipMode":"visible","_BorderRadius":22.58,"_Opacity":1,"_BorderStyle":"solid","_AppearanceStylingMode":false,"_BorderStylingMode":false,"__serializedExpressions__":["position","_Extent","_BorderColor","_Fill","_Padding"],"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes","position":"lively.pt(0.0,0.0)","_Extent":"lively.pt(20.0,20.0)","_BorderColor":"Color.rgb(0,0,0)","_Fill":"Color.rgb(204,90,0)","_Padding":"lively.rect(0,0,0,0)"},"141":{"partsSpaceName":"PartsBin/Basic","comment":"A simple box morph. A really orange one. Its amazing what you can build out of simple boxes.... Who needs stars when you got orange rectangles!","migrationLevel":4,"partName":"Rectangle","changes":[{"__isSmartRef__":true,"id":142},{"__isSmartRef__":true,"id":144},{"__isSmartRef__":true,"id":146},{"__isSmartRef__":true,"id":148},{"__isSmartRef__":true,"id":150},{"__isSmartRef__":true,"id":152},{"__isSmartRef__":true,"id":154},{"__isSmartRef__":true,"id":156}],"lastModifiedDate":{"__isSmartRef__":true,"id":158},"revisionOnLoad":184624,"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo","__SourceModuleName__":"Global.lively.PartsBin"},"142":{"date":{"__isSmartRef__":true,"id":143},"author":"undefined","message":"whoopsie","id":"3F17A2D2-3C24-424B-B0FA-E43112267D23"},"143":{"isSerializedDate":true,"string":"Thu May 03 2012 06:51:36 GMT-0700 (PDT)"},"144":{"date":{"__isSmartRef__":true,"id":145},"author":"undefined","message":"whoopsie","id":"CEA5DCD5-2DB7-40AD-A776-262A7A0666FC"},"145":{"isSerializedDate":true,"string":"Thu May 03 2012 06:51:30 GMT-0700 (PDT)"},"146":{"date":{"__isSmartRef__":true,"id":147},"author":"undefined","message":"sorry","id":"44B56D2E-9B59-4C67-A305-49A6E10E66C2"},"147":{"isSerializedDate":true,"string":"Wed Mar 14 2012 02:53:45 GMT-0700 (PDT)"},"148":{"date":{"__isSmartRef__":true,"id":149},"author":"fbo","message":"","id":"BD1C654D-9100-4B66-BC62-B15FF2498B2B"},"149":{"isSerializedDate":true,"string":"Fri Feb 24 2012 17:59:09 GMT-0800 (PST)"},"150":{"date":{"__isSmartRef__":true,"id":151},"author":"undefined","message":"css transitions","id":"1004E0FC-D96B-4F40-B3E0-F514A3FCFFD7"},"151":{"isSerializedDate":true,"string":"Wed Mar 14 2012 02:42:26 GMT-0700 (PDT)"},"152":{"date":{"__isSmartRef__":true,"id":153},"author":"undefined","message":"suddenly, the rectangle became a CarDemo","id":"B5083AA8-9BAE-48DD-A6B4-FD7DB3998350"},"153":{"isSerializedDate":true,"string":"Mon Apr 09 2012 04:42:07 GMT-0700 (PDT)"},"154":{"date":{"__isSmartRef__":true,"id":155},"author":"bgnauk","message":"no comment","id":"0124E570-50B7-4CE3-83A1-6E7BA89B5CD8"},"155":{"isSerializedDate":true,"string":"Mon Jun 18 2012 10:35:08 GMT-0700 (PDT)"},"156":{"date":{"__isSmartRef__":true,"id":157},"author":"jenslincke","message":"I want my blue rectangle back!","id":"5AA9291A-869F-4D36-8095-4721B5A5B205"},"157":{"isSerializedDate":true,"string":"Thu Nov 22 2012 01:35:51 GMT-0800 (PST)"},"158":{"isSerializedDate":true,"string":"Thu Nov 22 2012 01:33:25 GMT-0800 (PST)"},"159":{"morph":{"__isSmartRef__":true,"id":139},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"160":{"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":161}},"161":{"test01IsMorph":{"__isSmartRef__":true,"id":162}},"162":{"varMapping":{"__isSmartRef__":true,"id":163},"source":"function test01IsMorph(aPart) {\n    this.assert(aPart.isMorph, 'rectangle should be a morph');\n}","funcProperties":{"__isSmartRef__":true,"id":164},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"163":{"this":{"__isSmartRef__":true,"id":160}},"164":{},"165":{"play":{"__isSmartRef__":true,"id":166}},"166":{"varMapping":{"__isSmartRef__":true,"id":167},"source":"function play() {\n    this.owner.pianoKeyDown(this);\n    this.owner.pianoKeyUp.bind(this.owner, this).delay(0.15);\n}","funcProperties":{"__isSmartRef__":true,"id":168},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"167":{"this":{"__isSmartRef__":true,"id":139}},"168":{"timestamp":{"__isSmartRef__":true,"id":169},"user":"cschuster","tags":[]},"169":{"isSerializedDate":true,"string":"Thu Nov 29 2012 23:43:46 GMT-0800 (PST)"},"170":{"target":{"__isSmartRef__":true,"id":0},"selector":"playerProcessStep","args":[],"stopped":false,"tickTime":50,"__LivelyClassName__":"lively.morphic.TargetScript","__SourceModuleName__":"Global.lively.morphic.Core"},"171":{"_ClipMode":"visible","_BorderWidth":2.296,"_BorderRadius":0,"_Opacity":1,"_BorderStyle":"dashed","_AppearanceStylingMode":false,"_BorderStylingMode":false,"__serializedExpressions__":["_Position","_Extent","_Padding","_BorderColor","_Fill"],"__LivelyClassName__":"lively.morphic.Shapes.Ellipse","__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":"lively.pt(-74.0,-77.0)","_Extent":"lively.pt(152.0,152.0)","_Padding":"lively.rect(0,0,0,0)","_BorderColor":"Color.rgb(88,88,88)","_Fill":"Color.rgb(245,245,245)"},"172":{"morph":{"__isSmartRef__":true,"id":0},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"173":{},"174":{"partName":"RhythmWheel","requiredModules":[],"migrationLevel":4,"partsSpaceName":"PartsBin/Fun/","revisionOnLoad":185524,"comment":"A small wheel of rhythm.","changes":[{"__isSmartRef__":true,"id":175},{"__isSmartRef__":true,"id":177},{"__isSmartRef__":true,"id":179},{"__isSmartRef__":true,"id":181},{"__isSmartRef__":true,"id":183}],"lastModifiedDate":{"__isSmartRef__":true,"id":185},"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo","__SourceModuleName__":"Global.lively.PartsBin"},"175":{"date":{"__isSmartRef__":true,"id":176},"author":"cschuster","message":"first version with sound","id":"DF53380B-0234-47D3-97AB-6BAEBE4884AA"},"176":{"isSerializedDate":true,"string":"Thu Nov 29 2012 23:17:37 GMT-0800 (PST)"},"177":{"date":{"__isSmartRef__":true,"id":178},"author":"undefined","message":"reverted changes - was there any description of this morph?","id":"C3C03411-9523-4F35-89EC-B20E24B3C287"},"178":{"isSerializedDate":true,"string":"Tue Apr 03 2012 00:08:08 GMT-0700 (PDT)"},"179":{"date":{"__isSmartRef__":true,"id":180},"author":"cschuster","message":"initial commit","id":"DE86959E-7664-4C45-A09A-281BB721D021"},"180":{"isSerializedDate":true,"string":"Thu Nov 29 2012 23:04:16 GMT-0800 (PST)"},"181":{"date":{"__isSmartRef__":true,"id":182},"author":"cschuster","message":"Reset when restoring","id":"7540D46D-8226-4B54-BD3E-1914BD29A9C0"},"182":{"isSerializedDate":true,"string":"Thu Nov 29 2012 23:07:31 GMT-0800 (PST)"},"183":{"date":{"__isSmartRef__":true,"id":184},"author":"cschuster","message":"Music!","id":"A2828861-F704-4D02-93E7-237E45184200"},"184":{"isSerializedDate":true,"string":"Thu Nov 29 2012 23:50:24 GMT-0800 (PST)"},"185":{"isSerializedDate":true,"string":"Thu Nov 29 2012 23:14:40 GMT-0800 (PST)"},"186":{"rules":[{"__isSmartRef__":true,"id":187}],"originMorph":{"__isSmartRef__":true,"id":0},"__LivelyClassName__":"lively.morphic.StyleSheet","__SourceModuleName__":"Global.lively.morphic.StyleSheetRepresentation"},"187":{"declarations":[{"__isSmartRef__":true,"id":188}],"styleSheet":{"__isSmartRef__":true,"id":186},"selector":":root","__LivelyClassName__":"lively.morphic.StyleSheetRule","__SourceModuleName__":"Global.lively.morphic.StyleSheetRepresentation"},"188":{"values":["0 0 10px #444"],"rule":{"__isSmartRef__":true,"id":187},"property":"box-shadow","priority":false,"__LivelyClassName__":"lively.morphic.StyleSheetDeclaration","__SourceModuleName__":"Global.lively.morphic.StyleSheetRepresentation"},"189":{"envelopes":[],"scaledVol":0.5,"scaledVolIncr":0,"mSecsSinceStart":92.87981859410431,"samplesUntilNextControl":127,"count":21422,"index":69.66407262967581,"pitch":123.175597804961,"duration":0.25,"loudness":0.5,"initialCount":11025,"damp":0.5,"ringSize":358,"ring":[-0.3317390576309265,-0.19218311395681553,-0.05456612858557719,0.043345861423972565,0.09564130854207065,0.11480221119350631,0.11321332428298092,0.10002704315684241,0.09011473232979483,0.10357485299508085,0.1457714019408911,0.1903378528920996,0.1956959514258756,0.14457068321192423,0.05958201800396523,-0.022501661754887436,-0.08044143065572484,-0.10870518674164487,-0.10653507722810218,-0.08557516922286368,-0.07886321939113827,-0.11670823112129369,-0.18703930247860967,-0.23217728670320525,-0.19235783896806424,-0.05712986425291433,0.1148769414916444,0.2280918494548132,0.22403222070556694,0.13621850496747356,0.05782238297402387,0.044302695248859436,0.06358163188684784,0.05536324981153484,0.016454854324393864,-0.0056129148284469466,0.005781232027175065,0.003372782908826366,-0.05954902114211791,-0.1581288731716768,-0.21642571612213146,-0.19474672725689857,-0.13165821066309036,-0.08819560839128826,-0.07427732633982487,-0.05651966329634206,-0.019272887829259844,0.02189512412931549,0.06181877939221181,0.12161554595203938,0.21343010217458414,0.3109277695350272,0.36518853103271454,0.34395863159119244,0.2533771461487788,0.12590671806123055,-0.007848841508234727,-0.13234314197856634,-0.23633152134220836,-0.3025092800264986,-0.32143750248906144,-0.31346982029819515,-0.31855037014264553,-0.3532270425645265,-0.3857511117520289,-0.3616266324206947,-0.2518348092195879,-0.07960042666533695,0.09143469188751396,0.1671499956361231,0.23106289205372832,0.21557097197222674,0.15799206674870447,0.08438559500496012,0.01905500455660558,0.01410723527180835,0.11886839560639828,0.30878280488070686,0.47873407786909183,0.5267899180748259,0.43826530848053835,0.2872512962202336,0.16261343900777092,0.09342827800429632,0.04605772239324324,-0.01501290616431561,-0.08391637392918483,-0.13309816429205057,-0.1540020935055395,-0.16571205475366924,-0.19252335512595664,-0.24094794115467266,-0.29228169527254977,-0.30886805623043756,-0.2557327527947564,-0.13836734930089278,-0.02394563586597087,0.0015425757190428158,-0.07975800775119524,-0.18594345735084516,-0.21448881253024865,-0.14834264768279581,-0.06265819980546894,-0.03315059705971635,-0.06697180016550419,-0.12356247112967367,-0.1645113628765671,-0.16319626322734848,-0.0992938871013962,0.017781982520602924,0.13169075657538087,0.17679956745246272,0.13167565733772335,0.023884737999651406,-0.0996660446437545,-0.18784939665391676,-0.19025633077461634,-0.08108022827786954,0.1124323914448837,0.31671882045105804,0.4550249128552082,0.4842257540175865,0.3984429514395629,0.22054376360858896,0.001439174035567703,-0.19383138248610976,-0.32181585480174135,-0.3778994560450428,-0.3775060197240805,-0.34008239173880384,-0.28930933864268127,-0.23904720520408773,-0.1768937825583521,-0.08704746569344479,0.016562786580720967,0.1068967716687439,0.17976849339981982,0.23808531076207373,0.2509335557603549,0.17039789171661823,-0.0021709509980496478,-0.19114704920269787,-0.3000442567964683,-0.28407496719978553,-0.1723809070134621,-0.03486316204890727,0.0669928923833254,0.11432276831948229,0.13438084186316246,0.16870301478826377,0.23282199236621182,0.3053145756914546,0.34540497361166445,0.31693982624898354,0.211112785724481,0.05763091118359398,-0.08684947096202222,-0.16171457407710932,-0.12985619352303956,-0.010843535479978073,0.11569421735867991,0.1673815991064771,0.12324444967185855,0.021266518715776783,-0.08833954298665958,-0.1632195914943395,-0.16149659416674922,-0.05648068236041581,0.12872199724262146,0.3185360382908584,0.4290022215324143,0.41817557240023007,0.30602496734786655,0.16083393756861142,0.0621713131430397,0.052254880947202764,0.10622118011809789,0.15946277069360804,0.17585996233611922,0.17824948266661522,0.20523811653379198,0.2588073007862022,0.30650804689241795,0.3163798021063826,0.2791108556122026,0.21393354105350681,0.16382926077005777,0.16920727084237797,0.22901592700992524,0.2890912762424023,0.28198560482530866,0.1903653931793201,0.07169634410848857,0.009588333148997208,0.036530112582681795,0.11245004469947162,0.1778420085974517,0.21196978313582804,0.23298661601967297,0.2553110414290245,0.26502568727050857,0.2420729863630413,0.19541081268886273,0.16196876917291547,0.16813673721617306,0.19756097201428702,0.20087570052334058,0.14028607946789862,0.027063701246447636,-0.0845684107768534,-0.14091308521619794,-0.12977513516619865,-0.08492552642627516,-0.05191447341371713,-0.0497141969787549,-0.07006230723470708,-0.10659709113264171,-0.16079099549796183,-0.217032370656284,-0.24384025826759625,-0.2324167559796706,-0.20580028534499206,-0.1786392081703525,-0.13597128691077387,-0.06487582276650983,0.013666895379401467,0.0604918141058306,0.06448702946522644,0.06487919372978013,0.11266831159758794,0.20622078007386335,0.2848286113660947,0.2955747930938628,0.24824045900209057,0.1961394694505998,0.1813447845271412,0.20897617929568924,0.2601429945552809,0.3116777964273183,0.34405037163111274,0.3474849405739633,0.32742164008061536,0.2940139010748908,0.2515905689844544,0.213990929153681,0.20916248705123053,0.23451849276483472,0.22735075449702435,0.12437402048448121,-0.054483403529786756,-0.217815126912285,-0.2988876201932271,-0.31461158737710093,-0.32690776009872025,-0.36311635028749834,-0.3809365978851815,-0.31343700641650685,-0.15471932744986816,0.0077271290700196005,0.06392592456791135,-0.019603755776813614,-0.18243287525382357,-0.33088154457169594,-0.3925829248479431,-0.3364079412548904,-0.185845426916444,-0.019015389304286145,0.07522987825660721,0.05997713265452376,-0.03245402195892666,-0.13965843857982918,-0.21243952840694647,-0.22911163606488572,-0.19549308683059508,-0.14131732984662904,-0.10481937565685939,-0.10768728170609165,-0.13588834829499774,-0.14528236148510132,-0.09822793402213392,0.0016639809993534982,0.11717942635698364,0.21254008198008023,0.2712137995867465,0.29171681979943287,0.28244714240810254,0.25464748152563743,0.20902164004490942,0.13834034157088126,0.05532175915101334,0.001585168267070003,0.003590492644548249,0.03142344005925679,0.03430451714507399,0.010838604353125447,0.00949785028876704,0.06461527188741911,0.1645633111837128,0.27327562203868183,0.3511824853131884,0.36958956563648826,0.33731008779977856,0.30090205603971754,0.29128737517783065,0.2821635475414723,0.22549223253571427,0.11521548693593786,-0.011381532213988521,-0.12243708984777868,-0.20606541590638017,-0.24424274686617764,-0.21466722839460317,-0.1270747995206989,-0.030852653381089112,0.02370074013543899,0.02374306520795244,-0.0033366725164682975,-0.01701281321015813,0.004181567569673916,0.05031802348497649,0.09670925645804118,0.13251074942934338,0.16945032450217923,0.21510624084618257,0.24326899916735556,0.21713435927119917,0.1518515287024229,0.12136326225282801,0.1759029444279463,0.2735066807499038,0.31973034709329795,0.2666145374992652,0.160319150875182,0.09887270458204966,0.14431160327359294,0.2618494223236212,0.33920004563179873,0.2790611380331143,0.09123907036450873,-0.10297875580261007,-0.1713676349255593,-0.08488133151234933,0.07077138208143197,0.18978314120914774,0.23418217696223564,0.23071274620050986,0.21301030584081104,0.19394024745307092,0.18521129543486836,0.20809443666550465,0.2636637111361324,0.30718110889091577,0.2750722440646598,0.14012794104900195,-0.06422038944083397,-0.2663159359982501,-0.3960076840636191,-0.41522935702025165],"indexIncrement":0.9999288892103411,"keyPressed":{"__isSmartRef__":true,"id":139},"__LivelyClassName__":"PluckedSound","__SourceModuleName__":"Global.users.Dan.SoundClasses"},"190":{"envelopes":[],"scaledVol":0.3,"scaledVolIncr":0,"mSecsSinceStart":0,"samplesUntilNextControl":0,"count":88200,"index":0,"pitch":220,"duration":2,"loudness":0.3,"initialCount":88200,"damp":0.5,"ringSize":200,"ring":null,"indexIncrement":0.9977324263038548,"__LivelyClassName__":"PluckedSound","__SourceModuleName__":"Global.users.Dan.SoundClasses"},"191":{"morph":{"__isSmartRef__":true,"id":0},"__serializedExpressions__":["position","cachedGlobalPosition"],"connectedControlPoints":[],"__LivelyClassName__":"lively.morphic.RelativeMagnet","__SourceModuleName__":"Global.lively.morphic.Connectors","position":"lively.pt(-0.5,-0.5)","cachedGlobalPosition":"lively.pt(213.0,179.0)"},"192":{"morph":{"__isSmartRef__":true,"id":0},"__serializedExpressions__":["position","cachedGlobalPosition"],"connectedControlPoints":[],"__LivelyClassName__":"lively.morphic.RelativeMagnet","__SourceModuleName__":"Global.lively.morphic.Connectors","position":"lively.pt(0.0,-0.5)","cachedGlobalPosition":"lively.pt(289.0,179.0)"},"193":{"morph":{"__isSmartRef__":true,"id":0},"__serializedExpressions__":["position","cachedGlobalPosition"],"connectedControlPoints":[],"__LivelyClassName__":"lively.morphic.RelativeMagnet","__SourceModuleName__":"Global.lively.morphic.Connectors","position":"lively.pt(0.5,-0.5)","cachedGlobalPosition":"lively.pt(365.0,179.0)"},"194":{"morph":{"__isSmartRef__":true,"id":0},"__serializedExpressions__":["position","cachedGlobalPosition"],"connectedControlPoints":[],"__LivelyClassName__":"lively.morphic.RelativeMagnet","__SourceModuleName__":"Global.lively.morphic.Connectors","position":"lively.pt(0.5,-0.0)","cachedGlobalPosition":"lively.pt(365.0,255.0)"},"195":{"morph":{"__isSmartRef__":true,"id":0},"__serializedExpressions__":["position","cachedGlobalPosition"],"connectedControlPoints":[],"__LivelyClassName__":"lively.morphic.RelativeMagnet","__SourceModuleName__":"Global.lively.morphic.Connectors","position":"lively.pt(0.5,0.5)","cachedGlobalPosition":"lively.pt(365.0,331.0)"},"196":{"morph":{"__isSmartRef__":true,"id":0},"__serializedExpressions__":["position","cachedGlobalPosition"],"connectedControlPoints":[],"__LivelyClassName__":"lively.morphic.RelativeMagnet","__SourceModuleName__":"Global.lively.morphic.Connectors","position":"lively.pt(0.0,0.5)","cachedGlobalPosition":"lively.pt(289.0,331.0)"},"197":{"morph":{"__isSmartRef__":true,"id":0},"__serializedExpressions__":["position","cachedGlobalPosition"],"connectedControlPoints":[],"__LivelyClassName__":"lively.morphic.RelativeMagnet","__SourceModuleName__":"Global.lively.morphic.Connectors","position":"lively.pt(-0.5,0.5)","cachedGlobalPosition":"lively.pt(213.0,331.0)"},"198":{"morph":{"__isSmartRef__":true,"id":0},"__serializedExpressions__":["position","cachedGlobalPosition"],"connectedControlPoints":[],"__LivelyClassName__":"lively.morphic.RelativeMagnet","__SourceModuleName__":"Global.lively.morphic.Connectors","position":"lively.pt(-0.5,-0.0)","cachedGlobalPosition":"lively.pt(213.0,255.0)"},"199":{"onrestore":{"__isSmartRef__":true,"id":200},"reset":{"__isSmartRef__":true,"id":208},"playerStop":{"__isSmartRef__":true,"id":212},"createAudioHandle":{"__isSmartRef__":true,"id":216},"setPatch":{"__isSmartRef__":true,"id":220},"noteNumberFromPitch":{"__isSmartRef__":true,"id":224},"noteSoundOnOff":{"__isSmartRef__":true,"id":228},"onKeyDown":{"__isSmartRef__":true,"id":232},"onKeyUp":{"__isSmartRef__":true,"id":240},"pianoKeyDown":{"__isSmartRef__":true,"id":248},"pianoKeyUp":{"__isSmartRef__":true,"id":252},"patchMenuItems":{"__isSmartRef__":true,"id":256},"playerStart":{"__isSmartRef__":true,"id":260},"audioUnderRun":{"__isSmartRef__":true,"id":264},"clearSoundBuffer":{"__isSmartRef__":true,"id":268},"playActiveSounds":{"__isSmartRef__":true,"id":272},"playerProcessStep":{"__isSmartRef__":true,"id":276},"playSound":{"__isSmartRef__":true,"id":280},"resumePlaying":{"__isSmartRef__":true,"id":284}},"200":{"varMapping":{"__isSmartRef__":true,"id":201},"source":"function onrestore() {\n    require('users.Dan.AudioExperiment').toRun(function() {\n        this.reset();\n    }.bind(this));\n}","funcProperties":{"__isSmartRef__":true,"id":206},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"201":{"this":{"__isSmartRef__":true,"id":0},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":202}},"202":{"$super":{"__isSmartRef__":true,"id":203}},"203":{"varMapping":{"__isSmartRef__":true,"id":204},"source":"function () {\n                    try {\n                        return obj.constructor.prototype[name].apply(obj, arguments)\n                    } catch (e) {\n                        if ($world)\n                            $world.logError(e, 'Error in $super call')\n                        else\n                            alert('Error in $super call: ' + e + '\\n' + e.stack);\n                        return null;\n                    }\n                }","funcProperties":{"__isSmartRef__":true,"id":205},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"204":{"obj":{"__isSmartRef__":true,"id":0},"name":"onrestore"},"205":{},"206":{"timestamp":{"__isSmartRef__":true,"id":207},"user":"cschuster","tags":[]},"207":{"isSerializedDate":true,"string":"Thu Nov 29 2012 23:06:39 GMT-0800 (PST)"},"208":{"varMapping":{"__isSmartRef__":true,"id":209},"source":"function reset() {\n    this.playerStop();\n    this.activeSounds = [];\n    if (this.patchName == null) {\n        this.setPatch('plucked', PluckedSound[\"default\"]());\n    }\n    this.keyDown = null;\n    this.sampRate = 44100;\n    this.nChans = 2;\n    this.createAudioHandle();\n    this.doNotSerialize = ['audioHandle']; // do not store\n    this.startStepping(50, 'playerProcessStep');\n}","funcProperties":{"__isSmartRef__":true,"id":210},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"209":{"this":{"__isSmartRef__":true,"id":0}},"210":{"timestamp":{"__isSmartRef__":true,"id":211},"user":"cschuster","tags":["setup"]},"211":{"isSerializedDate":true,"string":"Thu Nov 29 2012 23:09:45 GMT-0800 (PST)"},"212":{"varMapping":{"__isSmartRef__":true,"id":213},"source":"function playerStop() {\n// Note: Stop the player before publishing (maybe don't need to)\n// this.playerStop();  this.playerStart;\n// The player will get restarted at next key press\n    this.stopStepping();\n    this.audioHandle = null;\n}","funcProperties":{"__isSmartRef__":true,"id":214},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"213":{"this":{"__isSmartRef__":true,"id":0}},"214":{"timestamp":{"__isSmartRef__":true,"id":215},"user":"cschuster","tags":["synthesizer","setup"]},"215":{"isSerializedDate":true,"string":"Thu Nov 29 2012 22:37:09 GMT-0800 (PST)"},"216":{"varMapping":{"__isSmartRef__":true,"id":217},"source":"function createAudioHandle() {\n    if (!Global.XAudioServer) {\n        console.warn('XAudioServer not loaded');\n        return; }\n    // Set up the buffers and bind audioHandle\n    var buffSize = this.sampRate * this.nChans * 0.2;  // 0.2 sec worth of samples\n    var buffer = this.clearSoundBuffer(buffSize);  // creates a sound buffer of all zero\n    this.audioHandle = new XAudioServer(\n        this.nChans,\n        this.sampRate,\n        buffSize/2,\n        buffSize,\n        function (sampleCount) {\n            return this.audioUnderRun(sampleCount);\n        }.bind(this),\n        0);\n}","funcProperties":{"__isSmartRef__":true,"id":218},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"217":{"this":{"__isSmartRef__":true,"id":0}},"218":{"timestamp":{"__isSmartRef__":true,"id":219},"user":"cschuster","tags":["setup"]},"219":{"isSerializedDate":true,"string":"Thu Nov 29 2012 22:44:18 GMT-0800 (PST)"},"220":{"varMapping":{"__isSmartRef__":true,"id":221},"source":"function setPatch(name, sound) {\n    this.patchName = name;\n    this.patchSound = sound;\n}","funcProperties":{"__isSmartRef__":true,"id":222},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"221":{"this":{"__isSmartRef__":true,"id":0}},"222":{"timestamp":{"__isSmartRef__":true,"id":223},"user":"cschuster","tags":["patch"]},"223":{"isSerializedDate":true,"string":"Thu Nov 29 2012 23:10:14 GMT-0800 (PST)"},"224":{"varMapping":{"__isSmartRef__":true,"id":225},"source":"function noteNumberFromPitch(freq) {\n    // invert this function:  freq = 261 * Math.pow(2, (key.noteNumber - 25) / 12);\n    var noteNumber = 12 * Math.LOG2E * Math.log(freq / 261) + 25;\n    return noteNumber.roundTo(1);\n}","funcProperties":{"__isSmartRef__":true,"id":226},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"225":{"this":{"__isSmartRef__":true,"id":0}},"226":{"timestamp":{"__isSmartRef__":true,"id":227},"user":"cschuster","tags":["events"]},"227":{"isSerializedDate":true,"string":"Thu Nov 29 2012 22:35:37 GMT-0800 (PST)"},"228":{"varMapping":{"__isSmartRef__":true,"id":229},"source":"function noteSoundOnOff(snd, noteOn, color) {\n    var key = this.keys[this.noteNumberFromPitch(snd.pitch)];\n    if (key) key.setFill( noteOn ? (color || Color.blue) : key.myFill);\n}","funcProperties":{"__isSmartRef__":true,"id":230},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"229":{"this":{"__isSmartRef__":true,"id":0}},"230":{"timestamp":{"__isSmartRef__":true,"id":231},"user":"cschuster","tags":["events"]},"231":{"isSerializedDate":true,"string":"Thu Nov 29 2012 22:35:37 GMT-0800 (PST)"},"232":{"varMapping":{"__isSmartRef__":true,"id":233},"source":"function onKeyDown(evt) {\n    // For playing from the *typewriter* keyboard\n    var key =  this.mapKeyEvtToKey(evt)\n    if (key && !key.soundPlaying) this.pianoKeyDown(evt, key) \n}","funcProperties":{"__isSmartRef__":true,"id":238},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"233":{"this":{"__isSmartRef__":true,"id":0},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":234}},"234":{"$super":{"__isSmartRef__":true,"id":235}},"235":{"varMapping":{"__isSmartRef__":true,"id":236},"source":"function () {\n                    try {\n                        return obj.constructor.prototype[name].apply(obj, arguments)\n                    } catch (e) {\n                        if ($world)\n                            $world.logError(e, 'Error in $super call')\n                        else\n                            alert('Error in $super call: ' + e + '\\n' + e.stack);\n                        return null;\n                    }\n                }","funcProperties":{"__isSmartRef__":true,"id":237},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"236":{"obj":{"__isSmartRef__":true,"id":0},"name":"onKeyDown"},"237":{},"238":{"timestamp":{"__isSmartRef__":true,"id":239},"user":"cschuster","tags":["events"]},"239":{"isSerializedDate":true,"string":"Thu Nov 29 2012 22:35:37 GMT-0800 (PST)"},"240":{"varMapping":{"__isSmartRef__":true,"id":241},"source":"function onKeyUp(evt) {\n    // For playing from the *typewriter* keyboard\n    var key =  this.mapKeyEvtToKey(evt)\n    if (key) this.pianoKeyUp(evt, key) \n}","funcProperties":{"__isSmartRef__":true,"id":246},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"241":{"this":{"__isSmartRef__":true,"id":0},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":242}},"242":{"$super":{"__isSmartRef__":true,"id":243}},"243":{"varMapping":{"__isSmartRef__":true,"id":244},"source":"function () {\n                    try {\n                        return obj.constructor.prototype[name].apply(obj, arguments)\n                    } catch (e) {\n                        if ($world)\n                            $world.logError(e, 'Error in $super call')\n                        else\n                            alert('Error in $super call: ' + e + '\\n' + e.stack);\n                        return null;\n                    }\n                }","funcProperties":{"__isSmartRef__":true,"id":245},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"244":{"obj":{"__isSmartRef__":true,"id":0},"name":"onKeyUp"},"245":{},"246":{"timestamp":{"__isSmartRef__":true,"id":247},"user":"cschuster","tags":["events"]},"247":{"isSerializedDate":true,"string":"Thu Nov 29 2012 22:35:37 GMT-0800 (PST)"},"248":{"varMapping":{"__isSmartRef__":true,"id":249},"source":"function pianoKeyDown(key) {\n    var freq = 261 * Math.pow(2, (key.notenumber - 25) / 12);\n    var sound = this.patchSound.copy().setPitchDurLoudness(freq, 0.25, 0.5);\n    key.soundPlaying = sound;\n    sound.keyPressed = key;\n    this.playSound(sound);\n}","funcProperties":{"__isSmartRef__":true,"id":250},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"249":{"this":{"__isSmartRef__":true,"id":0}},"250":{"timestamp":{"__isSmartRef__":true,"id":251},"user":"cschuster","tags":["events"]},"251":{"isSerializedDate":true,"string":"Thu Nov 29 2012 23:44:14 GMT-0800 (PST)"},"252":{"varMapping":{"__isSmartRef__":true,"id":253},"source":"function pianoKeyUp(key, optSuppressPause) {\n    key.soundPlaying.stopGracefully();\n    key.soundPlaying = null;\n}","funcProperties":{"__isSmartRef__":true,"id":254},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"253":{"this":{"__isSmartRef__":true,"id":0}},"254":{"timestamp":{"__isSmartRef__":true,"id":255},"user":"cschuster","tags":["events"]},"255":{"isSerializedDate":true,"string":"Thu Nov 29 2012 23:14:05 GMT-0800 (PST)"},"256":{"varMapping":{"__isSmartRef__":true,"id":257},"source":"function patchMenuItems() {\n    var synth = this;\n    return [\n        ['plucked', function(n) {\n            synth.setPatch('plucked', PluckedSound[\"default\"]()); }],\n        ['brass', function(n) {\n            synth.setPatch('brass', FMSound.brass()); }],\n        ['clarinet', function(n) {\n            synth.setPatch('clarinet', FMSound.clarinet()); }],\n        ['chime', function(n) {\n            synth.setPatch('chime', FMSound.chime()); }],\n        ['default', function(n) {\n            synth.setPatch('plucked', PluckedSound[\"default\"]()); }]\n    ];\n}","funcProperties":{"__isSmartRef__":true,"id":258},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"257":{"this":{"__isSmartRef__":true,"id":0}},"258":{"timestamp":{"__isSmartRef__":true,"id":259},"user":"cschuster","tags":["patch"]},"259":{"isSerializedDate":true,"string":"Thu Nov 29 2012 22:41:24 GMT-0800 (PST)"},"260":{"varMapping":{"__isSmartRef__":true,"id":261},"source":"function playerStart() {\n    if (!Global.XAudioServer) {\n        console.warn('XAudioServer not loaded');\n        return null; }\n    // Set up the buffers and bind audioHandle\n    this.sampRate = 20000;\n    this.nChans = 1;  // mono for now\n    this.waveSize = this.sampRate * this.nChans/10;  // Gives us 0.1 second worth of samples\n    this.audioHandle = new XAudioServer(this.nChans, this.sampRate,\n        this.waveSize, this.waveSize*2,\n        function (sampleCount) { return this.audioUnderRun(sampleCount); }.bind(this), 0);\n\n    this.startStepping(50, 'playerProcessStep');\n    this.startStepping(10, 'checkForKeyPressAndRelease');\n    return this;\n}","funcProperties":{"__isSmartRef__":true,"id":262},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"261":{"this":{"__isSmartRef__":true,"id":0}},"262":{"timestamp":{"__isSmartRef__":true,"id":263},"user":"cschuster","tags":["synthesizer","setup"]},"263":{"isSerializedDate":true,"string":"Thu Nov 29 2012 22:37:09 GMT-0800 (PST)"},"264":{"varMapping":{"__isSmartRef__":true,"id":265},"source":"function audioUnderRun(sampleCount) {\n    // Refill the buffer from the latest generated samples\n    return this.playActiveSounds(sampleCount);\n}","funcProperties":{"__isSmartRef__":true,"id":266},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"265":{"this":{"__isSmartRef__":true,"id":0}},"266":{"timestamp":{"__isSmartRef__":true,"id":267},"user":"cschuster","tags":["synthesizer"]},"267":{"isSerializedDate":true,"string":"Thu Nov 29 2012 22:37:29 GMT-0800 (PST)"},"268":{"varMapping":{"__isSmartRef__":true,"id":269},"source":"function clearSoundBuffer(sizeUsed) {\n    // Note sizeUsed must be 2 * number of stereo samples\n    var buffer = new Array(sizeUsed);\n    for (var i=0; i<sizeUsed; i++) buffer[i] = 0;\n    return buffer;\n}","funcProperties":{"__isSmartRef__":true,"id":270},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"269":{"this":{"__isSmartRef__":true,"id":0}},"270":{"timestamp":{"__isSmartRef__":true,"id":271},"user":"cschuster","tags":["synthesizer"]},"271":{"isSerializedDate":true,"string":"Thu Nov 29 2012 22:37:29 GMT-0800 (PST)"},"272":{"varMapping":{"__isSmartRef__":true,"id":273},"source":"function playActiveSounds(sampleCount) {\n    // Here we go through all active sounds, mixing their samples\n    // into a buffer of the requested size\n    // It is also here that we run the control code for each sound\n    // to change such envelope parameters as volume, pitch, etc.\n    var buffer = this.clearSoundBuffer(sampleCount*2);\n    this.activeSounds = this.activeSounds.select( function(snd) {\n            return snd.samplesRemaining() > 0; });\n    this.activeSounds.forEach( function(snd) { \n            snd.mixSampleCountIntoBufferStartingAt(sampleCount, buffer, 0, this.sampRate);\n            }.bind(this));\n    // if (this.reverbSound) this.reverbSound.mixSamplesToBuffer(sampleCount, buffer, 1); \n    return buffer;\n}","funcProperties":{"__isSmartRef__":true,"id":274},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"273":{"this":{"__isSmartRef__":true,"id":0}},"274":{"timestamp":{"__isSmartRef__":true,"id":275},"user":"cschuster","tags":["synthesizer"]},"275":{"isSerializedDate":true,"string":"Thu Nov 29 2012 22:37:29 GMT-0800 (PST)"},"276":{"varMapping":{"__isSmartRef__":true,"id":277},"source":"function playerProcessStep() {\n    if (!this.audioHandle) this.createAudioHandle();\n    if (!this.audioHandle || !Object.isFunction(this.audioHandle.executeCallback)) {\n        console.warn('XAudioServer loaded but no execute callback. Is the audio system initialized?');\n        return;\n    };\n    this.audioHandle.executeCallback();\n    this.get(\"Bar\").step();\n}","funcProperties":{"__isSmartRef__":true,"id":278},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"277":{"this":{"__isSmartRef__":true,"id":0}},"278":{"timestamp":{"__isSmartRef__":true,"id":279},"user":"cschuster","tags":["synthesizer"]},"279":{"isSerializedDate":true,"string":"Thu Nov 29 2012 23:20:00 GMT-0800 (PST)"},"280":{"varMapping":{"__isSmartRef__":true,"id":281},"source":"function playSound(snd) {\n    // Reset and start playing the given sound from its beginning.\n    snd.reset();\n    if (snd.samplesRemaining() == 0) return;\n    this.resumePlaying(snd);\n}","funcProperties":{"__isSmartRef__":true,"id":282},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"281":{"this":{"__isSmartRef__":true,"id":0}},"282":{"timestamp":{"__isSmartRef__":true,"id":283},"user":"cschuster","tags":["synthesizer"]},"283":{"isSerializedDate":true,"string":"Thu Nov 29 2012 22:37:29 GMT-0800 (PST)"},"284":{"varMapping":{"__isSmartRef__":true,"id":285},"source":"function resumePlaying(snd) {\n    // Start playing the given sound without resetting it.\n    // It will resume playing from where it last stopped.\n    if (!this.audioHandle) this.reset(\"skip rebuild\");\n    this.activeSounds.push(snd);\n}","funcProperties":{"__isSmartRef__":true,"id":286},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"285":{"this":{"__isSmartRef__":true,"id":0}},"286":{"timestamp":{"__isSmartRef__":true,"id":287},"user":"cschuster","tags":["synthesizer"]},"287":{"isSerializedDate":true,"string":"Thu Nov 29 2012 22:37:29 GMT-0800 (PST)"},"isSimplifiedRegistry":true}}