示例#1
0
    void Start()
    {
        // find scripts
        sampleInfo_JSONParsed       = GameObject.Find("loadJSON_fromMax").GetComponent <LoadJSON_FromMax>().sampleInfo_JSONParsed;
        globalEvolution_script      = GameObject.Find("globalEvolution").GetComponent <GlobalEvolution>();
        oscOutScript                = GameObject.Find("osc").GetComponent <OscOut>();
        cameraExplorerParent_script = GameObject.Find("camera_explorer_parent").GetComponent <CameraExplorerParent_Movement>();
        voidsAllInfo_script         = GameObject.Find("voidsAllInfo").GetComponent <VoidsAllInfo>();

        // init new() shit
        mixer = new Mixer();
        void_static_onOffCn                = new OnOff_Cn();
        void_static_onOffTracker           = new OnOffTracker();
        void_upsideDownReveal_onOffCn      = new OnOff_Cn();
        void_upsideDownReveal_onOffTracker = new OnOffTrackerWeighted();

        // evolution and mixer
        globalEvolutionState = GlobalEvolution.GlobalEvolutionState.begin;
        EvolutionParams();
        MixerValues_Init();

        // get the methods goin'
        New_Qbit_Qtype1_Transposition();
        New_Qbit_Brownian_State();

        // init Prevs

        // json data
        void_upsideDownReveal_prerecorded_brownianBufferDur = sampleInfo_JSONParsed["upsideDownReveal/1/duration"];

        // start over for Methods()
        start = false;
    }
    void Update()
    {
        if (firstFrame == true)
        {
            GameObject[] lightDiscGOs = GameObject.FindGameObjectsWithTag("disc");
            foreach (GameObject lightDiscGO in lightDiscGOs)
            {
                lightDiscScripts.Add(lightDiscGO.GetComponent <LightDiscMovement>());
            }

            firstFrame = false;
        }

        globalEvolutionState = globalEvolution_script.globalEvolutionState;
        if (globalEvolutionState == GlobalEvolution.GlobalEvolutionState.lowerAndRougher)
        {
            lightDiscs_numBusyFlare = 0;
            foreach (LightDiscMovement lightDiscMovement in lightDiscScripts)
            {
                if (lightDiscMovement.busyFlare == true)
                {
                    lightDiscs_numBusyFlare++;
                }
            }
            // Debug.Log("numbusy " + lightDiscs_numBusyFlare);
        }
    }
示例#3
0
    void Update()
    {
        globalEvolutionState = globalEvolution_script.globalEvolutionState;

        EvolutionParams();

        lerp_deltaTime = Time.time - lerp_startTime;

        if (stayPut == true)
        {
            lerp_phase = lerp_deltaTime / stayPut_duration;
            if (lerp_phase > 1f)
            {
                New_Change();
            }
        }
        else
        {
            lerp_phase = lerp_deltaTime / change_duration;
            if (lerp_phase > 1)
            {
                New_StayPut();
            }
            else
            {
                exposure = Mathf.Lerp(change_exposureInitial, change_exposureTarget, lerp_phase);
                skybox.SetFloat("_Exposure", exposure);
                aud_ampLocal = Scale(exposure, 0f, 8f, 0f, 1f);
            }
        }

        ReportOscUpdate();
    }
示例#4
0
    void Update()
    {
        voidsAllInfo         = voidsAllInfo_script.voidsAllInfo; //<-- for whether to sned upsideDownReveal or not
        globalEvolutionState = globalEvolution_script.globalEvolutionState;
        EvolutionParams();

        // rolly transposition
        if (Time.time - qbit_qtype1_transposition_timeStart >= qbit_qtype1_transposition_durTilNext)
        {
            qbit_qtype1_getNewTranspositionRange = true;
            New_Qbit_Qtype1_Transposition();
        }
        else
        {
            qbit_qtype1_getNewTranspositionRange = false;
        }

        // brownian state
        if (Time.time - qbit_brownianState_timeStart >= qbit_brownianState_durTilNext)
        {
            qbit_brownianState_getNew = true;
            New_Qbit_Brownian_State();
        }
        else
        {
            qbit_brownianState_getNew = false;
        }

        // void static on/off
        Void_Static_OnOff();

        // void upsideDownReveal on/off - don't do it in the actual upsideDown
        if (cameraExplorerParent_script.aud_upsideDown == false)
        {
            Void_UpsideDownReveal_OnOff();
        }

        ReportOsc();
    }
