Example #1
0
        protected override SpectrumRendererParams CreateSpectrumRendererParams()
        {
            // Delta-C
            // Total Size:          448 x 320
            // Visible Size:        384 x 304 (72+256+56 x 64+192+48)
            var timing = SpectrumRenderer.CreateParams();

            timing.c_ulaLineTime       = 224;
            timing.c_ulaFirstPaperLine = 68;
            timing.c_ulaFirstPaperTact = 65;    // 68;
            timing.c_frameTactCount    = 69216; //69888;

            timing.c_ulaBorderTop    = 32;
            timing.c_ulaBorderBottom = 32;
            timing.c_ulaBorderLeftT  = 16;
            timing.c_ulaBorderRightT = 16;

            timing.c_ulaIntBegin    = 0;
            timing.c_ulaIntLength   = 836;//224;
            timing.c_ulaFlashPeriod = 8;

            timing.c_ulaWidth  = (timing.c_ulaBorderLeftT + 128 + timing.c_ulaBorderRightT) * 2;
            timing.c_ulaHeight = (timing.c_ulaBorderTop + 192 + timing.c_ulaBorderBottom);
            return(timing);
        }
Example #2
0
        protected override SpectrumRendererParams CreateSpectrumRendererParams()
        {
            // Байт
            // Total Size:          448 x 312
            // Visible Size:        320 x 240 (32+256+32 x 24+192+24)
            var timing = SpectrumRenderer.CreateParams();

            timing.c_frameTactCount    = 69888;
            timing.c_ulaLineTime       = 224;
            timing.c_ulaFirstPaperLine = 64;
            timing.c_ulaFirstPaperTact = 56;
            timing.c_ulaBorder4T       = true;
            timing.c_ulaBorder4Tstage  = 0;

            timing.c_ulaBorderTop    = 32;
            timing.c_ulaBorderBottom = 32;
            timing.c_ulaBorderLeftT  = 16;
            timing.c_ulaBorderRightT = 16;

            timing.c_ulaIntBegin    = 0;
            timing.c_ulaIntLength   = 33;
            timing.c_ulaFlashPeriod = 25;

            timing.c_ulaWidth  = (timing.c_ulaBorderLeftT + 128 + timing.c_ulaBorderRightT) * 2;
            timing.c_ulaHeight = (timing.c_ulaBorderTop + 192 + timing.c_ulaBorderBottom);
            return(timing);
        }
Example #3
0
        protected override SpectrumRendererParams CreateSpectrumRendererParams()
        {
            // PROFI 3.2
            // Total Size:          768 x 312
            // Visible Size:        640 x 240 (64+512+64 x 0+240+0)
            // SYNCGEN: SAMX6 (original)
            var timing = SpectrumRenderer.CreateParams();

            timing.c_frameTactCount    = 69888; // 59904 for profi mode (312x192)
            timing.c_ulaLineTime       = 224;
            timing.c_ulaFirstPaperLine = 56;
            timing.c_ulaFirstPaperTact = 39;    //42;
            timing.c_ulaBorder4T       = false; // TODO: check?
            timing.c_ulaBorder4Tstage  = 1;     // TODO: check?

            timing.c_ulaBorderTop    = 32;
            timing.c_ulaBorderBottom = 32;
            timing.c_ulaBorderLeftT  = 16;
            timing.c_ulaBorderRightT = 16;

            timing.c_ulaIntBegin    = 0;
            timing.c_ulaIntLength   = 32 + 7; // TODO: needs approve
            timing.c_ulaFlashPeriod = 25;     // TODO: check?

            timing.c_ulaWidth  = (timing.c_ulaBorderLeftT + 128 + timing.c_ulaBorderRightT) * 2;
            timing.c_ulaHeight = timing.c_ulaBorderTop + 192 + timing.c_ulaBorderBottom;
            return(timing);
        }
