Export to GitHub

8bitboy - Setup.wiki


Setup

Compile the sources or download bitboy-1.0.swc and include it in your project.

The following code should work instantly.

``` package { import com.audiotool.workers.bitboy.Bitboy; import com.audiotool.workers.bitboy.BitboyOwner; import com.audiotool.workers.bitboy.FormatInfo;

import flash.display.Sprite;
import flash.events.ErrorEvent;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;

/**
 * @author Andre Michelle
 */
public final class MyApp extends Sprite implements BitboyOwner
{
    private var bitboy: Bitboy;

    public function WorkerApp()
    {
        bitboy = new Bitboy( this );
        bitboy.loadWorkerSWF( new URLRequest( "http://8bitboy.popforge.de/worker/bitboy-worker-1.0.swf" ) );
    }

    public function onBitboyReady(): void
    {
        loadMod();
    }

    public function onBitboyFormatInfo( formatInfo: FormatInfo ): void
    {
        trace( formatInfo );
    }

    public function onBitboyError( error: Error ): void
    {
        throw error;
    }

    private function loadMod(): void
    {
        const loader: URLLoader = new URLLoader();
        addListeners( loader );

        loader.dataFormat = URLLoaderDataFormat.BINARY;
        loader.load( new URLRequest( "http://8bitboy.popforge.de/mod/emax-delicate_oooz!.mod" ) );
    }

    private function onLoaderComplete( event: Event ): void
    {
        const loader: URLLoader = URLLoader( event.target );
        removeListeners( loader );

        bitboy.setBufferSize( 2048 );
        bitboy.setSamplingRateShift( 0 );
        bitboy.setLoopMode( true );
        bitboy.setChannelPanning( 0, -0.5 );
        bitboy.setChannelPanning( 1,  0.5 );
        bitboy.setChannelPanning( 2,  0.5 );
        bitboy.setChannelPanning( 3, -0.5 );
        bitboy.setFormat( loader.data );
        bitboy.start();
    }

    private function onLoaderError( event: ErrorEvent ): void
    {
        const loader: URLLoader = URLLoader( event.target );
        removeListeners( loader );

        trace( event );
    }

    private function addListeners( loader: URLLoader ): void
    {
        loader.addEventListener( Event.COMPLETE, onLoaderComplete );
        loader.addEventListener( IOErrorEvent.IO_ERROR, onLoaderError );
        loader.addEventListener( SecurityErrorEvent.SECURITY_ERROR, onLoaderError );
    }

    private function removeListeners( loader: URLLoader ): void
    {
        loader.removeEventListener( Event.COMPLETE, onLoaderComplete );
        loader.removeEventListener( IOErrorEvent.IO_ERROR, onLoaderError );
        loader.removeEventListener( SecurityErrorEvent.SECURITY_ERROR, onLoaderError );
    }
}

} ```