示例#5
0
    void Update()
    {
        // ><>  ><>  ><>  ><>
        globalEvolutionState = globalEvolution_script.globalEvolutionState;
        EvolutionParams();
        // ><>  ><>  ><>  ><>
        selectedGO = UnityEditor.Selection.activeGameObject;

        // flares cannot interrupt other flares or spins
        // beginCeiling, geyser collisions cause the lightFlareEvents to begin
        // lowerAndRougher, geyser collisions do nothing - see its BusyFlare_lowerAndRougher for both beginnings and proceedings
        // this delegate structure is left here in case want to make the geysers do something during lowerAndRougher, i.e. see GeyserCollision_lowerAndRougher()
        if (busyFlare == false && busySpin == false)
        {
            if (collisionGeyser == true)
            {
                del_geyserCollision();
            }
        }

        // spins can interrupt flares and other spins
        if (collisionQbit == true)
        {
            StartLightSpinEvent();
        }

        // flares add all freqs at event beginning ( including beatings )
        // spins add diff freqs every frame
        del_flareHandling();

        if (busySpin == true)
        {
            BusySpin();
        }

        ReportOsc();

        globalEvolutionStatePrev = globalEvolutionState;
    }
示例#6
0
    void Start()
    {
        oscOutScript          = GameObject.Find("osc").GetComponent <OscOut>();
        sampleInfo_JSONParsed = GameObject.Find("loadJSON_fromMax").GetComponent <LoadJSON_FromMax>().sampleInfo_JSONParsed;

        floor          = GameObject.Find("floor");
        floorY         = floor.transform.position.y;
        floorMin       = floor.GetComponent <Renderer>().bounds.min;
        floorMax       = floor.GetComponent <Renderer>().bounds.max;
        self_height    = GetComponent <Renderer>().bounds.size.y;
        self_material  = GetComponent <Renderer>().material;
        self_rigidbody = GetComponent <Rigidbody>();

        lifeOnFloorDuration = UnityEngine.Random.Range(4.0f, 11.0f);
        fading_duration     = (1 - fading_beginsAtPercentFloorDuration) * lifeOnFloorDuration;
        voidsAllInfo_script = GameObject.Find("voidsAllInfo").GetComponent <VoidsAllInfo>();

        globalEvolution_script = GameObject.Find("globalEvolution").GetComponent <GlobalEvolution>();
        globalEvolutionState   = GlobalEvolution.GlobalEvolutionState.begin;
        mixer = new Mixer();
        MixerValues_Init();
        EvolutionParams();

        self_voidIgniterType_randomWeighted = UnityEngine.Random.Range(0f, 1f);
        self_colorSaturated = self_material.color;

        // the IgniterType is determined here...the VoidMesh writes my igniterType to VoidAllInfo if I am inside the VoidMesh
        if (self_voidIgniterType_randomWeighted < qbitIgniter_threshold)
        {
            self_voidIgniterType = Void_Cn.HitByVoidIgniterType.staticAndQbit;
            //self_colorSaturated = new Color( .051f, .511f, .953f, 1f );
            qbitIgniterFlicker_startTime   = Time.time;
            qbitIgniterFlicker_startColor  = self_colorSaturated;
            self_colorFadedFlicker         = new Color(self_colorSaturated.r, self_colorSaturated.g, self_colorSaturated.b, 0.8f);
            qbitIgniterFlicker_targetColor = self_colorFadedFlicker;
            this.transform.localScale      = new Vector3(.3f, this.transform.localScale.y, .3f);
        }
        else if (self_voidIgniterType_randomWeighted >= qbitIgniter_threshold)
        {
            self_voidIgniterType = Void_Cn.HitByVoidIgniterType.staticOnly;
        }

        self_colorFadedCompletely = new Color(self_colorSaturated.r, self_colorSaturated.g, self_colorSaturated.b, 0.0f);
        self_material.color       = self_colorSaturated;

        aud_GO_born                = true;
        aud_falling_begin          = true;
        aud_falling_bufferStartDur = UnityEngine.Random.Range(0f, sampleInfo_JSONParsed["igniterFalling/1/duration"]);
        aud_curving_casetopRolly_bufferStartDur = UnityEngine.Random.Range(0f, sampleInfo_JSONParsed["igniterCurving/1/duration"]);
        aud_curving_figure8s_1_bufferStartDur   = UnityEngine.Random.Range(0f, sampleInfo_JSONParsed["igniterCurving/2/duration"]);
        aud_curving_figure8s_2_bufferStartDur   = UnityEngine.Random.Range(0f, sampleInfo_JSONParsed["igniterCurving/3/duration"]);
        aud_falling_globalAmp = UnityEngine.Random.Range(falling_ampGlobalRange[0], falling_ampGlobalRange[1]);
        float curving_globalAmp = UnityEngine.Random.Range(curving_ampGlobalRange[0], curving_ampGlobalRange[1]);

        aud_curving_casetopRolly_globalAmp = curving_globalAmp;
        aud_curving_figure8s_1_globalAmp   = curving_globalAmp;
        aud_curving_figure8s_2_globalAmp   = curving_globalAmp;
        destroyWhileFalling_random         = UnityEngine.Random.Range(0f, 1f);
        // Debug.Log("prob " + destroyWhileFalling_prob + " value " + destroyWhileFalling_random);
        if (destroyWhileFalling_random <= destroyWhileFalling_prob)
        {
            destroyWhileFalling = true;
            destroyWhileFalling_fallingStartTime = Time.time;
            destroyWhileFalling_durTilFade       = UnityEngine.Random.Range(destroyWhileFalling_durTilFadeRange[0], destroyWhileFalling_durTilFadeRange[1]);
            // Debug.Log(destroyWhileFalling_durTilFade);
        }

        New_FallingTranspRange();
        New_Curving_figure8s_1_TranspRange();
        New_Curving_figure8s_2_TranspRange();
        InstantiateOscLists();
        ReportOscStart();
    }
