From 5bc0829a32e9c69818333030f8a90ddc1c8102e8 Mon Sep 17 00:00:00 2001 From: jmoenig Date: Tue, 12 Mar 2019 11:44:44 +0100 Subject: [PATCH] updated Animation und AudioComp libraries with new powerOf primitive --- HISTORY.md | 1 + libraries/animation_module.xml | 2 +- libraries/audioComp_module.xml | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index fa180de5..377f01e9 100755 --- a/HISTORY.md +++ b/HISTORY.md @@ -56,6 +56,7 @@ * updated German translation for "play frequency" primitive * Objects, Threads: added "^" reporter (power of) in the Operators category * Objects: updated relabel-dictionary +* updated Animation und AudioComp libraries with new powerOf primitive ### 2019-03-11 * added note / hz conversion blocks to audioComp library diff --git a/libraries/animation_module.xml b/libraries/animation_module.xml index ed8f4e71..25a87aa7 100644 --- a/libraries/animation_module.xml +++ b/libraries/animation_module.xml @@ -1 +1 @@ -
de:wenn _ dann _ sonst _ ca:si _ llavors _ si no _ es:si _ entonces _ sino _ fr:si _ alors _ sinon _
de:animiere Setter _ Getter _ Delta _ über _ Sek. beschleunigt _ 501
de:_ hoch _
de:Grad _ 0.5
de:finde das erste Element in _ für welches _ gilt 1
de:Fehler _
de:gleite _ in _ Sek. beschleunigt: _ 501linearlinear quadratic={ quadratic-in quadratic-out quadratic-in-out } cubic={ cubic-in cubic-out cubic-in-out } quart={ quart-in quart-out quart-in-out } sinusoidal={ sine-in sine-out sine-in-out } elastic
de:animiere _ um _ in _ Sek. beschleunigt: _ x positionx position y position direction size501linearlinear quadratic={ quadratic-in quadratic-out quadratic-in-out } cubic={ cubic-in cubic-out cubic-in-out } quart={ quart-in quart-out quart-in-out } sinusoidal={ sine-in sine-out sine-in-out } elasticgettergettergettergetter
de:Beschleunigung _ linearlinear quadratic={ quadratic-in quadratic-out quadratic-in-out } cubic={ cubic-in cubic-out cubic-in-out } quart={ quart-in quart-out quart-in-out } sinusoidal={ sine-in sine-out sine-in-out } elasticquadratic-inquadratic-outquadratic-in-outcubic-incubic-outcubic-in-outquart-inquart-outquart-in-outsine-insine-outsine-in-outelasticunknown easing function ""
de:für _ = _ bis _ _ in _ Sek. beschleunigt: _ _ 01001linearlinear quadratic={ quadratic-in quadratic-out quadratic-in-out } cubic={ cubic-in cubic-out cubic-in-out } quart={ quart-in quart-out quart-in-out } sinusoidal={ sine-in sine-out sine-in-out } elastic
\ No newline at end of file +
de:wenn _ dann _ sonst _ ca:si _ llavors _ si no _ es:si _ entonces _ sino _ fr:si _ alors _ sinon _
de:animiere Setter _ Getter _ Delta _ über _ Sek. beschleunigt _ 501
de:Grad _ 0.5
de:finde das erste Element in _ für welches _ gilt 1
de:Fehler _
de:gleite _ in _ Sek. beschleunigt: _ 501linearlinear quadratic={ quadratic-in quadratic-out quadratic-in-out } cubic={ cubic-in cubic-out cubic-in-out } quart={ quart-in quart-out quart-in-out } sinusoidal={ sine-in sine-out sine-in-out } elastic
de:animiere _ um _ in _ Sek. beschleunigt: _ x positionx position y position direction size501linearlinear quadratic={ quadratic-in quadratic-out quadratic-in-out } cubic={ cubic-in cubic-out cubic-in-out } quart={ quart-in quart-out quart-in-out } sinusoidal={ sine-in sine-out sine-in-out } elasticgettergettergettergetter
de:Beschleunigung _ linearlinear quadratic={ quadratic-in quadratic-out quadratic-in-out } cubic={ cubic-in cubic-out cubic-in-out } quart={ quart-in quart-out quart-in-out } sinusoidal={ sine-in sine-out sine-in-out } elasticquadratic-inquadratic-outquadratic-in-outcubic-incubic-outcubic-in-outquart-inquart-outquart-in-outsine-insine-outsine-in-outelasticunknown easing function ""
de:für _ = _ bis _ _ in _ Sek. beschleunigt: _ _ 01001linearlinear quadratic={ quadratic-in quadratic-out quadratic-in-out } cubic={ cubic-in cubic-out cubic-in-out } quart={ quart-in quart-out quart-in-out } sinusoidal={ sine-in sine-out sine-in-out } elastic
\ No newline at end of file diff --git a/libraries/audioComp_module.xml b/libraries/audioComp_module.xml index 86c90f6b..ad214d3a 100644 --- a/libraries/audioComp_module.xml +++ b/libraries/audioComp_module.xml @@ -1 +1 @@ -
durationname duration length number of channels sample rate samplessamplessoundvar base64, binaryString, len, bytes, i, arrayBuffer, audioCtx; if (sound.audioBuffer) { return; } base64 = sound.audio.src.split(',')[1]; binaryString = window.atob(base64); len = binaryString.length; bytes = new Uint8Array(len); for (i = 0; i < len; i += 1) { bytes[i] = binaryString.charCodeAt(i); } arrayBuffer = bytes.buffer; Note.prototype.setupContext(); audioCtx = Note.prototype.audioContext; audioCtx.decodeAudioData(arrayBuffer, function(buffer) { sound.audioBuffer = buffer; });soundreturn !isNil(sound.audioBuffer);soundchoiceswitch (choice) { case 'sample rate': return sound.audioBuffer.sampleRate; case 'duration': return sound.audioBuffer.duration; case 'length': return sound.audioBuffer.length; case 'number of channels': return sound.audioBuffer.numberOfChannels; default: return sound.audioBuffer; }
play back a sound, a list of samples (single channel), or a list of lists (multiple channels) at the given sample rate. for demo purposes this block also fast-plots the samples on the stage
4410022.05 kHz=22050 44.1 kHz=44100 88.2 kHz=88200 96 kHz=96000samplesratevar audioCtx, channels, frameCount, arrayBuffer, i, source; Note.prototype.setupContext(); audioCtx = Note.prototype.audioContext; channels = (samples.at(1) instanceof List) ? samples.length() : 1; frameCount = (channels === 1) ? samples.length() : samples.at(1).length(); arrayBuffer = audioCtx.createBuffer(channels, frameCount, rate); if (!arrayBuffer.copyToChannel) { arrayBuffer.copyToChannel = function (src, channel) { var buffer = this.getChannelData(channel); for (i = 0; i < src.length; i += 1) { buffer[i] = src[i]; } } } if (channels === 1) { arrayBuffer.copyToChannel(Float32Array.from(samples.asArray()), 0, 0); } else { for (i = 0; i < channels; i += 1) { arrayBuffer.copyToChannel(Float32Array.from(samples.at(i + 1).asArray()), i, 0); } } source = audioCtx.createBufferSource(); source.buffer = arrayBuffer; source.connect(audioCtx.destination); source.start(); source.pause = source.stop; this.parentThatIsA(StageMorph).activeSounds.push(source);
generate a list of samples representing a sine wave at the given frequency, duration and sample rate
440a 55=55 a 110=110 a 220=220 a 440=440 a 880=880 a 1760=1760 a 3520=352014410022.05 kHz=22050 44.1 kHz=44100 88.2 kHz=88200 96 kHz=96000
0.5
1
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.
1offset-2
records an audio snippet and reports it as a new sound, or zero if the user cancels
440
69
69
\ No newline at end of file +
durationname duration length number of channels sample rate samplessamplessoundvar base64, binaryString, len, bytes, i, arrayBuffer, audioCtx; if (sound.audioBuffer) { return; } base64 = sound.audio.src.split(',')[1]; binaryString = window.atob(base64); len = binaryString.length; bytes = new Uint8Array(len); for (i = 0; i < len; i += 1) { bytes[i] = binaryString.charCodeAt(i); } arrayBuffer = bytes.buffer; Note.prototype.setupContext(); audioCtx = Note.prototype.audioContext; audioCtx.decodeAudioData(arrayBuffer, function(buffer) { sound.audioBuffer = buffer; });soundreturn !isNil(sound.audioBuffer);soundchoiceswitch (choice) { case 'sample rate': return sound.audioBuffer.sampleRate; case 'duration': return sound.audioBuffer.duration; case 'length': return sound.audioBuffer.length; case 'number of channels': return sound.audioBuffer.numberOfChannels; default: return sound.audioBuffer; }
play back a sound, a list of samples (single channel), or a list of lists (multiple channels) at the given sample rate. for demo purposes this block also fast-plots the samples on the stage
4410022.05 kHz=22050 44.1 kHz=44100 88.2 kHz=88200 96 kHz=96000samplesratevar audioCtx, channels, frameCount, arrayBuffer, i, source; Note.prototype.setupContext(); audioCtx = Note.prototype.audioContext; channels = (samples.at(1) instanceof List) ? samples.length() : 1; frameCount = (channels === 1) ? samples.length() : samples.at(1).length(); arrayBuffer = audioCtx.createBuffer(channels, frameCount, rate); if (!arrayBuffer.copyToChannel) { arrayBuffer.copyToChannel = function (src, channel) { var buffer = this.getChannelData(channel); for (i = 0; i < src.length; i += 1) { buffer[i] = src[i]; } } } if (channels === 1) { arrayBuffer.copyToChannel(Float32Array.from(samples.asArray()), 0, 0); } else { for (i = 0; i < channels; i += 1) { arrayBuffer.copyToChannel(Float32Array.from(samples.at(i + 1).asArray()), i, 0); } } source = audioCtx.createBufferSource(); source.buffer = arrayBuffer; source.connect(audioCtx.destination); source.start(); source.pause = source.stop; this.parentThatIsA(StageMorph).activeSounds.push(source);
generate a list of samples representing a sine wave at the given frequency, duration and sample rate
440a 55=55 a 110=110 a 220=220 a 440=440 a 880=880 a 1760=1760 a 3520=352014410022.05 kHz=22050 44.1 kHz=44100 88.2 kHz=88200 96 kHz=96000
0.5
1
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.
1offset-2
records an audio snippet and reports it as a new sound, or zero if the user cancels
440
69
69
\ No newline at end of file