Exemplo n.º 1
0
        void ProcessSaw(float[] buffer, int samplesPerBuffer, ProcArgs pargs)
        {
            const int fix = 0x70;

            int bufPos = 0;

            do
            {
                interPos += pargs.InterStep;
                if (interPos >= 1)
                {
                    interPos--;
                }
                int var1 = (int)(interPos * 0x100) - fix;
                int var2 = (int)(interPos * 0x10000) << 17;
                int var3 = var1 - (var2 >> 27);
                pos = var3 + (pos >> 1);

                float baseSamp = (float)pos / 0x100;

                buffer[bufPos++] += baseSamp * pargs.LeftVol;
                buffer[bufPos++] += baseSamp * pargs.RightVol;

                pargs.LeftVol  += pargs.LeftVolStep;
                pargs.RightVol += pargs.RightVolStep;
            } while (--samplesPerBuffer > 0);
        }
Exemplo n.º 2
0
        void ProcessTri(float[] buffer, uint samplesPerBuffer, ProcArgs pargs)
        {
            int bufPos = 0;

            do
            {
                interPos += pargs.InterStep;
                if (interPos >= 1)
                {
                    interPos--;
                }
                float baseSamp;
                if (interPos < 0.5f)
                {
                    baseSamp = interPos * 4 - 1;
                }
                else
                {
                    baseSamp = 3 - (interPos * 4);
                }

                buffer[bufPos++] += baseSamp * pargs.LeftVol;
                buffer[bufPos++] += baseSamp * pargs.RightVol;

                pargs.LeftVol  += pargs.LeftVolStep;
                pargs.RightVol += pargs.RightVolStep;
            } while (--samplesPerBuffer > 0);
        }
Exemplo n.º 3
0
        public void Test_Procedure_CanLookup()
        {
            var descriptor = this.FindPage("LocatorQuery2");
            var args       = new ProcArgs(typeof(int), typeof(object));
            var factory    = this.engine.Proc(descriptor, args);

            factory.ShouldNotBeNull();
        }
Exemplo n.º 4
0
        public void Page_WithResultObject_CanConvertFromAnyType()
        {
            PageDescriptor descriptor = this.FindPage("LocatorQuery2");
            ProcArgs       args1      = new ProcArgs(typeof(object), typeof(int));
            ProcArgs       args2      = new ProcArgs(typeof(object), typeof(string));

            this.engine.Proc(descriptor, args1).ShouldNotBeNull();
            this.engine.Proc(descriptor, args2).ShouldNotBeNull();
        }
Exemplo n.º 5
0
        public void Page_IfExists_ReturnsFactory()
        {
            PageDescriptor descriptor = this.FindPage("LocatorQuery2");
            ProcArgs       args       = new ProcArgs(typeof(int), typeof(object));

            ProcFactory factory = this.engine.Proc(descriptor, args);

            factory.ShouldNotBeNull();
        }
Exemplo n.º 6
0
        public void Test_Page_ResultVariance()
        {
            var descriptor = this.FindPage("LocatorQuery2");
            var args1      = new ProcArgs(typeof(object), typeof(int));
            var args2      = new ProcArgs(typeof(object), typeof(string));

            this.engine.Proc(descriptor, args1).ShouldNotBeNull();
            this.engine.Proc(descriptor, args2).ShouldNotBeNull();
        }
Exemplo n.º 7
0
        public void Test_Procedure_CannotLookup_NoDomain()
        {
            var descriptor = this.locator.FindPage("NoDomainQuery", typeof(NoDomainAccessor));
            var args       = new ProcArgs(typeof(object), typeof(object));

            descriptor.ShouldNotBeNull();
            descriptor.DomainType.ShouldBeNull();

            Should.Throw <ProcExecutionException>(() => this.engine.Proc(descriptor, args));
        }
Exemplo n.º 8
0
        public void Proc_IfNoDomainAssociated_ThrowsExpectedException()
        {
            PageDescriptor descriptor = this.locator.FindPage("NoDomainQuery", typeof(NoDomainAccessor));
            ProcArgs       args       = new ProcArgs(typeof(object), typeof(object));

            descriptor.ShouldNotBeNull();
            descriptor.DomainType.ShouldBeNull();

            Should.Throw <ProcExecutionException>(() => this.engine.Proc(descriptor, args));
        }
Exemplo n.º 9
0
        public string Sql <TModel, TResult>(Runnable <TModel, TResult> model)
        {
            IProcLocator locator = this.Context?.Locator ?? new ProcLocator();
            IProcEngine  engine  = this.Context?.Engine ?? new ProcEngine(null);

            PageDescriptor descriptor = locator.FindPage("Query", this.GetType());
            ProcArgs       args       = new ProcArgs(typeof(Runnable <TModel, TResult>), typeof(List <TResult>));
            ProcFactory    factory    = engine.Proc(descriptor, args);

            return(factory(model).Buffer.ReadToEnd().Text.Trim());
        }