Example #4
0
        protected override SpectrumRendererParams CreateSpectrumRendererParams()
        {
            // ZX Spectrum +3
            // Total Size:          456 x 311
            // Visible Size:        352 x 303 (48+256+48 x 55+192+56)
            var timing = SpectrumRenderer.CreateParams();

            timing.c_frameTactCount    = 70908;
            timing.c_ulaLineTime       = 228;
            timing.c_ulaFirstPaperLine = 63;
            timing.c_ulaFirstPaperTact = 64;      // 64 [40sync+24border+128scr+32border]
            timing.c_ulaBorder4T       = true;
            timing.c_ulaBorder4Tstage  = 2;

            timing.c_ulaBorderTop    = 32;   //55
            timing.c_ulaBorderBottom = 32;   //56
            timing.c_ulaBorderLeftT  = 16;   //16T
            timing.c_ulaBorderRightT = 16;   //32T

            timing.c_ulaIntBegin  = 64 + 2;
            timing.c_ulaIntLength = 32;    // according to fuse

            timing.c_ulaWidth  = (timing.c_ulaBorderLeftT + 128 + timing.c_ulaBorderRightT) * 2;
            timing.c_ulaHeight = (timing.c_ulaBorderTop + 192 + timing.c_ulaBorderBottom);
            return(timing);
        }
Example #5
0
        protected override SpectrumRendererParams CreateSpectrumRendererParams()
        {
            // Scorpion [Yellow PCB]
            // Total Size:          448 x 312
            // Visible Size:        320 x 240 (32+256+32 x 24+192+24)
            var timing = SpectrumRenderer.CreateParams();

            timing.c_frameTactCount    = 69888;//+
            timing.c_ulaLineTime       = 224;
            timing.c_ulaFirstPaperLine = 64;
            timing.c_ulaFirstPaperTact = 61;// 64;      // 64 [40sync+24border+128scr+32border]
            timing.c_ulaBorder4T       = true;
            timing.c_ulaBorder4Tstage  = 0;

            timing.c_ulaBorderTop    = 32; //64;
            timing.c_ulaBorderBottom = 32; // 40;
            timing.c_ulaBorderLeftT  = 16; // 24;  //24
            timing.c_ulaBorderRightT = 16; // 24; //32

            timing.c_ulaIntBegin  = 61;
            timing.c_ulaIntLength = 32;    // according to fuse

            timing.c_ulaWidth  = (timing.c_ulaBorderLeftT + 128 + timing.c_ulaBorderRightT) * 2;
            timing.c_ulaHeight = (timing.c_ulaBorderTop + 192 + timing.c_ulaBorderBottom);
            return(timing);
        }
Example #6
0
        protected override SpectrumRendererParams CreateSpectrumRendererParams()
        {
            // Pentagon 128K
            // Total Size:          448 x 320
            // Visible Size:        384 x 304 (72+256+56 x 64+192+48)
            var timing = SpectrumRenderer.CreateParams();

            timing.c_frameTactCount    = 71680;
            timing.c_ulaLineTime       = 224;
            timing.c_ulaFirstPaperLine = 80;
            timing.c_ulaFirstPaperTact = 65;    // 68;      // 68 [32sync+36border+128scr+28border]
            timing.c_ulaBorder4T       = false; // TODO: check?
            timing.c_ulaBorder4Tstage  = 1;     // TODO: check?

            timing.c_ulaBorderTop    = 32;
            timing.c_ulaBorderBottom = 32;
            timing.c_ulaBorderLeftT  = 16;
            timing.c_ulaBorderRightT = 16;

            timing.c_ulaIntBegin    = 0;
            timing.c_ulaIntLength   = 32;
            timing.c_ulaFlashPeriod = 25;   // TODO: check?

            timing.c_ulaWidth  = (timing.c_ulaBorderLeftT + 128 + timing.c_ulaBorderRightT) * 2;
            timing.c_ulaHeight = (timing.c_ulaBorderTop + 192 + timing.c_ulaBorderBottom);
            return(timing);
        }
