public override void CreateMusicScript()
        {
            musicScript = new SoundTrackEvent(BPM);
            wTrk = new SampleSoundEvent("Sublime/drumnbass.ogg");
            wVox = new SampleSoundEvent("Sublime/vox.ogg");
            wLead = new SampleSoundEvent("Sublime/leads.ogg");
            wBeat = new SampleSoundEvent("Sublime/beat.ogg");
            wHat  = new SampleSoundEvent("Sublime/revhat.ogg");
            wStr = new SampleSoundEvent("Sublime/strings.ogg");
            wBeep = new SampleSoundEvent("Sublime/beeps.ogg");

            musicScript.AddEvent(0, wTrk);
            musicScript.AddEvent(0, wVox);
            musicScript.AddEvent(0, wLead);
            musicScript.AddEvent(0, wBeat);
            musicScript.AddEvent(0, wHat);
            musicScript.AddEvent(0, wStr);
            musicScript.AddEvent(0, wBeep);

            double N = Math.Sqrt(musicScript.Children.Count);
            wTrk.Amplitude = 1 / N;
            wVox.Amplitude = 1 / N;
            wLead.Amplitude = 1 / N;
            wBeat.Amplitude = 1 / N;
            wHat.Amplitude = 1 / N;
            wStr.Amplitude = 1 / N;
            wBeep.Amplitude = 1 / N;

            // attach a events soundtrack to each sampled wave track
            tLead = new SoundTrackEvent(BPM);
            wLead.AddEvent(0, tLead);
            tVox = new SoundTrackEvent(BPM);
            wVox.AddEvent(0, tVox);
            tTrk = new SoundTrackEvent(BPM);
            wTrk.AddEvent(0, tTrk);
            tBeat = new SoundTrackEvent(BPM);
            wTrk.AddEvent(0, tBeat);
            tHat = new SoundTrackEvent(BPM);
            wTrk.AddEvent(0, tHat);
            tStr = new SoundTrackEvent(BPM);
            wTrk.AddEvent(0, tStr);
            tBeep = new SoundTrackEvent(BPM);
            wBeep.AddEvent(0, tBeep);

            // volume-decrease events
            // vol( measure.beat-nr,  which-track, measures-duration, game-item )
            for (double t = 3; t < 20; t++)
            {
                Ball b = crBall(0.3f, 0.4f);
                vol(t+0.1, tBeat, 1.0, b);
                if (t == 12)
                {
                    /*
                    // FIXME component does not get inited now?
                    VortexEffect ve = new VortexEffect("CurvedVortex", "clouds");
                    b.Add(ve);
                    //ve.Position = new Vector2(2.1f, 0.43f);
                    ve.VortexVelocity = 0.04f;
                    ve.NoiseLevel = 0.03f;
                    ve.Paused = false;
                    ve.Duration = 10f;
                     */
                }
            }
            /*
            vol(5.1, tBeat, 4.0, crBall(0.5f, 1.26f));
            vol(7.2, tBeat, 4.0, crBall(0.7f, 1.18f));
            vol(9.2, tBeat, 4.0, crBall(0.7f, 1.18f));
            vol(11.2, tBeat, 4.0, crBall(0.7f, 1.18f));
            vol(13.2, tBeat, 4.0, crBall(0.7f, 1.18f));
             */
        }
