Sound.extract et popforge
Bonjour !!!
Ajourd’hui encore une belle découverte de plus.
Tout d’abord la librairie popforge sur lasquelle je me suis creusé le ciboulo depuis bien longtemps et qui commence enfin a me donner un peu de ses possibilités.
Seulement, puisque je ne cherchait pas a “créer” un son, un synthétiseur a proprement parler directement, mais que je cherchait a travailler des sons deja existant.
J’ai fait une petite classe, permettant de réutiliser les effects de la librairie popforge en convertissant la musique, en tableaux d’objets Samples.
Cela donne cela :
package de.popforge.audio.output{
import flash.events.Event;
import flash.events.SampleDataEvent;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.net.URLRequest;
import de.popforge.parameter.MappingNumberLinear;
import de.popforge.parameter.Parameter;
import flash.utils.ByteArray;
import flash.utils.Endian;
import de.popforge.audio.output.*;
import de.popforge.audio.processor.effects.*;
public class ArrayConverter {
public static function extractToSampleArray(sound:Sound):Array {
var ba:ByteArray = new ByteArray();
sound.extract(ba,44100*sound.length/1000);
// — conversion en Array
ba.position=0;
var samplesArray:Array = [];
while ( ba.position < ba.length ) {
samplesArray.push(new de.popforge.audio.output.Sample(ba.readFloat(),ba.readFloat()));
}
return samplesArray;
}
public static function extractFromURL(url:URLRequest, callback:Function):void {
var sound=new Sound(url);
function soundLoaded(e) {
var a = extractToSampleArray(sound);
callback(a);
}
sound.addEventListener( Event.COMPLETE, soundLoaded );
}
}
}