SiON v0.65 is available now

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.SiONDriver.midiModule property.
-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 updates

I'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 MIDI

Big 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 !


Nomltest on Flash

 Nomltest on Flash - wonderfl build flash online

Now my 8bit bullet hell shmups Nomltest is ported to Flash. This is a new open source exapmle of CannonML


CannonML is updated to version 0.31

Now, my shmups scripting library cannon macro language goes to version 0.31.
CannonML in spark project

The grammar of cannonML is almost same with version 0.2 (but some new commands are added).
CannonML reference manual (click [expand all])
CannonML workbench (click [langage] button)

And now the cannonML version 0.31 is accepted as the wonderfl's default library ! You can try the action script code using cannonML on the browser.
cml - wonderfl build flash online

Currently, 3 basic samples are posted.

1. Particle System controled by CannonML

Of course you can apply the cannonML script to your particle system. This is the simplest sample how to use cannonML. This simple cannonML script plays such a complex particle behavior.

2. CannonML Basic usage

The basic usage of cannonML is to create the inherited class of CMLObject. This sample code is with nagging comments.

3. BulletRunner Sample

BulletRunner is a wrapper of CMLObject. You can control the behavior of your own instance (not an inheritance of CMLObject) by BulletRunner and cannonML script.

And, there are very nice articles for Flash Shmups with CannonML.
(This article is based on version 0.3, basically same but the location of CMLMovieClip is change from 'org.si.cml.extensions.framework.CMLMovieClip' to 'org.si.b3.CMLMovieClip')
making a game in as3 part1 the basics
making a game in as3 part2 introduction to cannonml
making a game in as3 part3 first step with cannonml
Thank you very much, Lucas !


Sky Swimmers Heaven was updated 3years ago


Sky Swimmers Heaven ver0.13

Sorry, this is not new. As you can see in the time stamp of exe file, this file is 3 years-old. Recently, I have salvaged the latest version of Sky Swimmers Heaven project from the HDD of my gone PC. So, I will publish it. Enjoy.


Dive into Cyberspace

It has been 3 months since I last posted on wonderlf. And this is my new work for this challenge in a competition "checkmate". Now I strongly hope to musicalize this.
In the past 3 months, I mainly stay focus on a development of SiON that is a ActionScript sound library with software synthesizer, and now its in a status of 'alpha release'.
I wonder if wonderfl includes the SiON as a default library when it will go on the next state.


Screen Space Ambient Occlusion

Screen Space Ambient Occlusion - wonderfl build flash online

The Screen Space Ambient Occlusion (SSAO) now runs on ActionScript3.
The implementation is not so difficult because the ActionScript3 has various function to modify bitmap data. But the efficiency of SSAO strongly depends on the situation. It becomes the maximum when the scene has high-density and very complex objects.