Exemplo n.º 10
0
        public void Page_CanResolveFactory_WithoutDomain()
        {
            PageDescriptor descriptor = this.locator.FindPage("NoDomainQuery", typeof(NoDomainAccessor));
            ProcArgs       args       = new ProcArgs(typeof(object), typeof(object));

            descriptor.ShouldNotBeNull();
            descriptor.DomainType.ShouldBeNull();

            PageFactory factory = Should.NotThrow(() => this.engine.Page(descriptor.PageType));

            factory.ShouldNotBeNull();
        }
Exemplo n.º 11
0
        public void Test_Page_CanLookup_NoDomain()
        {
            var descriptor = this.locator.FindPage("NoDomainQuery", typeof(NoDomainAccessor));
            var args       = new ProcArgs(typeof(object), typeof(object));

            descriptor.ShouldNotBeNull();
            descriptor.DomainType.ShouldBeNull();

            var factory = Should.NotThrow(() => this.engine.Page(descriptor.PageType));

            factory.ShouldNotBeNull();
        }
Exemplo n.º 12
0
        void ProcessNormal(float[] buffer, int samplesPerBuffer, ProcArgs pargs)
        {
            float GetSample(int position)
            {
                position += sample.GetOffset();
                return((sample.bUnsigned ? ROM.Instance.Reader.ReadByte(position) - 0x80 : ROM.Instance.Reader.ReadSByte(position)) / (float)0x80);
            }

            int bufPos = 0;

            do
            {
                float baseSamp = GetSample(pos);
                float deltaSamp;
                if (pos + 1 >= sample.Length)
                {
                    deltaSamp = sample.bLoop ? GetSample(sample.LoopPoint) - baseSamp : 0;
                }
                else
                {
                    deltaSamp = GetSample(pos + 1) - baseSamp;
                }
                float finalSamp = baseSamp + deltaSamp * interPos;

                buffer[bufPos++] += finalSamp * pargs.LeftVol;
                buffer[bufPos++] += finalSamp * pargs.RightVol;

                pargs.LeftVol  += pargs.LeftVolStep;
                pargs.RightVol += pargs.RightVolStep;

                interPos += pargs.InterStep;
                int posDelta = (int)interPos;
                interPos -= posDelta;
                pos      += posDelta;
                if (pos >= sample.Length)
                {
                    if (sample.bLoop)
                    {
                        pos = sample.LoopPoint;
                    }
                    else
                    {
                        Stop();
                        break;
                    }
                }
            } while (--samplesPerBuffer > 0);
        }
Exemplo n.º 13
0
        public ProcCacheKey(PageDescriptor descriptor, ProcArgs args)
        {
            if (descriptor == null)
            {
                throw new ArgumentNullException(nameof(descriptor));
            }

            if (args == null)
            {
                throw new ArgumentNullException(nameof(args));
            }

            this.PageType   = descriptor.PageType;
            this.ModelType  = args.ModelType;
            this.ResultType = args.ResultType;
        }
Exemplo n.º 14
0
        void ProcessSquare(float[] buffer, int samplesPerBuffer, ProcArgs pargs)
        {
            float CalcThresh(int val)
            {
                int iThreshold = (gsPSG.MinimumCycle << 24) + val;

                iThreshold = (iThreshold < 0 ? ~iThreshold : iThreshold) >> 8;
                iThreshold = iThreshold * gsPSG.CycleAmplitude + (gsPSG.InitialCycle << 24);
                return(iThreshold / (float)0x100000000);
            }

            int curPos  = pos += (processStep == 0 ? gsPSG.CycleSpeed << 24 : 0);
            int nextPos = curPos + (gsPSG.CycleSpeed << 24);

            float curThresh = CalcThresh(curPos), nextThresh = CalcThresh(nextPos);

            float deltaThresh = nextThresh - curThresh;
            float baseThresh  = curThresh + (deltaThresh * (processStep / (float)Config.Instance.InterFrames));
            float threshStep  = deltaThresh / Config.Instance.InterFrames * SoundMixer.Instance.SamplesReciprocal;
            float fThreshold  = baseThresh;

            int bufPos = 0;

            do
            {
                float baseSamp = interPos < fThreshold ? 0.5f : -0.5f;
                baseSamp         += 0.5f - fThreshold;
                fThreshold       += threshStep;
                buffer[bufPos++] += baseSamp * pargs.LeftVol;
                buffer[bufPos++] += baseSamp * pargs.RightVol;

                pargs.LeftVol  += pargs.LeftVolStep;
                pargs.RightVol += pargs.RightVolStep;

                interPos += pargs.InterStep;
                if (interPos >= 1)
                {
                    interPos--;
                }
            } while (--samplesPerBuffer > 0);
        }