示例#7
0
    void Update()
    {
        if (voidMeshScript.iAmOpen == true)
        {
            globalEvolutionState = globalEvolution_script.globalEvolutionState;

            voidsNumOpen = 0;
            foreach (Void_Cn voidEntry in voidsAllInfo_script.voidsAllInfo)
            {
                voidsNumOpen++;
            }

            shapeModule.position = voidMeshScript.self_voidAllInfo.centroid;
            numParticles         = particleSystem1.particleCount;

            if (firstGeyserEvent == true)
            {
                if (firstGeyserEvent_recordStartTime == true)
                {
                    firstGeyserEvent_recordStartTime   = false;
                    firstGeyserEvent_postponeStartTime = Time.time;
                    firstGeyserEvent_postponeDuration  = Random.Range(2.0f, 4.0f);
                }
                else
                {
                    if (Time.time - firstGeyserEvent_postponeStartTime >= firstGeyserEvent_postponeDuration)
                    {
                        NewGeyserEvent();
                        firstGeyserEvent = false;
                    }
                }
            }
            else
            {
                // the following ways, we only report 1 value for each of geyser on and off
                if (currentGeyser_deltaTime >= durationBetweenGeysers)
                {
                    NewGeyserEvent();
                }

                currentGeyser_deltaTime = Time.time - currentGeyser_startTime;

                if (aGeyserIsActive == true)
                {
                    // stop before ceiling:
                    if (currentGeyser_stopB4Ceiling == true)
                    {
                        CheckFading_stopAfterDur();
                    }
                    // hits ceiling:
                    else
                    {
                        CheckFading_hitsCeiling();
                    }

                    ReportOsc();
                    if (aud_geyserOnEvent == true)
                    {
                        aud_geyserOnEvent = false;
                    }
                    if (aud_geyserOffEvent == true)
                    {
                        aud_geyserOffEvent = false;
                    }
                }
            }

            numParticlesPrev = numParticles;
        }
    }
