Brno? Vypsali jsme pro vás nové termíny školení OOP v Brně!

Diskuze: Resonance audio nebo Oculus spatializer

Aktivity (4)
Avatar
Lukáš Vámoš:22. března 15:46

Přátelé, chtěl bych se naučit používat Resonance audio, popř. Oculus spatializer a jejich úžasné 3d zvukové efekty. Používám FMOD core low level API prostřednictvím oficiálního c# wrapperu a DSP pluginy. Uměl byste mě někdo popostrčit trochu kupředu?

Zkusil jsem: Zatím se mi povedlo inicializovat FMOD, načíst plugin a přehrát zvuk. Pokusil jsem se i nastavit nějaké náhodné parametry.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            void Wait()
            {
                WriteLine("Stiskni klávesu.");
                ReadKey();
            }

            void Say(string s, bool wait=true)
            {
                WriteLine(s);
                if (wait) ReadKey();
            }

            void ErrCheck(FMOD.RESULT r, string activity)
            {
                if (r != FMOD.RESULT.OK)
                {
                    Say($"Chyba: {activity}.");
                    Environment.Exit(0);
                }
                //Say(activity);
                }

            // deklarace
            FMOD.System FMODSystem;
            uint resonanceAudioHandle;
            uint listenerHandle, nearFieldHandle, sourceHandle;
            FMOD.DSP listenerDSP, fieldDSP, sourceDSP;
            FMOD.Sound snd;
            FMOD.Channel ch;


            // inicializace
            //Say("Nazdar! Až něco zmáčkneš, pustím se do toho.");

            FMOD.Factory.System_Create(out FMODSystem);
            ErrCheck(FMODSystem.init(32, FMOD.INITFLAGS.NORMAL, (IntPtr)0), "inicializace FMOD");

            // načtení pluginu Resonance Audio
          ErrCheck  (FMODSystem.loadPlugin("resonanceaudio.dll", out resonanceAudioHandle), "Načtení pluginu Resonance Audio");

            // získání identifikátorů vnořených pluginů
            ErrCheck(FMODSystem.getNestedPlugin(resonanceAudioHandle, 0, out listenerHandle), "načítání handle vnořeného pluginu Listener");
            ErrCheck(FMODSystem.getNestedPlugin(resonanceAudioHandle, 1, out nearFieldHandle), "načítání vnořeného handle pluginu Near Field");
            ErrCheck(FMODSystem.getNestedPlugin(resonanceAudioHandle, 2, out sourceHandle), "načítání handle vnořeného pluginu Source");

            // aktivace pluginů
            ErrCheck(FMODSystem.createDSPByPlugin(listenerHandle, out listenerDSP), "aktivace pluginu Listener");
            ErrCheck(FMODSystem.createDSPByPlugin(nearFieldHandle, out fieldDSP), "aktivace pluginu Near Field");
            ErrCheck(FMODSystem.createDSPByPlugin(sourceHandle, out sourceDSP), "aktivace pluginu Source");

            //načtení zvuku
            ErrCheck(FMODSystem.createSound("fear.mp3", FMOD.MODE.DEFAULT, out snd), "načítání zvuku");

            //přehrání zvuku
          ErrCheck(FMODSystem.playSound(snd, new FMOD.ChannelGroup(), true, out ch), "přehrávání zvuku");

            // aplikování efektů na kanál
            ErrCheck(ch.addDSP(FMOD.CHANNELCONTROL_DSP_INDEX.TAIL, listenerDSP), "aplikování pluginu Listener kanál");
            listenerDSP.setParameterFloat(4, 50);
            ErrCheck(ch.addDSP(FMOD.CHANNELCONTROL_DSP_INDEX.TAIL, fieldDSP), "aplikování pluginu Near Field na kanál");
            ErrCheck(ch.addDSP(FMOD.CHANNELCONTROL_DSP_INDEX.TAIL, sourceDSP), "aplikování pluginu Source na kanál");
            sourceDSP.setParameterFloat(4, 28);


            //odpauzování
            ch.setMode(FMOD.MODE._3D);
            ch.setPaused(false);
            Say("Už to asi hraje.");

            FMODSystem.release();
        }
    }
}

Chci docílit: Dělám audiohru pro nevidomé a chci tam mít co nejpůsobivější prostorový zvuk... vlastně všechno, co nabízí Resonance audio.

 
Odpovědět 22. března 15:46
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.