private void timer1_Tick(object sender, System.EventArgs e)
        {
            FMOD.RESULT result;

            if (!initialised)
            {
                ERRCHECK(result = FMOD.Event_Factory.EventSystem_Create(ref eventsystem));
                ERRCHECK(result = eventsystem.init(64, FMOD.INITFLAGS.NORMAL, (IntPtr)null, FMOD.EVENT_INITFLAGS.NORMAL));
                ERRCHECK(result = eventsystem.setMediaPath("../../../../examples/media/"));
                ERRCHECK(result = eventsystem.load("examples.fev"));
                ERRCHECK(result = eventsystem.getGroup("examples/FeatureDemonstration/SequencingAndStitching", false, ref eventgroup));

                ERRCHECK(result = eventsystem.getSystemObject(ref sys));
                ERRCHECK(result = sys.createStream("../../../../examples/media/tutorial_bank.fsb", (FMOD.MODE._2D | FMOD.MODE.SOFTWARE), ref fsb));

                initialised = true;
            }

            /*
             *  "Main Loop"
             */
            ERRCHECK(result = eventsystem.update());

            if (eventstart)
            {
                ERRCHECK(result = eventgroup.getEvent("ProgrammerSounds", FMOD.EVENT_MODE.DEFAULT, ref _event));
                ERRCHECK(result = _event.setCallback(eventcallback, (IntPtr)null));
                ERRCHECK(result = _event.start());

                eventstart = false;
            }

            /*
             *  Cleanup and exit
             */
            if (exit)
            {
                ERRCHECK(result = eventsystem.unload());
                ERRCHECK(result = fsb.release());
                ERRCHECK(result = eventsystem.release());

                Application.Exit();
            }
        }