Example #7
0
        protected override SpectrumRendererParams CreateSpectrumRendererParams()
        {
            // Leningrad 1
            // Total Size:          448 x 320
            // Visible Size:        384 x 304 (72+256+56 x 64+192+48)

            // 224 = 128T scr + 32T right + 32T HSync + 32T left
            // 312 = 192 scr + 40 bottom + 16 VSync + 64 top border
            var timing = SpectrumRenderer.CreateParams();

            timing.c_frameTactCount    = 69888; // +
            timing.c_ulaLineTime       = 224;   // +
            timing.c_ulaFirstPaperLine = 64;    // +
            timing.c_ulaFirstPaperTact = 61;    //64;

            timing.c_ulaBorderTop    = 32;      // 48;
            timing.c_ulaBorderBottom = 32;      // 48;
            timing.c_ulaBorderLeftT  = 16;      // 32;      // +
            timing.c_ulaBorderRightT = 16;      // 32;     // +

            timing.c_ulaIntBegin  = 64 + (64 + 192) * 224;
            timing.c_ulaIntLength = 32;

            timing.c_ulaWidth  = (timing.c_ulaBorderLeftT + 128 + timing.c_ulaBorderRightT) * 2;
            timing.c_ulaHeight = (timing.c_ulaBorderTop + 192 + timing.c_ulaBorderBottom);
            return(timing);
        }
Example #8
0
    SpectrumRenderer SpawnSpectrumRenderer(DSPNode spectrumNode)
    {
        GameObject       go       = Instantiate(SpectrumRendererPrefab);
        SpectrumRenderer spectrum = go.GetComponent <SpectrumRenderer>();

        spectrum.Init(_Graph, spectrumNode);
        return(spectrum);
    }
Example #9
0
        protected override void OnRendererInit()
        {
            var palette = SpectrumRenderer.CreatePalette();

            SpectrumRenderer.Palette = palette;
            ProfiRenderer.Palette    = palette;
            SpectrumRenderer.Params  = CreateSpectrumRendererParams();
            ProfiRenderer.Params     = CreateProfiRendererParams();
        }
Example #10
0
    public override void Init()
    {
        base.Init();

        if (DSPReady)
        {
            GameObject go = Instantiate(_DSPWidgetGraph.GraphContainer.SpectrumRendererPrefab);
            SpectrumRenderer = go.GetComponent <SpectrumRenderer>();
            SpectrumRenderer.Init(DSPGraph, DSPNode);
        }
    }
    public void Register(SpectrumRenderer sr)
    {
        Rect rect = new Rect(0, 0, sr.SpectrumRT.width, sr.SpectrumRT.height);

        if (_Items.Count > 0)
        {
            Item lastItem = _Items[_Items.Count - 1];
            rect.x = lastItem.rect.x + 30;
            rect.y = lastItem.rect.y + 15;
        }
        _Items.Add(new Item()
        {
            spectrum = sr,
            rect     = rect,
            scale    = 1f
        });
    }
Example #12
0
        protected override void OnRendererInit()
        {
            var palette = SpectrumRenderer.CreatePalette();

            SpectrumRenderer.Palette = palette;
            Atm320Renderer.Palette   = palette;
            Atm640Renderer.Palette   = palette;
            AtmTxtRenderer.Palette   = palette;
            EvoTxtRenderer.Palette   = palette;
            EvoHwmRenderer.Palette   = palette;
            EvoA16Renderer.Palette   = palette;

            SpectrumRenderer.Params = CreateSpectrumRendererParams();
            Atm320Renderer.Params   = Atm320Renderer.CreateParams();
            Atm640Renderer.Params   = Atm640Renderer.CreateParams();
            AtmTxtRenderer.Params   = AtmTxtRenderer.CreateParams();
            EvoTxtRenderer.Params   = AtmTxtRenderer.Params;
            EvoHwmRenderer.Params   = SpectrumRenderer.Params;
            EvoA16Renderer.Params   = SpectrumRenderer.Params;
        }
Example #13
0
        protected override SpectrumRendererParams CreateSpectrumRendererParams()
        {
            var timing = SpectrumRenderer.CreateParams();

            timing.c_ulaLineTime       = 0xe0;
            timing.c_ulaFirstPaperLine = 80;
            timing.c_ulaFirstPaperTact = 0x44;
            timing.c_frameTactCount    = 0x11800 * 6;//6 - 21MHz

            timing.c_ulaBorderTop    = 0x18;
            timing.c_ulaBorderBottom = 0x18;
            timing.c_ulaBorderLeftT  = 0x10;
            timing.c_ulaBorderRightT = 0x10;

            timing.c_ulaIntBegin  = 0;
            timing.c_ulaIntLength = 0x20;

            timing.c_ulaWidth  = ((timing.c_ulaBorderLeftT + 0x80) + timing.c_ulaBorderRightT) * 2;
            timing.c_ulaHeight = (timing.c_ulaBorderTop + 0xc0) + timing.c_ulaBorderBottom;
            return(timing);
        }
