Exemplo n.º 1
0
 private void RedrawCrossfeed(WWCrossFeedFir crossFeed)
 {
     for (int i = 0; i < crossFeed.Count(); ++i)
     {
         DrawRoute(crossFeed.GetNth(i));
     }
 }
Exemplo n.º 2
0
        void BackgroundWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            var args = e.Argument as TraceArgs;

            var coeff = new List <Dictionary <int, double> >();

            WWCrossFeedFir crossfeed = args.CrossfeedFir;

            crossfeed.WallReflectionType = WWCrossFeedFir.ReflectionType.Diffuse;
            crossfeed.Start(mRoom);
            crossfeed.TraceAll(mRoom);
            coeff.AddRange(crossfeed.OutputFirCoeffs(args.SampleRate));

            crossfeed.Clear();
            crossfeed.WallReflectionType = WWCrossFeedFir.ReflectionType.Specular;
            crossfeed.Start(mRoom);
            crossfeed.TraceAll(mRoom);
            coeff.AddRange(crossfeed.OutputFirCoeffs(args.SampleRate));

            crossfeed.Clear();

            WWCrossFeedFir.OutputFile(args.SampleRate, coeff.ToArray(), args.FileName);
        }
Exemplo n.º 3
0
        private WWCrossFeedFir CreateCrossFeedFirFromUseInput()
        {
            double wallReflectionRatio;

            Double.TryParse(mWallReflectionRatio.Text, out wallReflectionRatio);

            int maxReflectionCount;

            Int32.TryParse(mTextBoxMaxReflectionCount.Text, out maxReflectionCount);

            double diffuseReflectionGain;

            Double.TryParse(mTextBoxDiffuseReflectionGain.Text, out diffuseReflectionGain);

            WWCrossFeedFir crossfeed = new WWCrossFeedFir();

            crossfeed.WallReflectionType = WWCrossFeedFir.ReflectionType.Diffuse;
            // エネルギー比 to 振幅比の変換。
            crossfeed.WallReflectionRatio   = Math.Sqrt(wallReflectionRatio);
            crossfeed.MaxReflectionCount    = maxReflectionCount;
            crossfeed.DiffuseReflectionGain = Math.Pow(10.0, diffuseReflectionGain / 10.0);

            return(crossfeed);
        }
Exemplo n.º 4
0
        private void mButtonRayTest_Click(object sender, RoutedEventArgs e)
        {
            if (!UpdateParameters())
            {
                return;
            }

            var reflectionType = (WWCrossFeedFir.ReflectionType)mComboBoxReflectionType.SelectedIndex;

            int rayCount;

            Int32.TryParse(mTextBoxRayCount.Text, out rayCount);

            mCrossFeed = CreateCrossFeedFirFromUseInput();
            mCrossFeed.WallReflectionType = reflectionType;
            mCrossFeed.Start(mRoom);
            for (int i = 0; i < rayCount; ++i)
            {
                mCrossFeed.Trace(mRoom, reflectionType, 0);
                mCrossFeed.Trace(mRoom, reflectionType, 1);
            }

            UpdateRoomCanvas();
        }
Exemplo n.º 5
0
 public void SetCrossFeed(WWCrossFeedFir crossFeed)
 {
     mCrossFeed = crossFeed;
 }
Exemplo n.º 6
0
 private void RedrawCrossfeed(WWCrossFeedFir crossFeed)
 {
     for (int i = 0; i < crossFeed.Count(); ++i) {
         DrawRoute(crossFeed.GetNth(i));
     }
 }
Exemplo n.º 7
0
 public void SetCrossFeed(WWCrossFeedFir crossFeed)
 {
     mCrossFeed = crossFeed;
 }
Exemplo n.º 8
0
        private void mButtonRayTest_Click(object sender, RoutedEventArgs e)
        {
            if (!UpdateParameters()) {
                return;
            }

            var reflectionType = (WWCrossFeedFir.ReflectionType)mComboBoxReflectionType.SelectedIndex;

            int rayCount;
            Int32.TryParse(mTextBoxRayCount.Text, out rayCount);

            mCrossFeed = CreateCrossFeedFirFromUseInput();
            mCrossFeed.WallReflectionType = reflectionType;
            mCrossFeed.Start(mRoom);
            for (int i = 0; i < rayCount; ++i) {
                mCrossFeed.Trace(mRoom, reflectionType, 0);
                mCrossFeed.Trace(mRoom, reflectionType, 1);
            }

            UpdateRoomCanvas();
        }
Exemplo n.º 9
0
        private WWCrossFeedFir CreateCrossFeedFirFromUseInput()
        {
            double wallReflectionRatio;
            Double.TryParse(mWallReflectionRatio.Text, out wallReflectionRatio);

            int maxReflectionCount;
            Int32.TryParse(mTextBoxMaxReflectionCount.Text, out maxReflectionCount);

            double diffuseReflectionGain;
            Double.TryParse(mTextBoxDiffuseReflectionGain.Text, out diffuseReflectionGain);

            WWCrossFeedFir crossfeed = new WWCrossFeedFir();
            crossfeed.WallReflectionType = WWCrossFeedFir.ReflectionType.Diffuse;
            // エネルギー比 to 振幅比の変換。
            crossfeed.WallReflectionRatio = Math.Sqrt(wallReflectionRatio);
            crossfeed.MaxReflectionCount = maxReflectionCount;
            crossfeed.DiffuseReflectionGain = Math.Pow(10.0, diffuseReflectionGain / 10.0);

            return crossfeed;
        }