<snapdata remixID="9652620"><project name="tech party" app="Snap! 6, https://snap.berkeley.edu" version="1"><notes>These blocks are designed for composers and musicians, who have tried using the existing audio blocks and found that they lacked some functionalities or did not sound proper. &#xD;&#xD;These oscillator blocks provide some fixes to the existing blocks as well as a few shortcut blocks. Keep in mind that the audio will not stop playing when using [stop all sounds] or stopping! (not implemented yet!) &#xD;&#xD;All of the blocks should have help text, and you can always reference the original project.&#xD;</notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAACeklEQVR4Xu3XsWnDUABF0W/tYk3gRVxrCs8ll55He7iSIZCQJglpfEEctRI8dP8BodO+7/twKRAVOAEYlTf7UQBAENICAKb5jQPIQFoAwDS/cQAZSAsAmOY3DiADaQEA0/zGAWQgLQBgmt84gAykBQBM8xsHkIG0AIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwDS/cQAZSAsAmOY3DiADaQEA0/zGAWQgLQBgmt84gAykBQBM8xsHkIG0AIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwDS/cQAZSAsAmOY3DiADaQEA0/zGAWQgLQBgmt84gAykBQBM8xsHkIG0AIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwDS/cQAZSAsAmOY3DiADaQEAf8h/uVzG7XYby7KkB3T0cQB/OeHr9fp1d9u2cb/fx/l8PrqJt74fgH/k/o7w89Fpmsbz+RyPx+Oth3XEMQABTF0D+I9P8LquY57n9MCONg6gn5DUNIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwDS/cQAZSAsAmOY3DiADaQEA0/zGAWQgLQBgmt84gAykBQBM8xsHkIG0AIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwDS/cQAZSAsAmOY3DiADaQEA0/zGAWQgLQBgmt84gAykBQBM8xsHkIG0AIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwDS/cQAZSAsAmOY3DiADaQEA0/zGAWQgLQBgmt84gAykBQBM8xsHkIG0AIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwDS/cQAZSAsAmOY3/gLXCfyohseIjQAAAABJRU5ErkJggg==</thumbnail><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="180" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" scheduled="false" id="1"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAOhUlEQVR4Xu3VwQkAAAjEMN1/abewn7jAQRC64wgQIECAAIF3gX1fNEiAAAECBAiMAHsCAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQIHLFxAWmhEwHPAAAAAElFTkSuQmCC</pentrails><costumes><list struct="atomic" id="2"></list></costumes><sounds><list struct="atomic" id="3"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><sprite name="Sprite" idx="1" x="0" y="0" heading="90" scale="1" volume="100" pan="20" rotation="1" instrument="3"  draggable="true" costume="0" color="80,80,80,1" pen="tip" id="8"><costumes><list struct="atomic" id="9"></list></costumes><sounds><list struct="atomic" id="10"></list></sounds><blocks></blocks><variables></variables><scripts><script x="132.9072265625" y="15.999999999999943"><custom-block s="frequency %n"><l>55</l></custom-block></script><script x="303.2578125" y="245.00000000000006"><custom-block s="frequency %n"><custom-block s="frequency %n"><custom-block s="frequency %n"><custom-block s="frequency %n"><l>65</l></custom-block></custom-block></custom-block></custom-block></script><script x="138" y="233.83333333333331"><custom-block s="frequency %n"><l>60</l></custom-block></script><script x="208" y="233.83333333333331"><custom-block s="frequency %n"><l>69</l></custom-block></script><script x="305.1494140625" y="223.00000000000006"><custom-block s="frequency %n"><l>67</l></custom-block></script><script x="114" y="255.83333333333331"><custom-block s="frequency %n"><l>64</l></custom-block></script><script x="224.1083984375" y="255.83333333333331"><custom-block s="frequency %n"><l>67</l></custom-block></script><script x="541.5830078125" y="267.00000000000006"><custom-block s="frequency %n"><custom-block s="frequency %n"><l>59</l></custom-block></custom-block></script><script x="114" y="273.8333333333333"><custom-block s="frequency %n"><l>65</l></custom-block></script><script x="224.1083984375" y="273.8333333333333"><custom-block s="frequency %n"><l>64</l></custom-block></script><script x="334.21679687499966" y="273.8333333333333"><custom-block s="frequency %n"><l>64</l></custom-block></script><script x="150" y="33.833333333333314"><block s="doWait"><l>0000.1</l></block></script><script x="27" y="384.8333333333334"><block s="doWarp"><script></script></block></script><script x="111" y="129"><block s="receiveGo"></block></script><script x="558.087890625" y="333.8333333333334"><block s="reportEquals"><block s="getVolume"></block></block></script><script x="10" y="53.166666666666515"><block s="receiveMessage"><l>okay suuuuonddddd</l></block><block s="doWait"><l>0</l></block></script><script x="280" y="10"><block s="doWaitUntil"><block s="reportEquals"><l></l><block s="reportAudio"><l><option>volume</option></l></block></block></block></script><script x="273" y="133"><custom-block s="play arpeggio %mult%n Hz for %n beats without waiting"><custom-block s="frequency %n"><l>65</l></custom-block></custom-block></script><script x="98" y="332.00000000000006"><block s="doForever"><script></script></block></script><script x="430" y="620"><block s="reifyScript"><script></script><list></list></block></script><script x="420" y="668"><block s="reifyReporter"><script></script><list></list></block></script><script x="157" y="564.8333333333333"><custom-block s="play frequencies %mult%n Hz for %n beats"><list><l>440</l><l>550</l></list><l>0.5</l></custom-block></script><script x="109" y="384.66666666666623"><custom-block s="do %mult%cmdRing in order %mult%n"><list><block s="reifyScript"><script><custom-block s="play arpeggio %mult%n Hz for %n beats without waiting"><list><custom-block s="frequency %n"><l>60</l></custom-block><custom-block s="frequency %n"><l>69</l></custom-block><custom-block s="frequency %n"><l>69</l></custom-block><custom-block s="frequency %n"><l>67</l></custom-block><custom-block s="frequency %n"><l>66</l></custom-block><custom-block s="frequency %n"><l>65</l></custom-block><custom-block s="frequency %n"><l>65</l></custom-block><custom-block s="frequency %n"><l>59</l></custom-block><custom-block s="frequency %n"><l>64</l></custom-block><custom-block s="frequency %n"><l>67</l></custom-block><custom-block s="frequency %n"><l>67</l></custom-block><custom-block s="frequency %n"><l>65</l></custom-block><custom-block s="frequency %n"><l>65</l></custom-block><custom-block s="frequency %n"><l>64</l></custom-block><custom-block s="frequency %n"><l>64</l></custom-block><custom-block s="frequency %n"><l>62</l></custom-block><custom-block s="frequency %n"><l>64</l></custom-block><custom-block s="frequency %n"><l>56</l></custom-block><custom-block s="frequency %n"><l>59</l></custom-block><custom-block s="frequency %n"><l>57</l></custom-block><custom-block s="frequency %n"><l>56</l></custom-block><custom-block s="frequency %n"><l>43</l></custom-block><custom-block s="frequency %n"><l>43</l></custom-block><custom-block s="frequency %n"><l>54</l></custom-block><custom-block s="frequency %n"><l>65</l></custom-block><custom-block s="frequency %n"><l>64</l></custom-block><custom-block s="frequency %n"><l>64</l></custom-block></list><l>1</l></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="play arpeggio %mult%n Hz for %n beats without waiting"><list><custom-block s="frequency %n"><l>60</l></custom-block><custom-block s="frequency %n"><l>69</l></custom-block><custom-block s="frequency %n"><l>69</l></custom-block><custom-block s="frequency %n"><l>67</l></custom-block><custom-block s="frequency %n"><l>66</l></custom-block><custom-block s="frequency %n"><l>65</l></custom-block><custom-block s="frequency %n"><l>65</l></custom-block><custom-block s="frequency %n"><l>59</l></custom-block><custom-block s="frequency %n"><l>64</l></custom-block><custom-block s="frequency %n"><l>67</l></custom-block><custom-block s="frequency %n"><l>67</l></custom-block><custom-block s="frequency %n"><l>65</l></custom-block><custom-block s="frequency %n"><l>65</l></custom-block><custom-block s="frequency %n"><l>64</l></custom-block><custom-block s="frequency %n"><l>64</l></custom-block><custom-block s="frequency %n"><l>62</l></custom-block><custom-block s="frequency %n"><l>64</l></custom-block><custom-block s="frequency %n"><l>56</l></custom-block><custom-block s="frequency %n"><l>59</l></custom-block><custom-block s="frequency %n"><l>57</l></custom-block><custom-block s="frequency %n"><l>56</l></custom-block><custom-block s="frequency %n"><l>43</l></custom-block><custom-block s="frequency %n"><l>43</l></custom-block><custom-block s="frequency %n"><l>54</l></custom-block><custom-block s="frequency %n"><l>65</l></custom-block><custom-block s="frequency %n"><l>64</l></custom-block><custom-block s="frequency %n"><l>64</l></custom-block></list><l>0.5</l></custom-block></script><list></list></block><block s="reifyScript"><script></script><list></list></block></list><list><l>1</l><l>2</l><l>3</l></list></custom-block></script><script x="42" y="918.4999999999998"><custom-block s="play frequencies %mult%n Hz for %n beats without waiting"><list><l></l></list><l>0.5</l></custom-block></script><script x="39" y="1005.4999999999998"><custom-block s="play frequency %n Hz for %n beats without waiting"><l>440</l><l>0.5</l></custom-block></script><script x="106" y="1088.333333333333"><custom-block s="play arpeggio %mult%n Hz for %n beats without waiting"><list><custom-block s="frequency %n"><l>60</l></custom-block><custom-block s="frequency %n"><l>69</l></custom-block><custom-block s="frequency %n"><l>69</l></custom-block><custom-block s="frequency %n"><l>67</l></custom-block><custom-block s="frequency %n"><l>66</l></custom-block><custom-block s="frequency %n"><l>65</l></custom-block><custom-block s="frequency %n"><l>65</l></custom-block><custom-block s="frequency %n"><l>59</l></custom-block><custom-block s="frequency %n"><l>64</l></custom-block><custom-block s="frequency %n"><l>67</l></custom-block><custom-block s="frequency %n"><l>67</l></custom-block><custom-block s="frequency %n"><l>65</l></custom-block><custom-block s="frequency %n"><l>65</l></custom-block><custom-block s="frequency %n"><l>64</l></custom-block><custom-block s="frequency %n"><l>64</l></custom-block><custom-block s="frequency %n"><l>62</l></custom-block><custom-block s="frequency %n"><l>64</l></custom-block><custom-block s="frequency %n"><l>56</l></custom-block><custom-block s="frequency %n"><l>59</l></custom-block><custom-block s="frequency %n"><l>57</l></custom-block><custom-block s="frequency %n"><l>56</l></custom-block><custom-block s="frequency %n"><l>43</l></custom-block><custom-block s="frequency %n"><l>43</l></custom-block><custom-block s="frequency %n"><l>54</l></custom-block><custom-block s="frequency %n"><l>65</l></custom-block><custom-block s="frequency %n"><l>64</l></custom-block><custom-block s="frequency %n"><l>64</l></custom-block></list><l>0.5</l></custom-block></script><script x="87.70703125" y="1040.4999999999998"><block s="reifyScript"><script></script><list></list></block></script></scripts></sprite></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="play frequency %&apos;freq&apos; Hz for %&apos;b&apos; beats" type="command" category="sound"><comment x="0" y="0" w="199" collapsed="false">Plays a specific note and waits for it to finish</comment><header></header><code></code><translations></translations><inputs><input type="%n">440</input><input type="%n">0.5</input></inputs><script><custom-block s="play frequency %n Hz for %n beats without waiting"><block var="freq"/><block var="b"/></custom-block><block s="doRest"><block var="b"/></block></script></block-definition><block-definition s="play frequencies %&apos;freqs&apos; Hz for %&apos;b&apos; beats" type="command" category="sound"><comment x="0" y="0" w="180" collapsed="false">Plays a chord and waits for it to finish</comment><header></header><code></code><translations></translations><inputs><input type="%mult%n"></input><input type="%n">0.5</input></inputs><script><custom-block s="play frequencies %mult%n Hz for %n beats without waiting"><block var="freqs"/><block var="b"/></custom-block><block s="doRest"><block var="b"/></block></script></block-definition><block-definition s="frequency %&apos;note&apos;" type="reporter" category="sound"><comment x="0" y="0" w="183" collapsed="false">Returns the frequency for a piano note</comment><header></header><code></code><translations></translations><inputs><input type="%n">60&#xD;        <options>§_pianoKeyboardMenu</options></input></inputs><script><block s="doReport"><block s="reportProduct"><l>440</l><block s="reportPower"><l>2</l><block s="reportQuotient"><block s="reportDifference"><block var="note"/><l>69</l></block><l>12</l></block></block></block></block></script></block-definition><block-definition s="play arpeggio %&apos;freqs&apos; Hz for %&apos;b&apos; beats" type="command" category="sound"><comment x="0" y="0" w="257" collapsed="false">Plays all of the notes in order and waits for them to finish</comment><header></header><code></code><translations></translations><inputs><input type="%mult%n"></input><input type="%n">0.5</input></inputs><script><block s="doForEach"><l>item</l><block var="freqs"/><script><custom-block s="play frequency %n Hz for %n beats"><block var="item"/><block var="b"/></custom-block></script></block></script></block-definition><block-definition s="play frequency %&apos;freq&apos; Hz for %&apos;b&apos; beats without waiting" type="command" category="sound"><comment x="0" y="0" w="80" collapsed="false">Plays a note</comment><header></header><code></code><translations></translations><inputs><input type="%n">440</input><input type="%n">0.5</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>freq</l><l>b</l></list><l>const stage = this.parentThatIsA(StageMorph);let context = stage.audioContext();let gain = context.createGain();gain.connect(context.destination);gain.gain.value = stage.volume/800; const oscillator = context.createOscillator();oscillator.connect(gain);let inst;switch (this.instrument) {    default:        inst = "sine";        break;    case 2:        inst = "square";        break;    case 3:        inst = "sawtooth";        break;    case 4:        inst = "triangle";        break;}oscillator.type = inst;oscillator.frequency.value = freq;oscillator.start();oscillator.stop(context.currentTime + b * 60 / stage.tempo);</l></block><list><block var="freq"/><block var="b"/></list></block></script></block-definition><block-definition s="octave %&apos;note&apos; %&apos;oct&apos;" type="reporter" category="sound"><comment x="0" y="0" w="291" collapsed="false">Outputs the note after it has been shifted by the octave</comment><header></header><code></code><translations></translations><inputs><input type="%n">60&#xD;        <options>§_pianoKeyboardMenu</options></input><input type="%n">0</input></inputs><script><block s="doReport"><block s="reportSum"><block var="note"/><block s="reportProduct"><block var="oct"/><l>12</l></block></block></block></script></block-definition><block-definition s="do %&apos;blocks&apos; in order %&apos;order&apos;" type="command" category="control"><comment x="0" y="0" w="167" collapsed="false">Do each block in the order specified</comment><header></header><code></code><translations></translations><inputs><input type="%mult%cmdRing"></input><input type="%mult%n"></input></inputs><script><block s="doForEach"><l>index</l><block var="order"/><script><block s="doRun"><block s="reportListItem"><block var="index"/><block var="blocks"/></block><list></list></block></script></block></script></block-definition><block-definition s="let %&apos;var&apos; be %&apos;val&apos;" type="command" category="other"><comment x="0" y="0" w="200" collapsed="false">Creates a script variable with an initial value</comment><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%s">0</input></inputs><script><block s="doSetVar"><l>var</l><block var="val"/></block></script></block-definition><block-definition s="play frequencies %&apos;freqs&apos; Hz for %&apos;b&apos; beats without waiting" type="command" category="sound"><comment x="0" y="0" w="90" collapsed="false">Plays a chord</comment><header></header><code></code><translations></translations><inputs><input type="%mult%n"></input><input type="%n">0.5</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>freqs</l><l>b</l></list><l>const stage = this.parentThatIsA(StageMorph);let context = stage.audioContext();let gain = context.createGain();gain.connect(context.destination);gain.gain.value = stage.volume/800;let inst;switch (this.instrument) {    default:        inst = "sine";        break;    case 2:        inst = "square";        break;    case 3:        inst = "sawtooth";        break;    case 4:        inst = "triangle";        break;} for (freq of freqs.asArray()) {  let oscillator = context.createOscillator();  oscillator.connect(gain);  oscillator.type = inst;  oscillator.frequency.value = freq;  oscillator.start(context.currentTime);  oscillator.stop(context.currentTime + b * 60 / stage.tempo);}</l></block><list><block var="freqs"/><block var="b"/></list></block></script></block-definition><block-definition s="play arpeggio %&apos;freqs&apos; Hz for %&apos;b&apos; beats without waiting" type="command" category="sound"><comment x="0" y="0" w="137" collapsed="false">Plays all of the notes in order</comment><header></header><code></code><translations></translations><inputs><input type="%mult%n"></input><input type="%n">0.5</input></inputs><script><block s="fork"><block s="reifyScript"><script><custom-block s="play arpeggio %mult%n Hz for %n beats"><block var="freqs"/><block var="b"/></custom-block></script><list></list></block><list></list></block></script></block-definition></blocks><variables></variables></project><media name="tech party" app="Snap! 6, https://snap.berkeley.edu" version="1"></media></snapdata>