Example #14
0
        protected override SpectrumRendererParams CreateSpectrumRendererParams()
        {
            // Кворум БК-04
            // Total Size:          448 x 312
            // Visible Size:        384 x 296 (72+256+56 x 64+192+40)
            var timing = SpectrumRenderer.CreateParams();

            timing.c_ulaLineTime       = 224;
            timing.c_ulaFirstPaperLine = 80;    // proof???80
            timing.c_ulaFirstPaperTact = 65;    // 68;      // proof???68 [32sync+36border+128scr+28border]
            timing.c_frameTactCount    = 69888; // for pentagon mod = 71680

            timing.c_ulaBorderTop    = 32;      //64;
            timing.c_ulaBorderBottom = 32;      //40;
            timing.c_ulaBorderLeftT  = 16;
            timing.c_ulaBorderRightT = 16;

            timing.c_ulaIntBegin  = 0;
            timing.c_ulaIntLength = 32;

            timing.c_ulaWidth  = (timing.c_ulaBorderLeftT + 128 + timing.c_ulaBorderRightT) * 2;
            timing.c_ulaHeight = (timing.c_ulaBorderTop + 192 + timing.c_ulaBorderBottom);
            return(timing);
        }
Example #15
0
        protected override SpectrumRendererParams CreateSpectrumRendererParams()
        {
            // ATM1 v4.50
            // Total Size:          448 x 312
            // Visible Size:        320 x 240 (32+256+32 x 24+192+24)
            var timing = SpectrumRenderer.CreateParams();

            timing.c_frameTactCount    = 69888;
            timing.c_ulaLineTime       = 224;
            timing.c_ulaFirstPaperLine = 80; // proof???80
            timing.c_ulaFirstPaperTact = 65; // 68;      // proof???68 [32sync+36border+128scr+28border]

            timing.c_ulaBorderTop    = 32;   //64;
            timing.c_ulaBorderBottom = 32;   // 40;
            timing.c_ulaBorderLeftT  = 16;
            timing.c_ulaBorderRightT = 16;

            timing.c_ulaIntBegin  = 0;
            timing.c_ulaIntLength = 32;

            timing.c_ulaWidth  = (timing.c_ulaBorderLeftT + 128 + timing.c_ulaBorderRightT) * 2;
            timing.c_ulaHeight = (timing.c_ulaBorderTop + 192 + timing.c_ulaBorderBottom);
            return(timing);
        }
    void ConfigureDSP()
    {
        AudioConfiguration audioConfig = AudioSettings.GetConfiguration();

        Debug.LogFormat("BufferSize={0} SampleRate={1}", audioConfig.dspBufferSize, audioConfig.sampleRate);

        _Graph  = DSPGraph.Create(SoundFormat.Stereo, 2, audioConfig.dspBufferSize, audioConfig.sampleRate);
        _Driver = new MyAudioDriver {
            Graph = _Graph
        };
        _OutputHandle = _Driver.AttachToDefaultOutput();

        // create graph structure
        using (var block = _Graph.CreateCommandBlock())
        {
            //
            // create nodes
            //
            _Oscilator1 = CreateOscilator(block);
            _Oscilator2 = CreateOscilator(block);
            _Oscilator3 = CreateOscilator(block);
            _Oscilator4 = CreateOscilator(block);

            _ADSR1 = CreateADSR(block);
            _ADSR2 = CreateADSR(block);
            _ADSR3 = CreateADSR(block);
            _ADSR4 = CreateADSR(block);

            _VCA1 = CreateVCA(block);
            _VCA2 = CreateVCA(block);

            _Mixer3 = CreateMixer(block);
            _Mixer4 = CreateMixer(block);

            _Midi = CreateMidi(block);

            _Attenuator = CreateAttenuator(block);

            _MonoToStereo = CreateMonoToStereo(block);

            _Scope    = CreateMonoScope(block);
            _Spectrum = CreateSpectrum(block);

            //
            // connect nodes
            //
            block.Connect(_Midi, 0, _ADSR1, 0); // midi gate to adsr
            block.Connect(_Midi, 0, _ADSR2, 0);
            block.Connect(_Midi, 0, _ADSR3, 0);
            block.Connect(_Midi, 0, _ADSR4, 0);

            block.Connect(_Midi, 1, _Oscilator1, 1); // midi note to oscilator pitch
            block.Connect(_Midi, 1, _Oscilator2, 1);
            block.Connect(_Midi, 1, _Oscilator3, 1);
            block.Connect(_Midi, 1, _Oscilator4, 1);

            block.Connect(_Midi, 2, _Oscilator1, 2); // midi retrigger to oscilator reset phase
            block.Connect(_Midi, 2, _Oscilator2, 2);
            block.Connect(_Midi, 2, _Oscilator3, 2);
            block.Connect(_Midi, 2, _Oscilator4, 2);

            block.Connect(_ADSR1, 0, _VCA1, 0); // adsr gate to vca voltage
            block.Connect(_ADSR2, 0, _VCA2, 0);

            block.Connect(_Oscilator1, 0, _VCA1, 1); // oscilator out to vca in
            block.Connect(_Oscilator2, 0, _VCA2, 1);

            block.Connect(_VCA1, 0, _Oscilator3, 0); // vca out to oscilator fm
            block.Connect(_VCA2, 0, _Oscilator4, 0);

            block.Connect(_ADSR3, 0, _Mixer3, 1); // adsr gate to mixer cv
            block.Connect(_ADSR4, 0, _Mixer4, 1);

            block.Connect(_Oscilator3, 0, _Mixer3, 0); // oscilator out to mixer in
            block.Connect(_Oscilator4, 0, _Mixer4, 0);

            block.Connect(_Mixer3, 0, _Attenuator, 0); // mixer out to attenuator in
            block.Connect(_Mixer4, 0, _Attenuator, 0);

            block.Connect(_Attenuator, 0, _MonoToStereo, 0);    // attenuator out to monotostereo left
            block.Connect(_Attenuator, 0, _MonoToStereo, 1);    // attenuator out to monotostereo right

            block.Connect(_MonoToStereo, 0, _Graph.RootDSP, 0); // monotostereo out to output

            block.Connect(_Attenuator, 0, _Scope, 0);
            block.Connect(_Attenuator, 0, _Spectrum, 0);

            //
            // parameters
            //
            block.SetFloat <OscilatorNode.Parameters, OscilatorNode.Providers, OscilatorNode>(_Oscilator1, OscilatorNode.Parameters.Frequency, 130.813f);
            block.SetFloat <OscilatorNode.Parameters, OscilatorNode.Providers, OscilatorNode>(_Oscilator1, OscilatorNode.Parameters.Mode, (float)OscilatorNode.Mode.Sine);

            block.SetFloat <OscilatorNode.Parameters, OscilatorNode.Providers, OscilatorNode>(_Oscilator2, OscilatorNode.Parameters.Frequency, 130.813f);
            block.SetFloat <OscilatorNode.Parameters, OscilatorNode.Providers, OscilatorNode>(_Oscilator2, OscilatorNode.Parameters.Mode, (float)OscilatorNode.Mode.Sine);

            block.SetFloat <OscilatorNode.Parameters, OscilatorNode.Providers, OscilatorNode>(_Oscilator3, OscilatorNode.Parameters.Frequency, 261.626f);
            block.SetFloat <OscilatorNode.Parameters, OscilatorNode.Providers, OscilatorNode>(_Oscilator3, OscilatorNode.Parameters.Mode, (float)OscilatorNode.Mode.Sine);
            block.SetFloat <OscilatorNode.Parameters, OscilatorNode.Providers, OscilatorNode>(_Oscilator3, OscilatorNode.Parameters.FMMultiplier, 0.5f);

            block.SetFloat <OscilatorNode.Parameters, OscilatorNode.Providers, OscilatorNode>(_Oscilator4, OscilatorNode.Parameters.Frequency, 130.813f);
            block.SetFloat <OscilatorNode.Parameters, OscilatorNode.Providers, OscilatorNode>(_Oscilator4, OscilatorNode.Parameters.Mode, (float)OscilatorNode.Mode.Sine);
            block.SetFloat <OscilatorNode.Parameters, OscilatorNode.Providers, OscilatorNode>(_Oscilator4, OscilatorNode.Parameters.FMMultiplier, 0.4f);

            block.SetFloat <ADSRNode.Parameters, ADSRNode.Providers, ADSRNode>(_ADSR1, ADSRNode.Parameters.Attack, 0.1f);
            block.SetFloat <ADSRNode.Parameters, ADSRNode.Providers, ADSRNode>(_ADSR1, ADSRNode.Parameters.Decay, 0.05f);
            block.SetFloat <ADSRNode.Parameters, ADSRNode.Providers, ADSRNode>(_ADSR1, ADSRNode.Parameters.Sustain, 0.5f);
            block.SetFloat <ADSRNode.Parameters, ADSRNode.Providers, ADSRNode>(_ADSR1, ADSRNode.Parameters.Release, 0.2f);

            block.SetFloat <ADSRNode.Parameters, ADSRNode.Providers, ADSRNode>(_ADSR2, ADSRNode.Parameters.Attack, 0.1f);
            block.SetFloat <ADSRNode.Parameters, ADSRNode.Providers, ADSRNode>(_ADSR2, ADSRNode.Parameters.Decay, 0.05f);
            block.SetFloat <ADSRNode.Parameters, ADSRNode.Providers, ADSRNode>(_ADSR2, ADSRNode.Parameters.Sustain, 0.5f);
            block.SetFloat <ADSRNode.Parameters, ADSRNode.Providers, ADSRNode>(_ADSR2, ADSRNode.Parameters.Release, 0.2f);

            block.SetFloat <ADSRNode.Parameters, ADSRNode.Providers, ADSRNode>(_ADSR3, ADSRNode.Parameters.Attack, 0.05f);
            block.SetFloat <ADSRNode.Parameters, ADSRNode.Providers, ADSRNode>(_ADSR3, ADSRNode.Parameters.Decay, 0.05f);
            block.SetFloat <ADSRNode.Parameters, ADSRNode.Providers, ADSRNode>(_ADSR3, ADSRNode.Parameters.Sustain, 0.5f);
            block.SetFloat <ADSRNode.Parameters, ADSRNode.Providers, ADSRNode>(_ADSR3, ADSRNode.Parameters.Release, 0.1f);

            block.SetFloat <ADSRNode.Parameters, ADSRNode.Providers, ADSRNode>(_ADSR4, ADSRNode.Parameters.Attack, 0.05f);
            block.SetFloat <ADSRNode.Parameters, ADSRNode.Providers, ADSRNode>(_ADSR4, ADSRNode.Parameters.Decay, 0.05f);
            block.SetFloat <ADSRNode.Parameters, ADSRNode.Providers, ADSRNode>(_ADSR4, ADSRNode.Parameters.Sustain, 0.5f);
            block.SetFloat <ADSRNode.Parameters, ADSRNode.Providers, ADSRNode>(_ADSR4, ADSRNode.Parameters.Release, 0.1f);

            block.SetFloat <VCANode.Parameters, VCANode.Providers, VCANode>(_VCA1, VCANode.Parameters.Multiplier, 1.0f);
            block.SetFloat <VCANode.Parameters, VCANode.Providers, VCANode>(_VCA2, VCANode.Parameters.Multiplier, 1.0f);

            block.SetFloat <AttenuatorNode.Parameters, AttenuatorNode.Providers, AttenuatorNode>(_Attenuator, AttenuatorNode.Parameters.Multiplier, 1.0f);

            block.SetFloat <ScopeNode.Parameters, ScopeNode.Providers, ScopeNode>(_Scope, ScopeNode.Parameters.Time, 0.05f);
            block.SetFloat <ScopeNode.Parameters, ScopeNode.Providers, ScopeNode>(_Scope, ScopeNode.Parameters.TriggerTreshold, 0f);

            block.SetFloat <SpectrumNode.Parameters, SpectrumNode.Providers, SpectrumNode>(_Spectrum, SpectrumNode.Parameters.Window, (float)SpectrumNode.WindowType.BlackmanHarris);
        }

        _ScopeRenderer        = SpawnScopeRenderer(_Scope);
        _ScopeRenderer.Height = 5.01f;
        _ScopeRenderer.Offset = 0f;

        _SpectrumRenderer = SpawnSpectrumRenderer(_Spectrum);
    }