Пример #2
0
        /**
         * complex script sequence for testing
         */
        public SoundEvent Test_Script1()
        {
            SoundEvent soundScript = new SoundEvent("Test_Script1");
            SampleSoundEvent evDing = new SampleSoundEvent("ding.wav");
            SampleSoundEvent evOrgan = new SampleSoundEvent("hammond-loop.wav");

            // dsp effects
            SoundEvent evEcho = new DSPSoundEvent(FMOD.DSP_TYPE.ECHO);
            //evEmerald.AddEvent(0,echo1);
            SoundEvent evChorus = new DSPSoundEvent(FMOD.DSP_TYPE.CHORUS);
            evChorus.UpdateDuration(10.0);
            evOrgan.AddEvent(evOrgan.Duration, evChorus);
            DSPSoundEvent evLP = new DSPSoundEvent(FMOD.DSP_TYPE.LOWPASS);
            evLP.UpdateDuration(10.0);
            Signal sigLP = new Signal(new List<double>() { 0,300, 3,1500, 7,300, 20,15050 });
            SignalSoundEvent evLPsig = new SignalSoundEvent(SignalSoundEvent.Modifier.DSP_PARAM, sigLP, (int)FMOD.DSP_LOWPASS.CUTOFF);
            evLP.AddEvent(0, evLPsig);
            evOrgan.AddEvent(0, evLP);

            evOrgan.Amplitude = 0.4;
            evOrgan.Repeat = 10;

            soundScript.AddEvent(0.5, evOrgan);

            // create an event defining a signal, which modifies amplitude - linear fade in!
            Signal sig = new Signal(new List<double>() {0,0, 4,1  } );
            SignalSoundEvent evsig = new SignalSoundEvent(SignalSoundEvent.Modifier.AMPLITUDE, sig);
            evOrgan.AddEvent(0.0, evsig);

            // composite event
            SoundEvent evc = new SoundEvent();
            evc.AddEvent(0, evDing);
            evDing = new SampleSoundEvent(evDing); evDing.Amplitude = 0.8; evDing.Pan = -0.5;
            evc.AddEvent(0.33, evDing);
            evDing = new SampleSoundEvent(evDing); evDing.Amplitude = 0.6; evDing.Pan = 0.5;
            evc.AddEvent(0.66, evDing);
            evDing = new SampleSoundEvent(evDing); evDing.Amplitude = 0.4; evDing.Pan = 0.0;
            evc.AddEvent(1.0, evDing);
            evDing = new SampleSoundEvent(evDing); evDing.Amplitude = 0.3;
            evc.AddEvent(1.33, evDing);
            evDing = new SampleSoundEvent(evDing); evDing.Amplitude = 0.25;
            evc.AddEvent(1.66, evDing);

            // add it to script
            soundScript.AddEvent(2.0, evc);
            soundScript.AddEvent(2.5, evc );

            evDing = new SampleSoundEvent(evDing); evDing.Amplitude = 0.91; evDing.Pan = -0.9;
            soundScript.AddEvent(0, evDing);
            evDing = new SampleSoundEvent(evDing); evDing.Amplitude = 0.92; evDing.Pan = +1;
            soundScript.AddEvent(0.5, evDing);
            evDing = new SampleSoundEvent(evDing); evDing.Amplitude = 0.93; evDing.Pan = -1;
            soundScript.AddEvent(1.0, evDing);

            // try oscillator
            OscSoundEvent oscEv = new OscSoundEvent(320);
            oscEv.Amplitude = 0.1;
            SignalSoundEvent sEv = new SignalSoundEvent( SignalSoundEvent.Modifier.AMPLITUDE ,
                new Signal( new List<double>() { 0,0 , 0.5,1 , 2,1 , 2.5,0 , 3.0,0 } ) );
            SignalSoundEvent sEv2 = new SignalSoundEvent(SignalSoundEvent.Modifier.DSP_PARAM,
                new Signal(new List<double>() { 0, 320, 0.5, 543, 2, 129, 2.5, 192.3, 3.0, 410 }), (int) FMOD.DSP_OSCILLATOR.RATE);
            oscEv.AddEvent(0.0, sEv);
            oscEv.AddEvent(0.0, sEv2);
            soundScript.AddEvent(3.0, oscEv);
            soundScript.AddEvent(7.0, oscEv);
            soundScript.AddEvent(11.0, oscEv);
            soundScript.AddEvent(15.0, oscEv);

            return soundScript;
        }