public static void ShowPluginsInfo()
        {
            void WriteParameters(StringBuilder sBuilder, string name, string dataType, string label, string defaultValue, string minValue, string maxValue) // Lokální funkce
            {
                sBuilder.AppendLine($"Název: {name}")
                    .AppendLine($"Datový typ: {dataType}")
                .AppendLine($"Jednotky: {label}")
                .AppendLine($"Výchozí hodnota: {defaultValue}")
                .AppendLine($"Minimální hodnota: {minValue}")
                .AppendLine($"Maximální hodnota: {maxValue}").AppendLine();
            }/*fnc*/

            void SaveParamDetails(ParameterDescription pDescription, StringBuilder pInfo) // Lokální funkce
            {
                switch (pDescription)
                {
                    case FloatParameterDescription fDesc: 
                        WriteParameters(pInfo, fDesc.Name, "float", fDesc.Label, fDesc.DefaultValue.ToString("N6"), fDesc.Min.ToString("N6"), fDesc.Max.ToString("N6")); break;
                    case IntParameterDescription iDesc:
                        WriteParameters(pInfo, iDesc.Name, "int", iDesc.Label, iDesc.DefaultValue.ToString(), iDesc.Min.ToString(), iDesc.Max.ToString()); break;
                    case BoolParameterDescription bDesc:
                        WriteParameters(pInfo, bDesc.Name, "bool", bDesc.Label, (bDesc.DefaultValue)?"true":"false", "", ""); break;
                    case DataParameterDescription dDesc:
                        WriteParameters(pInfo, dDesc.Name, "data", dDesc.Label, "", "", ""); break;
                    default:
                        throw new InvalidOperationException();
                }/*swt*/
            }/*fnc*/


      StringBuilder    GetPluginDetails(DSP plugin) // Lokální funkce
            {
                Span<char> pluginName = new char[256];
                plugin.GetInfo(pluginName, out FmodVersion a, out int b, out int c, out int d);
                string pluginNameSafe = pluginName.ToString();
                pluginNameSafe = pluginNameSafe.Substring(0, pluginNameSafe.IndexOf('\0'));

                StringBuilder msg = new StringBuilder($"#Vypisuji parametry pluginu {pluginNameSafe}")
                .AppendLine($"Počet parametrů: {plugin.ParameterCount.ToString()}");

                for (int paramIndex = 0; paramIndex < plugin.ParameterCount; paramIndex++)
                {
                    msg.AppendLine ( $"{paramIndex.ToString()}");
                    SaveParamDetails(plugin.GetParameterInfo(paramIndex), msg);
                    msg.AppendLine();
                }/*for*/
                msg.AppendLine();
                return msg;
            }/*fnc*/

            string listener = GetPluginDetails(_fmodSystem.CreateDSPByPlugin(_listenerPlugin)).ToString();
            string soundField = GetPluginDetails(_fmodSystem.CreateDSPByPlugin(_soundFieldPlugin)).ToString();
            string source =   GetPluginDetails  (_fmodSystem.CreateDSPByPlugin(_sourcePlugin)).ToString();

            Clipboard.SetText(listener +soundField +source);
            MessageBox.Show(listener);
            MessageBox.Show(soundField);
            MessageBox.Show(source);
            Application.Current.Shutdown();
        }/*mtd*/
Ejemplo n.º 2
0
        }/*mtd*/

        /// <summary>
        /// KOnstruktor inicializuje základní třídu, z níž jsou odvozeny třídy pro DSP efekty.
        /// </summary>
        /// <param name="fmod">Instance FMODSystem</param>
        /// <param name="plugin">Instance DSP pluginu</param>
        /// <param name="channelGroup">Instance skupiny kanálů</param>
        protected DSPBase(FmodSystem fmod, Plugin plugin, ChannelGroup channelGroup)
        {
            _fmod         = fmod ?? throw new ArgumentNullException(nameof(fmod));
            _plugin       = plugin;
            _dsp          = _fmod.CreateDSPByPlugin(_plugin);
            _channelGroup = channelGroup ?? throw new InvalidOperationException(nameof(channelGroup));
            _channelGroup.AddDSP(ChannelControlDSPIndex.DSPTail, _dsp);
        } /*mtd*/
        public static void Init()
        {
            _fmodSystem = Fmod.CreateSystem();
            _fmodSystem.Init(32);

            _basePlugin = _fmodSystem.LoadPlugin("resonanceaudio.dll");

            _listenerPlugin = _fmodSystem.GetNestedPlugin(_basePlugin, 0);
            _listenerDSP = _fmodSystem.CreateDSPByPlugin(_listenerPlugin);
            _soundFieldPlugin = _fmodSystem.GetNestedPlugin(_basePlugin, 1);
            _sourcePlugin = _fmodSystem.GetNestedPlugin(_basePlugin, 2);

            _masterChannelGroup = _fmodSystem.MasterChannelGroup;
            _spatialChannelGroup = _fmodSystem.CreateChannelGroup("spatial");
            _masterChannelGroup.AddGroup(_spatialChannelGroup, false);

            _masterChannelGroup.AddDSP(ChannelControlDSPIndex.DspHead, _listenerDSP);
        }