Example #17
0
 public ProfiRenderer()
 {
     Params  = CreateParams();
     Palette = SpectrumRenderer.CreatePalette();
 }
Example #18
0
    void ConfigureDSP()
    {
        AudioConfiguration audioConfig = AudioSettings.GetConfiguration();

        Debug.LogFormat("BufferSize={0} SampleRate={1}", audioConfig.dspBufferSize, audioConfig.sampleRate);
        _MicrophoneClip = Microphone.Start(Microphone.devices[0], true, 1, audioConfig.sampleRate);
        Debug.LogFormat("Microphone Channels={0} Frequency={1} Samples={2} Ambisonic={3}", _MicrophoneClip.channels, _MicrophoneClip.frequency, _MicrophoneClip.samples, _MicrophoneClip.ambisonic);
        _MicrophoneBuffer    = new NativeArray <float>(_MicrophoneClip.samples, Allocator.Persistent, NativeArrayOptions.UninitializedMemory);
        _MicrophoneDataArray = new float[_MicrophoneClip.samples];

        _Graph  = DSPGraph.Create(SoundFormat.Stereo, 2, audioConfig.dspBufferSize, audioConfig.sampleRate);
        _Driver = new MyAudioDriver {
            Graph = _Graph
        };
        _OutputHandle = _Driver.AttachToDefaultOutput();

        // create graph structure
        using (var block = _Graph.CreateCommandBlock())
        {
            //
            // create nodes
            //
            _Microphone = block.CreateDSPNode <MicrophoneNode.Parameters, MicrophoneNode.Providers, MicrophoneNode>();
            block.AddOutletPort(_Microphone, 1, SoundFormat.Mono);

            _Scope = block.CreateDSPNode <ScopeNode.Parameters, ScopeNode.Providers, ScopeNode>();
            block.AddInletPort(_Scope, 1, SoundFormat.Mono);

            _Spectrum = block.CreateDSPNode <SpectrumNode.Parameters, SpectrumNode.Providers, SpectrumNode>();
            block.AddInletPort(_Spectrum, 1, SoundFormat.Mono);

            _MonoToStereo = block.CreateDSPNode <MonoToStereoNode.Parameters, MonoToStereoNode.Providers, MonoToStereoNode>();
            block.AddInletPort(_MonoToStereo, 1, SoundFormat.Mono); // left
            block.AddInletPort(_MonoToStereo, 1, SoundFormat.Mono); // right
            block.AddOutletPort(_MonoToStereo, 2, SoundFormat.Stereo);

            //
            // connect nodes
            //
            block.Connect(_Microphone, 0, _MonoToStereo, 0);
            block.Connect(_Microphone, 0, _MonoToStereo, 1);

            block.Connect(_MonoToStereo, 0, _Graph.RootDSP, 0);

            block.Connect(_Microphone, 0, _Scope, 0);
            block.Connect(_Microphone, 0, _Spectrum, 0);

            //
            // set parameters
            //
            block.SetFloat <ScopeNode.Parameters, ScopeNode.Providers, ScopeNode>(_Scope, ScopeNode.Parameters.Time, 1f);
            block.SetFloat <ScopeNode.Parameters, ScopeNode.Providers, ScopeNode>(_Scope, ScopeNode.Parameters.TriggerTreshold, 0f);

            block.SetFloat <SpectrumNode.Parameters, SpectrumNode.Providers, SpectrumNode>(_Spectrum, SpectrumNode.Parameters.Window, (float)SpectrumNode.WindowType.Hamming);
        }

        _ScopeRenderer        = SpawnScopeRenderer(_Scope);
        _ScopeRenderer.Height = 5.0f;
        _ScopeRenderer.Offset = 0.0f;

        _SpectrumRenderer = SpawnSpectrumRenderer(_Spectrum);

        StartCoroutine(InitMicCoroutine());
    }
Example #19
0
 public Atm320Renderer()
 {
     Params  = CreateParams();
     Palette = SpectrumRenderer.CreatePalette();
 }
Example #20
0
 public EvoA16Renderer()
 {
     Params  = SpectrumRenderer.CreateParams();
     Palette = SpectrumRenderer.CreatePalette();
 }
Example #21
0
 public EvoTxtRenderer()
 {
     InitStaticTables();
     Params  = AtmTxtRenderer.CreateParams();
     Palette = SpectrumRenderer.CreatePalette();
 }