示例#8
0
    void Update()
    {
        globalEvolutionState = globalEvolution_script.globalEvolutionState;
        EvolutionParams();
        currentState_numHarmonies = scoreDiscs.currentState_numHarmonies;

        if (firstFrame == true)
        {
            allDiscGOs = GameObject.FindGameObjectsWithTag("disc");
            allDiscGOs_movementScripts = new List <LightDiscMovement>();
            foreach (GameObject discGO in allDiscGOs)
            {
                allDiscGOs_movementScripts.Add(discGO.GetComponent <LightDiscMovement>());
            }
            firstFrame = false;
        }

        del_checkIfNewModel();

        if (makeNewModel == true)
        {
            // SCORE
            GetCurrentHarmonyParamsFromScore();
            harmonyLookupIndex = (harmonyLookupIndex + 1) % currentState_numHarmonies;   // augment harmonyLookupIndex counter for next time around

            fundamentals_pool  = new List <float>();
            fundamentals_discs = new List <float>();
            discsModel         = new List <DiscModel_Cn>();

            makeNewModel = false;

            // ****************
            // pool of fundamentals that reflects model, but with no deviation yet added
            this_fundamental  = funds_lowest;
            funds_loopCounter = 1;
            while (this_fundamental <= funds_highestAllowed)
            {
                // Carmine Cella's generalized series for the fundamentals' relationship across discs:
                this_fundamental = funds_lowest * (Mathf.Pow(funds_loopCounter, funds_harmonicity) * Mathf.Pow(funds_deformation, funds_loopCounter) + funds_size);
                fundamentals_pool.Add(this_fundamental);
                funds_loopCounter++;
            }

            // ****************
            // we have, say, 6 at most fundamentals, but 36 discs
            // randomly assign one to each
            for (int i = 0; i < numDiscs; i++)
            {
                fundamentals_discs.Add(fundamentals_pool[Random.Range(0, fundamentals_pool.Count)]);
            }

            // ****************
            // randomly deviate from each fundamental according to what's requested
            for (int i = 0; i < numDiscs; i++)
            {
                this_deviation = Random.Range(0.0f, funds_MIDIdeviation_range);
                float midi = ftom(fundamentals_discs[i]);
                if (funds_MIDIdeviation_mode == FundsDeviationMode.above)
                {
                    midi += this_deviation;
                }
                else if (funds_MIDIdeviation_mode == FundsDeviationMode.below)
                {
                    midi -= this_deviation;
                }
                else if (funds_MIDIdeviation_mode == FundsDeviationMode.bothSides)
                {
                    int randomSign = Random.Range(0, 2) * 2 - 1;   // <---- COOL way to get a random plus or minus
                    this_deviation *= randomSign;
                    midi           += this_deviation;
                }

                fundamentals_discs[i] = mtof(midi);
            }

            // ****************
            // from each disc / fundamental, make partials
            for (int d = 0; d < numDiscs; d++)
            {
                freqs  = new List <float>();
                amps   = new List <float>();
                decays = new List <float>();

                this_fundamental = fundamentals_discs[d];
                this_partial     = 0;

                freqs.Add(this_fundamental);
                amps.Add(mx_fund_amp);
                decays.Add(mx_fund_decay);

                parts_loopCounter            = 2;
                parts_include_thresholdValue = Mathf.RoundToInt(Scale(parts_include_prob, 0.0f, 1.0f, 0, 1999));
                while (this_partial <= parts_highestAllowed)
                {
                    // ****************
                    // whether to even include this partial
                    parts_include_selectedValue = Random.Range(0, 2000);
                    if (parts_include_selectedValue <= parts_include_thresholdValue)
                    {
                        // the generalized series for the partials' relationships within a disc:
                        this_partial = this_fundamental * (Mathf.Pow(parts_loopCounter, parts_harmonicity) * Mathf.Pow(parts_deformation, parts_loopCounter) + parts_size);

                        // ****************
                        // randomly deviate from each partial according to what's requested
                        this_deviation = Random.Range(0.0f, parts_MIDIdeviation_range);
                        float midi = ftom(this_partial);
                        if (parts_MIDIdeviation_mode == PartsDeviationMode.above)
                        {
                            midi += this_deviation;
                        }
                        else if (parts_MIDIdeviation_mode == PartsDeviationMode.below)
                        {
                            midi -= this_deviation;
                        }
                        else if (parts_MIDIdeviation_mode == PartsDeviationMode.bothSides)
                        {
                            int randomSign = Random.Range(0, 2) * 2 - 1;
                            this_deviation *= randomSign;
                            midi           += this_deviation;
                        }

                        freqs.Add(mtof(midi));
                        amps.Add(Random.Range(mx_partials_ampsRange[0], mx_partials_ampsRange[1]));
                        decays.Add(mx_partials_decay);

                        parts_loopCounter++;
                    }
                }

                // discsModel is a list of the class DiscModel with as many entries as there are lightdiscs on the ceiling
                // so discsModel is a class containing, e.g. 36, soundsrandomly baked according to the desired Generalized Series
                // in addition, each lightdisc GO randomly selects which of these entries to play when they are stuck by a geyser
                discsModel.Add(new DiscModel_Cn {
                    freqs = freqs, amps = amps, decays = decays, modelTransposition = _modelTransposition, ampGlobal = _ampGlobal
                });
            }
        }

        discsBusyPrev            = discsBusy;
        globalEvolutionStatePrev = globalEvolutionState;
    }
