Пример #1
0
        // Called when the node enters the scene tree for the first time.
        public override void _Ready()
        {
            buf = (AudioStreamGeneratorPlayback)GetStreamPlayback();

            //FIXME:  IMPLEMENT DRUMS
            channels[9].Mute = true;

            //Setup the patch bank.
            const string BANKPATH = "res://demo/bank0/";
            const string EXT      = ".gfmp";

            for (int i = 0; i < patchBank.Length; i++)
            {
                patchBank[i] = new Patch(MixRate);
                var inst = (GeneralMidiInstrument)i;
                var path = BANKPATH + inst.ToString() + EXT;
                var dir  = new Godot.Directory();

                //Search for a bank to overload the initial one!!
                if (Godot.ResourceLoader.Exists(path) || dir.FileExists(path))
                {
                    var f = new Godot.File();
                    f.Open(path, File.ModeFlags.Read);
                    patchBank[i].FromString(f.GetAsText());
                    f.Close();
                    GD.Print("Program ", i, " (", inst, ") loaded.");
                }
                else
                {
                    //Init patch.
                    patchBank[i].FromString(glue.INIT_PATCH, true);
                }
            }
        }
Пример #2
0
    public override void _Ready()
    {
        InitVignette();

        var Audio = GetTree().Root.GetNode <Main>("Main").Audio;

        Audio.Stream = new AudioStreamGenerator();
        gen          = (AudioStreamGeneratorPlayback)Audio.GetStreamPlayback();
        PrepFrames();
        Audio.Play();
    }
Пример #3
0
    // Called when the node enters the scene tree for the first time.
    public override void _Ready()
    {
        program_change(ops, 4);

        buf = (AudioStreamGeneratorPlayback)GetNode <AudioStreamPlayer>("AudioStreamPlayer").GetStreamPlayback();

        var player = GetNode <AudioStreamPlayer>("AudioStreamPlayer");

        MixRate = ((AudioStreamGenerator)player.Stream).MixRate;

        GetNode <AudioStreamPlayer>("AudioStreamPlayer").Play();
    }
Пример #4
0
        public void FillBuffer()
        {
            float increment = (1.0f / (hz / pulse_hz));
            int   toFill    = AudioStreamGeneratorPlayback.GetFramesAvailable();

            for (uint i = 0; i < toFill; i++)
            {
                float foo = Godot.Mathf.Sin(phase * (Godot.Mathf.Pi * 2f));
                Vector2.Set(foo, foo);
                AudioStreamGeneratorPlayback.PushFrame(Vector2);
                phase = (phase + increment) % 1f;
            }
        }
Пример #5
0
        public OplPlayer FillBuffer()
        {
            int toFill = AudioStreamGeneratorPlayback.GetFramesAvailable() * (Opl.IsStereo ? 2 : 1);

            if (Buffer.Length < toFill)
            {
                Buffer = new short[toFill];
            }
            Opl.ReadBuffer(Buffer, 0, toFill);
            for (uint i = 0; i < toFill; i++)
            {
                float soundbite = Buffer[i] / 32767f; // Convert from 16 bit signed integer audio to 32 bit signed float audio
                Vector2.Set(soundbite, soundbite);
                AudioStreamGeneratorPlayback.PushFrame(Vector2);
            }
            return(this);
        }
Пример #6
0
    public override void _Ready()
    {
        // await ToSignal(GetTree(), "idle_frame");

        player = GetNode <AudioStreamPlayer>("Player");
        stream = (AudioStreamGenerator)player.Stream;
        buf    = (AudioStreamGeneratorPlayback)player.GetStreamPlayback();

        stream.MixRate = Global.MixRate;

        bufferPool = new Vector2[(int)Math.Max(stream.MixRate * stream.BufferLength + 2, stream.MixRate)];

        player.Play();

        // for (int i=4; i<c.Voice.egs.Length; i++)  c.Voice.egs[i].mute = true;

        fromMidi = Owner.GetNode("MIDI Control");

        // fromMidi.Connect("note_on", this, "TryNoteOn");
        // fromMidi.Connect("note_off", this, "TryNoteOff");

        fromMidi.Connect("note_on", this, "QueueNote");
        fromMidi.Connect("note_off", this, "QueueNote", new Godot.Collections.Array(new int[1]));
    }