<snapdata remixID="8422268"><project name="IT-Camp Regen" app="Snap! 5.0, http://snap.berkeley.edu" version="1"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" volume="100" pan="0" lines="round" ternary="false" 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="mit Mikro" idx="2" x="0.2755453501723411" y="179.8984832920418" heading="71.70020324750078" scale="0.2" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="1" color="80,80,80,1" pen="tip" id="8"><costumes><list id="9"><item><costume name="Tropfen" center-x="35" center-y="7.75" image="data:image/png;base64,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" id="10"/></item><item><costume name="Faden" center-x="12" center-y="74" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAABZCAYAAADRjW+BAAABmElEQVRYR+3ZP3MOUQCF8efcFKgwClR23yZUpEKVqFBhRiZRSSpUkgoVqkiFSlSokL1JqESVqEQlKtJEVCgyqFDkvWx8hXMrdz/Ab3aeM7N/RdUM4DzWBhdFJyanyepZZUN/AVtsZ9vdtU10mu+g7T60Z2dBczStmy9Iu31DdfeKOq4h9vnQnrqgzQekXl9TDrRNlxEHfWi3r6B5mi4hDvuG0lFRN4tI/T40HStonEcc9zUNJ9umz5BO+VDOFDRL0/gEMeQbKp1rr6cPEed9qEb/e7TTTIEu+JpyqX08vwNctqGk8YLmaXoLuOIbimvt28kN0HUfmm4WNF4FJnxNmWybjoFuG9G7Bc3RtIoXCdzzDZXui2pmhJAe2NDEo4I2wwQ9NjZ9Kqp4msCcD03PC5ql6ewJQveFbyheavOjbNCCD02vCjpzhJBe+5ryRlTThwjhrRF9V9AsTeN+Au99Q6UVUc1VhI2PPpRPBZ3eQwiffU3T17bpDsLGNxtK+lHQLE0XthLWf/qG4rc2MfMfyX9oHX236L/eH8d3QAVYfcxPAAAAAElFTkSuQmCC" id="11"/></item></list></costumes><sounds><list struct="atomic" id="12"></list></sounds><blocks></blocks><variables></variables><scripts><script x="26.666666666666668" y="186.33333333333374"><block s="receiveOnClone"></block><block s="doDeclareVariables"><list><l>geschwindigkeit</l></list></block><block s="doSetVar"><l>geschwindigkeit</l><block s="reportRandom"><l>-10</l><l>-15</l></block></block><block s="setXPosition"><block s="reportRandom"><l>-200</l><l>200</l></block></block><block s="setScale"><block s="reportRandom"><l>15</l><l>30</l></block></block><block s="show"></block><block s="doUntil"><block s="reportLessThan"><block s="yPosition"></block><l>-250</l></block><script><block s="setHeading"><block s="reportDifference"><l>90</l><block s="reportProduct"><block var="Wind"/><l>5</l></block></block></block><block s="changeXPosition"><block var="Wind"/></block><block s="changeYPosition"><block var="geschwindigkeit"/></block><block s="doIfElse"><block s="reportGreaterThan"><block s="reportAudio"><l><option>volume</option></l></block><l>5</l></block><script><block s="doSetVar"><l>Wind</l><block s="reportProduct"><l>0.5</l><block s="reportAudio"><l><option>volume</option></l></block></block></block></script><script><block s="doSetVar"><l>Wind</l><block s="reportProduct"><block var="Wind"/><l>0.9999</l></block></block></script></block></script></block><block s="removeClone"></block></script><script x="25" y="8.333333333333334"><block s="receiveGo"></block><block s="hide"></block><block s="setScale"><l>20</l></block><block s="doSwitchToCostume"><l>Tropfen</l></block><block s="gotoXY"><l>0</l><l>180</l></block><block s="doForever"><script><block s="createClone"><l><option>myself</option></l></block></script></block></script><script x="27.00000100000002" y="589.6666676666671"><block s="doIf"><block s="reportGreaterThan"><custom-block s="loudness"></custom-block><l>20</l></block><script><block s="doSetVar"><l>Wind</l><l>10</l></block></script></block><block s="doSetVar"><l>Wind</l><block s="reportProduct"><block var="Wind"/><l>0.995</l></block></block></script></scripts></sprite><sprite name="Tropfen" idx="1" x="0" y="160" heading="90" scale="0.16" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="1" color="80,80,80,1" pen="tip" id="115"><costumes><list id="116"><item><costume name="Tropfen" center-x="36" center-y="6.75" image="data:image/png;base64,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" id="117"/></item></list></costumes><sounds><list struct="atomic" id="118"></list></sounds><blocks></blocks><variables></variables><scripts><script x="38.333333333333336" y="42.83333333333334"><block s="receiveGo"></block><block s="setHeading"><l>90</l></block><block s="hide"></block><block s="gotoXY"><l>0</l><l>160</l></block><block s="doSetVar"><l>Wind</l><l>5</l></block><block s="doForever"><script><block s="createClone"><l><option>myself</option></l></block></script></block></script><script x="310.83333333333337" y="44.16666666666705"><block s="receiveOnClone"></block><block s="show"></block><block s="turnLeft"><block s="reportProduct"><block var="Wind"/><l>2</l></block></block><block s="setEffect"><l><option>brightness</option></l><block s="reportRandom"><l>0</l><l>-30</l></block></block><block s="setScale"><block s="reportRandom"><l>15</l><l>30</l></block></block><block s="doDeclareVariables"><list><l>geschwindigkeit</l><l>wind</l></list></block><block s="doSetVar"><l>geschwindigkeit</l><block s="reportRandom"><l>-7</l><l>-10</l></block></block><block s="setXPosition"><block s="reportRandom"><l>-220</l><l>220</l></block></block><block s="doUntil"><block s="reportLessThan"><block s="yPosition"></block><l>-180</l></block><script><block s="changeXPosition"><block s="reportQuotient"><block var="Wind"/><l>2</l></block></block><block s="changeYPosition"><block var="geschwindigkeit"/></block></script></block><block s="removeClone"></block></script></scripts></sprite><watcher var="Wind" style="normal" x="18.145833333333712" y="18.145833333333336" color="243,118,29"/></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="%&apos;attribute&apos; of sound %&apos;sound&apos;" type="reporter" category="sound"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">duration<options>name&#xD;duration&#xD;length&#xD;number of channels&#xD;sample rate&#xD;samples</options></input><input type="%obj"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="attribute"/><l>name</l></block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>sound</l></list><l>return sound.name;</l></block><list><block var="sound"/></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="attribute"/><l>samples</l></block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>audioBuffer</l></list><l>var result, i;&#xD;if (audioBuffer.numberOfChannels &gt; 1) {&#xD;    result = new List();&#xD;    for (i = 0; i &lt; audioBuffer.numberOfChannels; i += 1) {&#xD;        result.add(new List(audioBuffer.getChannelData(i)));&#xD;    }&#xD;    return result;&#xD;}&#xD;return new List(audioBuffer.getChannelData(0));</l></block><list><custom-block s="%s of sound %obj"><l></l><block var="sound"/></custom-block></list></block></block></script></block><block s="doRun"><block s="reportJSFunction"><list><l>sound</l></list><l>var base64, binaryString, len, bytes, i,&#xD;    arrayBuffer, audioCtx;&#xD;if (sound.audioBuffer) {&#xD;    return;&#xD;}&#xD;base64 = sound.audio.src.split(&apos;,&apos;)[1];&#xD;binaryString =  window.atob(base64);&#xD;len = binaryString.length;&#xD;bytes = new Uint8Array(len);&#xD;for (i = 0; i &lt; len; i += 1)        {&#xD;  bytes[i] = binaryString.charCodeAt(i);&#xD;}&#xD;arrayBuffer = bytes.buffer;&#xD;Note.prototype.setupContext();&#xD;audioCtx = Note.prototype.audioContext;&#xD;audioCtx.decodeAudioData(arrayBuffer, function(buffer) {&#xD;   sound.audioBuffer = buffer;&#xD;});</l></block><list><block var="sound"/></list></block><block s="doWaitUntil"><block s="evaluate"><block s="reportJSFunction"><list><l>sound</l></list><l>return !isNil(sound.audioBuffer);</l></block><list><block var="sound"/></list></block></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>sound</l><l>choice</l></list><l>switch (choice) {&#xD;case &apos;sample rate&apos;:&#xD;    return sound.audioBuffer.sampleRate;&#xD;case &apos;duration&apos;:&#xD;    return sound.audioBuffer.duration;&#xD;case &apos;length&apos;:&#xD;    return sound.audioBuffer.length;&#xD;case &apos;number of channels&apos;:&#xD;    return sound.audioBuffer.numberOfChannels;&#xD;default:&#xD;    return sound.audioBuffer;&#xD;}</l></block><list><block var="sound"/><block var="attribute"/></list></block></block></script></block-definition><block-definition s="turbo %&apos;action&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>begin</l></list></block><block s="doSetVar"><l>begin</l><block s="reportGlobalFlag"><l><option>turbo mode</option></l></block></block><block s="doSetGlobalFlag"><l><option>turbo mode</option></l><l><bool>true</bool></l></block><block s="doRun"><block var="action"/><list></list></block><block s="doSetGlobalFlag"><l><option>turbo mode</option></l><block var="begin"/></block></script></block-definition><block-definition s="play %&apos;samples&apos; at %&apos;sampleRate&apos; Hz" type="command" category="sound"><comment x="0" y="0" w="164" collapsed="false">play back a sound, a list of samples (single channel), or a list of lists (multiple channels) at the given sample rate.&#xD;for demo purposes this block also fast-plots the samples on the stage</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%n">44100<options>22.05 kHz=22050&#xD;44.1 kHz=44100&#xD;88.2 kHz=88200&#xD;96 kHz=96000</options></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="samples"/><l><option>sound</option></l></block><script><block s="doSetVar"><l>samples</l><custom-block s="%s of sound %obj"><l>samples</l><block var="samples"/></custom-block></block></script></block><block s="doRun"><block s="reportJSFunction"><list><l>samples</l><l>rate</l></list><l>var audioCtx, channels, frameCount, arrayBuffer, i, source;&#xD;Note.prototype.setupContext();&#xD;audioCtx = Note.prototype.audioContext;&#xD;channels = (samples.at(1) instanceof List) ? samples.length() : 1; &#xD;frameCount = (channels === 1) ? samples.length() : samples.at(1).length(); &#xD;arrayBuffer = audioCtx.createBuffer(channels, frameCount, rate);&#xD;if (!arrayBuffer.copyToChannel) {&#xD;    arrayBuffer.copyToChannel = function (src, channel) {&#xD;        var buffer = this.getChannelData(channel);&#xD;        for (i = 0; i &lt; src.length; i += 1) {&#xD;            buffer[i] = src[i];&#xD;        }&#xD;    }&#xD;}&#xD;if (channels === 1) {&#xD;    arrayBuffer.copyToChannel(Float32Array.from(samples.asArray()), 0, 0);&#xD;} else {&#xD;    for (i = 0; i &lt; channels; i += 1) {&#xD;        arrayBuffer.copyToChannel(Float32Array.from(samples.at(i + 1).asArray()), i, 0);&#xD;    }&#xD;}&#xD;source = audioCtx.createBufferSource();&#xD;source.buffer = arrayBuffer;&#xD;source.connect(audioCtx.destination);&#xD;source.start();&#xD;source.pause = source.stop;&#xD;this.parentThatIsA(StageMorph).activeSounds.push(source);</l></block><list><block var="samples"/><block var="sampleRate"/></list></block><custom-block s="plot sound %obj"><block var="samples"/></custom-block></script></block-definition><block-definition s="%&apos;frequency&apos; Hz for %&apos;duration&apos; secs at %&apos;sample rate&apos; Hz sample rate" type="reporter" category="sound"><comment x="0" y="0" w="205" collapsed="false">generate a list of samples representing a sine wave at the given frequency, duration and sample rate</comment><header></header><code></code><translations></translations><inputs><input type="%n">440<options>a 55=55&#xD;a 110=110&#xD;a 220=220&#xD;a 440=440&#xD;a 880=880&#xD;a 1760=1760&#xD;a 3520=3520</options></input><input type="%n">1</input><input type="%n">44100<options>22.05 kHz=22050&#xD;44.1 kHz=44100&#xD;88.2 kHz=88200&#xD;96 kHz=96000</options></input></inputs><script><block s="doDeclareVariables"><list><l>output</l><l>sample period</l><l>duration in samples</l><l>time</l></list></block><block s="doSetVar"><l>sample period</l><block s="reportQuotient"><l>1</l><block var="sample rate"/></block></block><block s="doSetVar"><l>duration in samples</l><block s="reportMonadic"><l><option>ceiling</option></l><block s="reportProduct"><block var="duration"/><block var="sample rate"/></block></block></block><block s="doSetVar"><l>time</l><l>0</l></block><block s="doSetVar"><l>output</l><block s="reportNewList"><list></list></block></block><block s="doWarp"><script><block s="doRepeat"><block var="duration in samples"/><script><block s="doAddToList"><block s="reportMonadic"><l><option>sin</option></l><custom-block s="degrees %n"><block s="reportProduct"><l>2</l><block s="reportProduct"><custom-block s="PI"></custom-block><block s="reportProduct"><block var="frequency"/><block var="time"/></block></block></block></custom-block></block><block var="output"/></block><block s="doChangeVar"><l>time</l><block var="sample period"/></block></script></block></script></block><block s="doReport"><block var="output"/></block></script></block-definition><block-definition s="for each %&apos;item&apos; of %&apos;data&apos; %&apos;action&apos;" type="command" category="lists"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%l"></input><input type="%ca"></input></inputs><script><block s="doUntil"><block s="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></block><script><block s="doSetVar"><l>item</l><block s="reportListItem"><l>1</l><block var="data"/></block></block><block s="doRun"><block var="action"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="doSetVar"><l>data</l><block s="reportCDR"><block var="data"/></block></block></script></block></script></block-definition><block-definition s="PI" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l>3.141592653589793</l></block></script></block-definition><block-definition s="degrees %&apos;radians&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n">0.5</input></inputs><script><block s="doReport"><block s="reportQuotient"><block s="reportProduct"><block var="radians"/><l>180</l></block><custom-block s="PI"></custom-block></block></block></script></block-definition><block-definition s="find first in %&apos;list&apos; such that %&apos;test&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%predRing"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="list"/><block s="reportNewList"><list></list></block></block><script><custom-block s="error %s"><l>item not found in list</l></custom-block></script></block><block s="doIf"><block s="evaluate"><block var="test"/><list><block s="reportListItem"><l>1</l><block var="list"/></block></list></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="list"/></block></block></script></block><block s="doReport"><custom-block s="find first in %l such that %predRing"><block s="reportCDR"><block var="list"/></block><block var="test"/></custom-block></block></script></block-definition><block-definition s="error %&apos;msg&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>msg</l></list><l>throw new Error(msg)</l></block><list><block var="msg"/></list></block></script></block-definition><block-definition s="sound named %&apos;name&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><custom-block s="find first in %l such that %predRing"><block s="reportGet"><l><option>sounds</option></l></block><block s="reifyPredicate"><autolambda><block s="reportEquals"><custom-block s="%s of sound %obj"><l>name</l><block var="sound"/></custom-block><block var="name"/></block></autolambda><list><l>sound</l></list></block></custom-block></block></script></block-definition><block-definition s="plot sound %&apos;sound&apos;" type="command" category="pen"><comment x="0" y="0" w="164" collapsed="false">quickly plot the samples of a sound, a list of samples (single channel), or a list of lists (multiple channels) to the stage at a lower resolution.</comment><header></header><code></code><translations></translations><inputs><input type="%obj"></input></inputs><script><block s="doDeclareVariables"><list><l>samples</l><l>step</l><l>offset</l><l>i</l><l>stage height</l></list></block><block s="doSetVar"><l>stage height</l><custom-block s="stage height"></custom-block></block><block s="doIfElse"><block s="reportIsA"><block var="sound"/><l><option>sound</option></l></block><script><block s="doSetVar"><l>samples</l><custom-block s="%s of sound %obj"><l>samples</l><block var="sound"/></custom-block></block><block s="doSetVar"><l>step</l><block s="reportQuotient"><custom-block s="%s of sound %obj"><l>length</l><block var="sound"/></custom-block><block s="reportProduct"><custom-block s="stage width"></custom-block><l>2</l></block></block></block></script><script><block s="doSetVar"><l>samples</l><block var="sound"/></block></script></block><block s="clear"></block><block s="up"></block><block s="doIfElse"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="samples"/></block><l><option>list</option></l></block><script><block s="doSetVar"><l>step</l><block s="reportQuotient"><block s="reportListLength"><block s="reportListItem"><l>1</l><block var="samples"/></block></block><block s="reportProduct"><custom-block s="stage width"></custom-block><l>2</l></block></block></block><block s="doSetVar"><l>offset</l><block s="reportQuotient"><block var="stage height"/><l>4</l></block></block><custom-block s="for each %upvar of %l %ca"><l>channel</l><block var="samples"/><script><block s="doSetVar"><l>i</l><l>0</l></block><block s="gotoXY"><block s="reportQuotient"><custom-block s="stage width"></custom-block><l>-2</l></block><block var="offset"/></block><block s="down"></block><block s="setSize"><l>1</l></block><custom-block s="turbo %cs"><script><block s="doRepeat"><block s="reportProduct"><custom-block s="stage width"></custom-block><l>2</l></block><script><block s="doChangeVar"><l>i</l><block var="step"/></block><block s="gotoXY"><block s="reportSum"><block s="xPosition"></block><l>0.5</l></block><block s="reportSum"><block s="reportProduct"><block s="reportListItem"><block s="reportMonadic"><l><option>floor</option></l><block var="i"/></block><block var="channel"/></block><block s="reportQuotient"><block var="stage height"/><l>6.4</l></block></block><block var="offset"/></block></block></script></block></script></custom-block><block s="up"></block><block s="doChangeVar"><l>offset</l><block s="reportQuotient"><custom-block s="stage height"></custom-block><l>-2</l></block></block></script></custom-block></script><script><block s="doSetVar"><l>step</l><block s="reportQuotient"><block s="reportListLength"><block var="samples"/></block><block s="reportProduct"><custom-block s="stage width"></custom-block><l>2</l></block></block></block><block s="gotoXY"><block s="reportQuotient"><custom-block s="stage width"></custom-block><l>-2</l></block><l>0</l></block><block s="down"></block><block s="setSize"><l>1</l></block><custom-block s="turbo %cs"><script><block s="doRepeat"><block s="reportProduct"><custom-block s="stage width"></custom-block><l>2</l></block><script><block s="doChangeVar"><l>i</l><block var="step"/></block><block s="gotoXY"><block s="reportSum"><block s="xPosition"></block><l>0.5</l></block><block s="reportProduct"><block s="reportListItem"><block s="reportMonadic"><l><option>floor</option></l><block var="i"/></block><block var="samples"/></block><block s="reportQuotient"><block var="stage height"/><l>3.2</l></block></block></block></script></block></script></custom-block><block s="up"></block></script></block></script></block-definition><block-definition s="stage width" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return StageMorph.prototype.dimensions.x;</l></block><list></list></block></block></script></block-definition><block-definition s="stage height" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return StageMorph.prototype.dimensions.y;</l></block><list></list></block></block></script></block-definition><block-definition s="$circleSolid-1-255-0-0 record" type="reporter" category="sensing"><comment x="0" y="0" w="192" collapsed="false">records an audio snippet and reports it as a new sound, or zero if the user cancels</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>test</l><l>pic</l></list></block><block s="doSetVar"><l>test</l><block s="evaluate"><block s="reportJSFunction"><list></list><l>var soundRecorder,&#xD;    result = false;&#xD;&#xD;soundRecorder = new SoundRecorderDialogMorph(&#xD;    function (audio) {&#xD;        if (audio) {&#xD;            result = new Sound(audio, &apos;recording&apos;);&#xD;        } else {&#xD;            result = null;&#xD;            this.destroy();&#xD;        }&#xD;    }&#xD;);&#xD;&#xD;soundRecorder.cancel = function () {&#xD;    result = null;&#xD;    this.destroy();&#xD;};&#xD;&#xD;soundRecorder.key = &apos;microphone&apos;;&#xD;soundRecorder.popUp(this.world());&#xD;return function () {return result; };</l></block><list></list></block></block><block s="doWaitUntil"><block s="evaluate"><block s="reifyScript"><script><block s="doSetVar"><l>pic</l><block s="evaluate"><block var="test"/><list></list></block></block><block s="doReport"><block s="reportNot"><block s="reportEquals"><block var="pic"/><block s="reportBoolean"><l><bool>false</bool></l></block></block></block></block></script><list></list></block><list></list></block></block><block s="doReport"><block var="pic"/></block></script></block-definition><block-definition s="loudness" type="reporter" category="sensing"><header></header><code></code><translations>ca:volum del so&#xD;es:volumen del sonido&#xD;</translations><inputs></inputs><script><block s="doIf"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return typeof meter == &apos;undefined&apos;</l></block><list></list></block><script><block s="doRun"><block s="reportJSFunction"><list></list><l>navigator.getUserMedia = ( navigator.getUserMedia ||&#xD;                       navigator.webkitGetUserMedia ||&#xD;                       navigator.mozGetUserMedia ||&#xD;                       navigator.msGetUserMedia);&#xD;&#xD;var audioContext = new AudioContext();&#xD;&#xD;/*&#xD;The MIT License (MIT)&#xD;&#xD;Copyright (c) 2014 Chris Wilson&#xD;&#xD;Permission is hereby granted, free of charge, to any person obtaining a copy&#xD;of this software and associated documentation files (the "Software"), to deal&#xD;in the Software without restriction, including without limitation the rights&#xD;to use, copy, modify, merge, publish, distribute, sublicense, and/or sell&#xD;copies of the Software, and to permit persons to whom the Software is&#xD;furnished to do so, subject to the following conditions:&#xD;&#xD;The above copyright notice and this permission notice shall be included in all&#xD;copies or substantial portions of the Software.&#xD;&#xD;THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR&#xD;IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,&#xD;FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE&#xD;AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER&#xD;LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,&#xD;OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE&#xD;SOFTWARE.&#xD;*/&#xD;&#xD;function createAudioMeter (audioContext,clipLevel,averaging,clipLag) {&#xD;	 var processor = audioContext.createScriptProcessor(512);&#xD;	 processor.onaudioprocess = volumeAudioProcess;&#xD;	 processor.clipping = false;&#xD;	 processor.lastClip = 0;&#xD;	 processor.volume = 0;&#xD;	 processor.clipLevel = clipLevel || 0.98;&#xD;	 processor.averaging = averaging || 0.95;&#xD;	 processor.clipLag = clipLag || 750;&#xD; 	processor.connect(audioContext.destination);&#xD; 	return processor;&#xD;};&#xD;&#xD;function volumeAudioProcess (event) {&#xD;  var buf = event.inputBuffer.getChannelData(0),&#xD;      bufLength = buf.length,&#xD; 	    sum = 0,&#xD;      x;&#xD;  for (var i=0; i&lt;bufLength; i++) {&#xD;   	x = buf[i];&#xD;   	if (Math.abs(x)&gt;=this.clipLevel) {&#xD;    		this.clipping = true;&#xD;    		this.lastClip = window.performance.now();&#xD;   	}&#xD;   	sum += x * x;&#xD;  }&#xD;  var rms =  Math.sqrt(sum / bufLength);&#xD;  this.volume = Math.max(rms, this.volume*this.averaging);&#xD;};&#xD;&#xD;function gotStream (stream) {&#xD;  mediaStreamSource = audioContext.createMediaStreamSource(stream);&#xD;  window.meter = createAudioMeter(audioContext);&#xD;  mediaStreamSource.connect(meter);&#xD;};&#xD;&#xD;navigator.getUserMedia(&#xD;  {&#xD;    "audio": {&#xD;      "mandatory": {&#xD;        "googEchoCancellation": "false",&#xD;        "googAutoGainControl": "false",&#xD;        "googNoiseSuppression": "false",&#xD;        "googHighpassFilter": "false"&#xD;      },&#xD;      "optional": []&#xD;    },&#xD;  }, gotStream, nop);</l></block><list></list></block></script></block><block s="doWaitUntil"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return typeof meter != &apos;undefined&apos;</l></block><list></list></block></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return Math.floor(meter.volume * 100);</l></block><list></list></block></block></script></block-definition></blocks><variables><variable name="Wind"><l>5</l></variable></variables></project><media name="IT-Camp Regen" app="Snap! 5.0, http://snap.berkeley.edu" version="1"></media></snapdata>