SiON - the AS3 softsynth
SiON v0.65 is available now.
Main points of this update are MIDI support and bug-fixings of v0.64 that has big update around PCM sound modules. Here, I introduce the new comming points in v0.64 and 0.65.
PCM modules(v0.64)The biggest update in v0.64 is for handling of mp3 file.
The PCM module is a software synthesizer that controls Sound object as a wave source. In v0.64, the PCM module's code is fully rewrited. And finally the PCM module supports the stereo sound, sampling point (key ranges), pitch releated volume and panning, and short crossfading in sample loop. It also supports ADSSR envelope, filter envelope and so on like a FM sound module. Frequency modulation connection between channels is also supported, so you can modulate PCM waves by PCM waves like YAMAHA AWM2 sound modules (but I cannot imagine how to use it).
It may be hard to understand what is good. In other words, SiON can do as a common sampler machines.
Sampler modules(v0.65)The sampler module is a simple player of Sound object. In v0.65, some shortcuts are implemented. For example, SiONDriver.play() can recieves Sound object as an argument, and it plays Sound object as sampler sound in SiON that supports gap-less loop, crossfading and effectors.
SiON begin to be used as not only a software synthesizer but also a highly-functional Sound manager.
Standard MIDI File Player(v0.652)SiON MIDI Player - wonderfl build flash online
The biggest update in v0.65 is MIDI supprot.
You can handle MIDI file by org.si.sound.smf package in previous version (but it has some bugs and messy to handle). In v0.652(latest version), you can handle standard MIDI file more easily like SiONData. Main updates for MIDI are as follows.
-org.si.sion.midi.*; SiON MIDI module package is appended (moved from org.si.sound.smf.* in v0.651).
-org.si.sion.events.SiONMIDIEvent class (Events dispatched by SiON MIDI module).
-light weight 188 GM/GM drum voices are appended to org.si.sion.utils.SiONPresetVoice.
The default setting of SiON MIDI module is 16 parts, 32 polyphony with light weight (low quality) GM voices for lower CPU loading. These settings are customizable. You can modify SiON MIDI module like common MIDI sound module by PCM, or FM sound chip emulator with MIDI, even or MIDI "NES sound module" by pulse wave, triangle wave and noise voices. This customizablity is very unique and interesting point of SiON MIDI module, so I will expand them in the future.
The usage is very simple, call SiONDriver.play() with org.si.sion.midi.SMFData instead of SiONData, then SiON plays MIDI file, that's all. The SMFData class has load() and loadBytes() methods to load Standard MIDI file from net and local storage.
SoundLoader object(v0.64)In v0.64, org.si.sion.utils.soundloader.SoundLoader is appended. This SoundLoader provides loader for plural media files (like a BulkLoader). Call SoundLoader.setURL() to set URLs, Add event listener of Event.COMPLETE, and call loadAll() to load all files. This class can load Sound file, MIDI file, wave file, images, texts, binaries, SiON Sound Font files and so on.
SiONSoundFont object(v0.64)The org.si.sion.utils.soundfont.SiONSoundFont is appended in v0.64. The SiONSoundFont provides the packed swf file includes mp3 files and voice setting MML of PCM modules. Compile swf files by class inherited from SiONSoundFontContainer that includes embeded mp3 files and MML data (the SiONSoundObjectContainer is the inherited class of Sprite), and load the swf file by SiONSoundFontLoader to load as SiONSoundFont.
Nomltest on Flash uses these SoundLoader and SiONSoundFont functions.
BPMAnalyer and PeakDetector(v0.65)org.si.sion.utils.BPMAnalyer and PeakDetector are also appended in v0.64. As it's name suggests, the BPMAnalyer analyzes tempo value of Sound and the PeakDetector detects peaks of wave data. The BPMAnalyser is an idiot-proof wrapper of PeakDetector because the PeakDetector requires some technical know-hows to estimate certain bpm. Because the estimation of beat per minute vaule is a statistical method, please note that the value from BPMAnalyzer is only a suggestion that the value has high probability. The usage is quite simple. Call BPMAnalyzer.estimateBPM() with objective Sound and it returns estimated bpm value. The method analyzes only some 4seconds length parts in the song.
Other updatesI'm not sure about all of updates ...
-org.si.utils.ByteArrayExt (packing with png image, browse() and IFF data chunk are supported.)
-org.si.SiONVoice.setWaveTable() (SiONVoice can includes wave table data)
-The preset voice list in org.si.sion.utils.SiONPresetVoice is expanded from 462 voices to 650 voices.
-org.si.sion.SiONDriver.setBackgroundSound() is appended
-org.si.sion.utils.PCMSample (class to handle wav data, but some bugs are still remained)
-Some more functions in org.si.sion.utils.Translator. (parseWAVB(), parseWAV(), ...etc)
-Possible to create org.si.sion.sequencer.SiMMLEnvelopTable from MML or Vector.
-Many many bugfixings !
SiON will come up to integrated environment to manage Sound with MIDIBig updates are mainly in mp3 file and MIDI file. In the future, SiON will grow up to not only a software synthesizer but also an integrated environment to manage Sound with MIDI.
Enjoy your sound programming with SiON !