示例#9
0
    public DiscModelParams_Cn CurrentHarmonyParams(GlobalEvolution.GlobalEvolutionState globalEvolutionState, int harmonyLookupIndex)
    {
        if (globalEvolutionState == GlobalEvolution.GlobalEvolutionState.beginCeiling || globalEvolutionState == GlobalEvolution.GlobalEvolutionState.begin || globalEvolutionState == GlobalEvolution.GlobalEvolutionState.beginSpin)
        {
            // to add a case, add it, and update the total # of cases here; that's it
            // the MakeDiscsModel script steps through this and loops based on the number entered here
            currentState_numHarmonies = 8;
            // because C# is stateful, just enter what changes for each index - else the previous values remain
            switch (harmonyLookupIndex)
            {
            case 0:
                funds_harmonicity         = 1.3f;
                funds_deformation         = 1.0f;
                funds_size                = 0.0f;
                funds_lowest              = 400.0f;
                funds_highestAllowed      = 3000.0f;
                funds_MIDIdeviation_range = 2.1f;
                parts_harmonicity         = 1.0f;
                parts_deformation         = 1.0f;
                parts_size                = 0.0f;
                parts_highestAllowed      = 9000.0f;
                parts_MIDIdeviation_range = .4f;
                parts_include_prob        = .6f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .4f);
                break;

            case 1:
                funds_harmonicity         = 1.05f;
                funds_MIDIdeviation_range = 0.0f;
                funds_lowest              = 110;
                funds_highestAllowed      = 1000.0f;
                parts_highestAllowed      = 5000.0f;
                parts_MIDIdeviation_range = .2f;
                parts_include_prob        = .8f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .4f);
                break;

            case 2:
                funds_harmonicity    = 1.07f;
                funds_lowest         = 200f;
                funds_highestAllowed = 1000.0f;
                parts_highestAllowed = 2000.0f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .4f);
                break;

            case 3:
                funds_lowest         = 421;
                funds_highestAllowed = 3000.0f;
                parts_highestAllowed = 7000.0f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .1f);
                funds_harmonicity = 1.1f;
                break;

            case 4:
                funds_lowest         = 50;
                funds_highestAllowed = 1000.0f;
                parts_highestAllowed = 3000.0f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .5f);
                funds_harmonicity = .9f;
                break;

            case 5:
                funds_lowest         = 100;
                funds_highestAllowed = 1000.0f;
                parts_highestAllowed = 3000.0f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .3f);
                funds_harmonicity = .5f;
                break;

            case 6:
                funds_harmonicity         = .3f;
                funds_MIDIdeviation_range = 0f;
                funds_lowest         = 40;
                funds_highestAllowed = 3000.0f;
                parts_highestAllowed = 8000.0f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .4f);
                break;

            case 7:
                funds_harmonicity         = 1.05f;
                funds_MIDIdeviation_range = 0.0f;
                funds_lowest              = 110;
                funds_highestAllowed      = 1000.0f;
                parts_highestAllowed      = 5000.0f;
                parts_MIDIdeviation_range = .2f;
                parts_include_prob        = .8f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .4f);
                break;
            }
        }
        else if (globalEvolutionState == GlobalEvolution.GlobalEvolutionState.lowerAndRougher)
        {
            // to add a case, add it, and update the total # of cases here; that's it:
            currentState_numHarmonies = 18;
            switch (harmonyLookupIndex)
            {
            case 0:
                funds_harmonicity         = 1.01f;
                funds_deformation         = 1.0f;
                funds_size                = 0.0f;
                funds_lowest              = 800.0f;
                funds_highestAllowed      = 3000.0f;
                funds_MIDIdeviation_range = .05f;
                parts_harmonicity         = 1.0f;
                parts_deformation         = 1.0f;
                parts_size                = 0.0f;
                parts_highestAllowed      = 9000.0f;
                parts_MIDIdeviation_range = .1f;
                parts_include_prob        = .6f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .4f);
                modelTransposition = DiscModelParams_Cn.ModelTransposition.noneOrTwoOctavesLower;
                ampGlobal          = .6f;
                break;

            case 1:
                funds_harmonicity         = .99f;
                funds_lowest              = 400.0f;
                funds_highestAllowed      = 3000.0f;
                funds_MIDIdeviation_range = .05f;
                parts_harmonicity         = 1.0f;
                parts_highestAllowed      = 9000.0f;
                parts_MIDIdeviation_range = .1f;
                parts_include_prob        = .6f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .3f);
                modelTransposition = DiscModelParams_Cn.ModelTransposition.noneOrTwoOctavesLower;
                ampGlobal          = .6f;
                break;

            case 2:
                funds_harmonicity         = 1.02f;
                funds_lowest              = 700.0f;
                funds_highestAllowed      = 3000.0f;
                funds_MIDIdeviation_range = .05f;
                parts_harmonicity         = 1.0f;
                parts_highestAllowed      = 6000.0f;
                parts_MIDIdeviation_range = .1f;
                parts_include_prob        = .6f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .4f);
                modelTransposition = DiscModelParams_Cn.ModelTransposition.oneOctaveLower;
                ampGlobal          = .6f;
                break;

            case 3:
                funds_harmonicity         = .98f;
                funds_lowest              = 350.0f;
                funds_highestAllowed      = 3000.0f;
                funds_MIDIdeviation_range = .1f;
                parts_harmonicity         = 1.0f;
                parts_highestAllowed      = 6000.0f;
                parts_MIDIdeviation_range = .2f;
                parts_include_prob        = .6f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .5f);
                modelTransposition = DiscModelParams_Cn.ModelTransposition.oneOrTwoOctavesLower;
                ampGlobal          = .6f;
                break;

            case 4:
                funds_harmonicity         = 1.5f;
                funds_lowest              = 650.0f;
                funds_highestAllowed      = 2000.0f;
                funds_MIDIdeviation_range = .1f;
                parts_harmonicity         = 1.1f;
                parts_highestAllowed      = 6000.0f;
                parts_MIDIdeviation_range = .3f;
                parts_include_prob        = .6f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .6f);
                modelTransposition = DiscModelParams_Cn.ModelTransposition.oneOrTwoOctavesLower;
                ampGlobal          = .8f;
                break;

            case 5:
                funds_harmonicity         = .75f;
                funds_lowest              = 300.0f;
                funds_highestAllowed      = 2000.0f;
                funds_MIDIdeviation_range = .1f;
                parts_harmonicity         = 1.4f;
                parts_highestAllowed      = 8000.0f;
                parts_include_prob        = .6f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .5f);
                modelTransposition = DiscModelParams_Cn.ModelTransposition.noneOrOneOctaveLower;
                ampGlobal          = .9f;
                break;

            case 6:
                funds_harmonicity         = 1.03f;
                funds_lowest              = 600.0f;
                funds_highestAllowed      = 1500.0f;
                funds_MIDIdeviation_range = .1f;
                parts_harmonicity         = 1.4f;
                parts_highestAllowed      = 7000.0f;
                parts_include_prob        = .6f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .4f);
                modelTransposition = DiscModelParams_Cn.ModelTransposition.noneOrOneOctaveLower;
                ampGlobal          = 1f;
                break;

            case 7:
                funds_harmonicity         = 1.3f;
                funds_lowest              = 250.0f;
                funds_highestAllowed      = 2000.0f;
                funds_MIDIdeviation_range = 0f;
                parts_harmonicity         = .9f;
                parts_highestAllowed      = 7000.0f;
                parts_include_prob        = .6f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .3f);
                modelTransposition = DiscModelParams_Cn.ModelTransposition.none;
                ampGlobal          = 1f;
                break;

            case 8:
                funds_harmonicity         = .97f;
                funds_lowest              = 500.0f;
                funds_highestAllowed      = 1500.0f;
                funds_MIDIdeviation_range = 0f;
                parts_harmonicity         = 1.3f;
                parts_highestAllowed      = 6000.0f;
                parts_include_prob        = .6f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .5f);
                modelTransposition = DiscModelParams_Cn.ModelTransposition.noneOrOneOctaveLower;
                ampGlobal          = 1f;
                break;

            case 9:
                funds_harmonicity         = 1.04f;
                funds_lowest              = 200.0f;
                funds_highestAllowed      = 1000.0f;
                funds_MIDIdeviation_range = 0f;
                parts_harmonicity         = 1.2f;
                parts_highestAllowed      = 4000.0f;
                parts_include_prob        = .6f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .8f);
                modelTransposition = DiscModelParams_Cn.ModelTransposition.noneOrOneOctaveHigher;
                ampGlobal          = 1.1f;
                break;

            case 10:
                funds_harmonicity         = .97f;
                funds_lowest              = 410.0f;
                funds_highestAllowed      = 1000.0f;
                funds_MIDIdeviation_range = 0f;
                parts_harmonicity         = .9f;
                parts_highestAllowed      = 2500.0f;
                parts_include_prob        = .6f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .8f);
                modelTransposition = DiscModelParams_Cn.ModelTransposition.noneOrOneOctaveHigher;
                ampGlobal          = .6f;
                break;

            case 11:
                funds_harmonicity         = .55f;
                funds_lowest              = 410.0f;
                funds_highestAllowed      = 1000.0f;
                funds_MIDIdeviation_range = 0f;
                parts_harmonicity         = .5f;
                parts_highestAllowed      = 2000.0f;
                parts_include_prob        = .6f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .5f);
                modelTransposition = DiscModelParams_Cn.ModelTransposition.noneOrOneOctaveLower;
                ampGlobal          = 2.5f;
                break;

            case 12:
                funds_harmonicity         = .4f;
                funds_lowest              = 150.0f;
                funds_highestAllowed      = 600.0f;
                funds_MIDIdeviation_range = 0f;
                parts_harmonicity         = .7f;
                parts_highestAllowed      = 2000.0f;
                parts_include_prob        = .6f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .9f);
                modelTransposition = DiscModelParams_Cn.ModelTransposition.noneOrOneOctaveHigher;
                ampGlobal          = 3f;
                break;

            case 13:
                funds_harmonicity         = .968f;
                funds_lowest              = 130.0f;
                funds_highestAllowed      = 600.0f;
                funds_MIDIdeviation_range = 0f;
                parts_harmonicity         = .5f;
                parts_highestAllowed      = 1000.0f;
                parts_include_prob        = .6f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .2f);
                modelTransposition = DiscModelParams_Cn.ModelTransposition.none;
                ampGlobal          = 5.5f;
                break;

            case 14:
                // too large?
                funds_harmonicity         = .94f;
                funds_lowest              = 110.0f;
                funds_highestAllowed      = 600.0f;
                funds_MIDIdeviation_range = 0f;
                parts_harmonicity         = .5f;
                parts_highestAllowed      = 1000.0f;
                parts_include_prob        = .6f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .2f);
                modelTransposition = DiscModelParams_Cn.ModelTransposition.none;
                ampGlobal          = 5.5f;
                break;

            case 15:
                funds_harmonicity         = .91f;
                funds_lowest              = 90.0f;
                funds_highestAllowed      = 400.0f;
                funds_MIDIdeviation_range = 0f;
                parts_harmonicity         = .5f;
                parts_highestAllowed      = 1000.0f;
                parts_include_prob        = .6f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .1f);
                modelTransposition = DiscModelParams_Cn.ModelTransposition.none;
                ampGlobal          = 10.5f;
                break;

            case 16:
                funds_harmonicity         = .45f;
                funds_lowest              = 90.0f;
                funds_highestAllowed      = 300.0f;
                funds_MIDIdeviation_range = 0f;
                parts_harmonicity         = .5f;
                parts_highestAllowed      = 1000.0f;
                parts_include_prob        = .6f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .5f);
                modelTransposition = DiscModelParams_Cn.ModelTransposition.none;
                ampGlobal          = 9.5f;
                break;

            case 17:
                funds_harmonicity         = .25f;
                funds_lowest              = 87.0f;
                funds_highestAllowed      = 300.0f;
                funds_MIDIdeviation_range = 0f;
                parts_harmonicity         = .5f;
                parts_highestAllowed      = 1000.0f;
                parts_include_prob        = .6f;
                lightFlareEvent_shimmer_percentOfCriticalBandRange = new Vector2(0.0f, .95f);
                modelTransposition = DiscModelParams_Cn.ModelTransposition.none;
                ampGlobal          = 11.5f;
                break;
            }
        }

        // above we define all the local vars and then assign it to our DiscModelParams class ( which have the same names )
        // the DiscModelParams class is the container to return all this shit to to the MakeDiscsModel script
        discModelParams = new DiscModelParams_Cn
        {
            funds_harmonicity         = funds_harmonicity,
            funds_deformation         = funds_deformation,
            funds_size                = funds_size,
            funds_lowest              = funds_lowest,
            funds_highestAllowed      = funds_highestAllowed,
            funds_MIDIdeviation_range = funds_MIDIdeviation_range,
            parts_harmonicity         = parts_harmonicity,
            parts_deformation         = parts_deformation,
            parts_size                = parts_size,
            parts_highestAllowed      = parts_highestAllowed,
            parts_MIDIdeviation_range = parts_MIDIdeviation_range,
            parts_include_prob        = parts_include_prob,
            lightFlareEvent_shimmer_percentOfCriticalBandRange = lightFlareEvent_shimmer_percentOfCriticalBandRange,
            modelTransposition = modelTransposition,
            ampGlobal          = ampGlobal
        };
        return(discModelParams);
    }