/// <summary> /// Reads the current block and converts the block type to the specific model type found in the model tag. /// </summary> /// <param name="reader"></param> /// <param name="objectType"></param> /// <param name="existingValue"></param> /// <param name="serializer"></param> /// <returns></returns> public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { JObject jsonObject = JObject.Load(reader); Block modelBlock; if (objectType == typeof(Block)) { modelBlock = default(Block); string modelType = (string)jsonObject["@model"] ?? string.Empty; switch (modelType) { #region Amp case ConstAmp.MODEL_ARCHETYPE_CLEAN: modelBlock = new ArchetypeClean(); break; case ConstAmp.MODEL_ARCHETYPE_LEAD: modelBlock = new ArchetypeLead(); break; case ConstAmp.MODEL_ANGL_METEOR: modelBlock = new ANGLMeteor(); break; case ConstAmp.MODEL_GERMAN_MAHADEVA: modelBlock = new GermanMahadeva(); break; case ConstAmp.MODEL_JAZZ_RIVET_120: modelBlock = new JazzRivet120(); break; case ConstAmp.MODEL_US_SMALL_TWEED: modelBlock = new USSmallTweed(); break; case ConstAmp.MODEL_GERMAN_UBERSONIC: modelBlock = new GermanUbersonic(); break; case ConstAmp.MODEL_MATCHSTICK_CH1: modelBlock = new MatchstickCh1(); break; case ConstAmp.MODEL_MATCHSTICK_CH2: modelBlock = new MatchstickCh2(); break; case ConstAmp.MODEL_MATCHSTICK_JUMP: modelBlock = new MatchstickJump(); break; case ConstAmp.MODEL_ESSEX_A15: modelBlock = new EssexA15(); break; case ConstAmp.MODEL_ESSEX_A30: modelBlock = new EssexA30(); break; case ConstAmp.MODEL_WHO_WATT_100: modelBlock = new WhoWatt100(); break; case ConstAmp.MODEL_SOUP_PRO: modelBlock = new SoupPro(); break; case ConstAmp.MODEL_STONE_AGE_185: modelBlock = new StoneAge185(); break; case ConstAmp.MODEL_VOLTAGE_QUEEN: modelBlock = new VoltageQueen(); break; case ConstAmp.DISP_TWEED_BLUES_NRM: modelBlock = new TweedBluesNrm(); break; case ConstAmp.MODEL_TWEED_BLUES_BRT: modelBlock = new TweedBluesBrt(); break; case ConstAmp.MODEL_US_DELUXE_NRM: modelBlock = new USDeluxeNrm(); break; case ConstAmp.MODEL_US_DELUXE_VIB: modelBlock = new USDeluxeVib(); break; case ConstAmp.MODEL_US_DOUBLE_NRM: modelBlock = new USDoubleNrm(); break; case ConstAmp.MODEL_US_DOUBLE_VIB: modelBlock = new USDoubleVib(); break; case ConstAmp.MODEL_MAIL_ORDER_TWIN: modelBlock = new MailOrderTwin(); break; case ConstAmp.MODEL_DIVIDED_DUO: modelBlock = new DividedDuo(); break; case ConstAmp.MODEL_INTERSTATE_ZED: modelBlock = new InterstateZed(); break; case ConstAmp.MODEL_DERAILED_INGRID: modelBlock = new DerailedIngrid(); break; case ConstAmp.MODEL_MANDARIN_80: modelBlock = new Mandarin80(); break; case ConstAmp.MODEL_CALI_RECTIFIRE: modelBlock = new CaliRectifire(); break; case ConstAmp.DISP_CALI_IV_LEAD: modelBlock = new CaliIVLead(); break; case ConstAmp.MODEL_CALI_IV_R1: modelBlock = new CaliIVR1(); break; case ConstAmp.MODEL_CALI_IV_R2: modelBlock = new CaliIVR2(); break; case ConstAmp.MODEL_CALI_TEXAS_CH1: modelBlock = new CaliTexasCh1(); break; case ConstAmp.MODEL_CALI_TEXAS_CH2: modelBlock = new CaliTexasCh2(); break; case ConstAmp.MODEL_BRIT_PLEXI_BRT: modelBlock = new BritPlexiBrt(); break; case ConstAmp.MODEL_BRIT_PLEXI_NRM: modelBlock = new BritPlexiNrm(); break; case ConstAmp.MODEL_PLACATER_DIRTY: modelBlock = new PlacaterDirty(); break; case ConstAmp.MODEL_PLACATER_CLEAN: modelBlock = new PlacaterClean(); break; case ConstAmp.MODEL_BRIT_2204: modelBlock = new Brit2204(); break; case ConstAmp.MODEL_BRIT_J45_NRM: modelBlock = new BritJ45Nrm(); break; case ConstAmp.MODEL_BRIT_J45_BRT: modelBlock = new BritJ45Brt(); break; case ConstAmp.MODEL_BRIT_PLEXI_JUMP: modelBlock = new BritPlexiJump(); break; case ConstAmp.MODEL_BRIT_TREM_NRM: modelBlock = new BritTremNrm(); break; case ConstAmp.MODEL_BRIT_TREM_BRT: modelBlock = new BritTremBrt(); break; case ConstAmp.MODEL_BRIT_TREM_JUMP: modelBlock = new BritTremJump(); break; case ConstAmp.MODEL_BRIT_P75_NRM: modelBlock = new BritP75Nrm(); break; case ConstAmp.MODEL_BRIT_P75_BRT: modelBlock = new BritPlexiBrt(); break; case ConstAmp.MODEL_SOLO_LEAD_CLEAN: modelBlock = new SoloLeadClean(); break; case ConstAmp.MODEL_SOLO_LEAD_CRUNCH: modelBlock = new SoloLeadCrunch(); break; case ConstAmp.MODEL_SOLO_LEAD_OD: modelBlock = new SoloLeadOD(); break; case ConstAmp.MODEL_A30_FAWN_NRM: modelBlock = new A30FawnNrm(); break; case ConstAmp.MODEL_A30_FAWN_BRT: modelBlock = new A30FawnBrt(); break; case ConstAmp.MODEL_PV_PANAMA: modelBlock = new PVPanama(); break; case ConstAmp.MODEL_CARTOGRAPHER: modelBlock = new Cartographer(); break; case ConstAmp.MODEL_AGUA_51: modelBlock = new Agua51(); break; case ConstAmp.MODEL_SV_BEAST_BRT: modelBlock = new SVBeastBrt(); break; case ConstAmp.DISP_GCOUGAR_800: modelBlock = new GCougar800(); break; case ConstAmp.DISP_DEL_SOL_300: modelBlock = new DelSol300(); break; case ConstAmp.MODEL_LINE6_BADONK: modelBlock = new Line6Badonk(); break; case ConstAmp.MODEL_LINE6_LITIGATOR: modelBlock = new Line6Litigator(); break; case ConstAmp.MODEL_LINE6_FATALITY: modelBlock = new Line6Fatality(); break; case ConstAmp.MODEL_LINE6_ELEKTRIK: modelBlock = new Line6Elektrik(); break; case ConstAmp.MODEL_LINE6_DOOM: modelBlock = new Line6Doom(); break; case ConstAmp.MODEL_LINE6_2204_MOD: modelBlock = new Line62204Mod(); break; case ConstAmp.MODEL_LINE6_EPIC: modelBlock = new Line6Epic(); break; case ConstAmp.MODEL_REVV_GEN_RED: modelBlock = new RevvGenRed(); break; case ConstAmp.MODEL_FULLERTON_NRM: modelBlock = new FullertonNrm(); break; case ConstAmp.MODEL_FULLERTON_BRT: modelBlock = new FullertonBrt(); break; case ConstAmp.MODEL_FULLERTON_JUMP: modelBlock = new FullertonJump(); break; case ConstAmp.MODEL_GRAMMATICO_NRM: modelBlock = new GrammaticoNrm(); break; case ConstAmp.MODEL_GRAMMATICO_BRT: modelBlock = new GrammaticoBrt(); break; case ConstAmp.MODEL_GRAMMATICO_JUMP: modelBlock = new GrammaticoJump(); break; #endregion Amp #region Cab case ConstCab.MODEL_4X12_GREENBACK_20: modelBlock = new Cab4x12Greenback20(); break; case ConstCab.MODEL_4X12_GREENBACK_25: modelBlock = new Cab4x12Greenback25(); break; case ConstCab.MODEL_1X12_LEAD_80: modelBlock = new Cab1x12Lead80(); break; case ConstCab.MODEL_1X12_MATCH_H30: modelBlock = new Cab1x12MatchH30(); break; case ConstCab.MODEL_1X12_MATCH_G25: modelBlock = new Cab1x12MatchG25(); break; case ConstCab.MODEL_1X12_BLUE_BELL: modelBlock = new Cab1x12BlueBell(); break; case ConstCab.MODEL_4X12_WHO_WATT_100: modelBlock = new Cab4x12WhoWatt100(); break; case ConstCab.MODEL_1X6X9_SOUP_PRO_ELLIPSE: modelBlock = new Cab1x6x9SoupProEllipse(); break; case ConstCab.MODEL_1X12_FIELD_COIL: modelBlock = new Cab1x12FieldCoil(); break; case ConstCab.MODEL_1X12_US_DELUXE: modelBlock = new Cab1x12USDeluxe(); break; case ConstCab.MODEL_4X10_TWEED_P10R: modelBlock = new Cab4x10TweedP10R(); break; case ConstCab.MODEL_2X12_DOUBLE_C12N: modelBlock = new Cab2x12DoubleC12N(); break; case ConstCab.MODEL_2X12_MAIL_C12Q: modelBlock = new Cab2x12MailC12Q(); break; case ConstCab.MODEL_1X12_CELEST_12H: modelBlock = new Cab1x12Celest12H(); break; case ConstCab.MODEL_2X12_INTERSTATE: modelBlock = new Cab2x12Interstate(); break; case ConstCab.MODEL_4X12_CALI_V30: modelBlock = new Cab4X12CaliV30(); break; case ConstCab.MODEL_4X12_SOLO_LEAD_EM: modelBlock = new Cab4x12SoloLeadEM(); break; case ConstCab.MODEL_2X12_BLUE_BELL: modelBlock = new Cab2x12BlueBell(); break; case ConstCab.MODEL_2X12_SILVER_BELL: modelBlock = new Cab2x12SilverBell(); break; case ConstCab.MODEL_4X12_UBER_V30: modelBlock = new Cab4x12UberV30(); break; case ConstCab.MODEL_4X12_BLACKBACK_30: modelBlock = new Cab4x12Blackback30(); break; case ConstCab.MODEL_4X12_1960_T75: modelBlock = new Cab4x121960T75(); break; case ConstCab.MODEL_8X10_SV_BEAST: modelBlock = new Cab8x10SVBeast(); break; case ConstCab.MODEL_6X10_CALI_POWER: modelBlock = new Cab6x10CaliPower(); break; #endregion Cab #region Delay case ConstDelay.MODEL_ADRIATIC_DELAY: modelBlock = new AdriaticDelay(); break; case ConstDelay.MODEL_ADRIATIC_SWELL: modelBlock = new AdriaticSwell(); break; case ConstDelay.MODEL_DUAL_DELAY: modelBlock = new DualDelay(); break; case ConstDelay.MODEL_VINTAGE_DIGITAL_V2: modelBlock = new VintageDigitalV2(); break; case ConstDelay.MODEL_SIMPLE_DELAY: modelBlock = new SimpleDelay(); break; case ConstDelay.MODEL_TRANSISTOR_TAPE: modelBlock = new TransistorTape(); break; case ConstDelay.MODEL_DELAY_COSMOS_ECHO: modelBlock = new CosmosEcho(); break; case ConstDelay.MODEL_DELAY_PITCH: modelBlock = new DelayPitch(); break; case ConstDelay.MODEL_HARMONY_DELAY: modelBlock = new HarmonyDelay(); break; case ConstDelay.MODEL_ELEPHANT_MAN: modelBlock = new ElephantMan(); break; case ConstDelay.MODEL_BUCKET_BRIGADE: modelBlock = new BucketBrigade(); break; case ConstDelay.MODEL_PING_PONG: modelBlock = new PingPong(); break; case ConstDelay.MODEL_SWELL_VINTAGE_DIGITAL: modelBlock = new SwellVintageDigital(); break; case ConstDelay.MODEL_DUCKED_DELAY: modelBlock = new DuckedDelay(); break; case ConstDelay.MODEL_MOD_CHORUS_ECHO: modelBlock = new ModChorusEcho(); break; case ConstDelay.MODEL_SWEEP_ECHO: modelBlock = new SweepEcho(); break; case ConstDelay.MODEL_REVERSE_DELAY: modelBlock = new ReverseDelay(); break; case ConstDelay.MODEL_DELAY_MULTI_PASS: modelBlock = new MultiPass(); break; case ConstDelay.MODEL_LOW_RES: modelBlock = new LowRes(); break; case ConstDelay.MODEL_MULTITAP_4: modelBlock = new Multitap4(); break; case ConstDelay.MODEL_MULTITAP_6: modelBlock = new Multitap6(); break; case ConstDelay.MODEL_DL4_PING_PONG: modelBlock = new DL4PingPong(); break; case ConstDelay.MODEL_DYNAMIC_DELAY_STEREO: modelBlock = new DynamicDelayStereo(); break; case ConstDelay.MODEL_STEREO_DELAY: modelBlock = new StereoDelay(); break; case ConstDelay.MODEL_DL4_DIGITAL_DELAY: modelBlock = new DL4DigitalDelay(); break; case ConstDelay.MODEL_DELAY_WITH_MOD: modelBlock = new DelayWithMod(); break; case ConstDelay.MODEL_DL4_REVERSE_DELAY: modelBlock = new DL4ReverseDelay(); break; case ConstDelay.MODEL_TUBE_ECHO_STEREO: modelBlock = new TubeEchoStereo(); break; case ConstDelay.MODEL_TAPE_ECHO_STEREO: modelBlock = new TapeEchoStereo(); break; case ConstDelay.MODEL_SWEEP_ECHO_STEREO: modelBlock = new SweepEchoStereo(); break; case ConstDelay.MODEL_ECHO_PLATTER: modelBlock = new EchoPlatter(); break; case ConstDelay.MODEL_ANALOG_DELAY: modelBlock = new AnalogDelay(); break; case ConstDelay.MODEL_ANALOG_DELAY_MOD: modelBlock = new AnalogDelayMod(); break; case ConstDelay.MODEL_AUTO_VOL_DELAY: modelBlock = new AutoVolDelay(); break; case ConstDelay.MODEL_MULTIHEAD_DELAY: modelBlock = new MultiheadDelay(); break; #endregion Delay #region Distortion case ConstDistortion.MODEL_ARBITRATOR_FUZZ: modelBlock = new ArbitratorFuzz(); break; case ConstDistortion.MODEL_BIT_CRUSHER: modelBlock = new BitCrusher(); break; case ConstDistortion.MODEL_SCREAM_808: modelBlock = new Scream808(); break; case ConstDistortion.MODEL_COMPULSIVE_DRIVE: modelBlock = new CompulsiveDrive(); break; case ConstDistortion.MODEL_CLAWTHORN_DRIVE: modelBlock = new ClawthornDrive(); break; case ConstDistortion.MODEL_DEEZ_ONE_MOD: modelBlock = new DeezOneMod(); break; case ConstDistortion.MODEL_DEEZ_ONE_VINTAGE: modelBlock = new DeezOneVintage(); break; case ConstDistortion.MODEL_DERANGEDMASTER: modelBlock = new DerangedMaster(); break; case ConstDistortion.MODEL_KINKY_BOOST: modelBlock = new KinkyBoost(); break; case ConstDistortion.MODEL_KWB: modelBlock = new KWB(); break; case ConstDistortion.MODEL_MEGAPHONE: modelBlock = new Megaphone(); break; case ConstDistortion.MODEL_FACIAL_FUZZ: modelBlock = new FacialFuzz(); break; case ConstDistortion.MODEL_MINOTAUR: modelBlock = new Minotaur(); break; case ConstDistortion.MODEL_HEDGEHOG_D9: modelBlock = new HedgehogD9(); break; case ConstDistortion.MODEL_TEEMAH: modelBlock = new Teemah(); break; case ConstDistortion.MODEL_HEAVY_DISTORTION: modelBlock = new HeavyDistortion(); break; case ConstDistortion.MODEL_INDUSTRIAL_FUZZ: modelBlock = new IndustrialFuzz(); break; case ConstDistortion.MODEL_THRIFTER_FUZZ: modelBlock = new ThrifterFuzz(); break; case ConstDistortion.MODEL_TOP_SECRET_OD: modelBlock = new TopSecretOD(); break; case ConstDistortion.MODEL_TRIANGLE_FUZZ: modelBlock = new TriangleFuzz(); break; case ConstDistortion.MODEL_TYCOCTAVIA_FUZZ: modelBlock = new TycoctaviaFuzz(); break; case ConstDistortion.MODEL_VERMIN_DIST: modelBlock = new VerminDist(); break; case ConstDistortion.MODEL_VALVE_DRIVER: modelBlock = new ValveDriver(); break; case ConstDistortion.MODEL_OBSIDIAN_7000: modelBlock = new Obsidian7000(); break; case ConstDistortion.MODEL_WRINGER_FUZZ: modelBlock = new WringerFuzz(); break; case ConstDistortion.MODEL_TUBE_DRIVE: modelBlock = new TubeDrive(); break; case ConstDistortion.MODEL_SCREAMER: modelBlock = new Screamer(); break; case ConstDistortion.MODEL_OVERDRIVE: modelBlock = new Overdrive(); break; case ConstDistortion.MODEL_CLASSIC_DISTORTION: modelBlock = new ClassicDistortion(); break; case ConstDistortion.MODEL_COLOR_DRIVE: modelBlock = new ColorDrive(); break; case ConstDistortion.MODEL_BUZZ_SAW: modelBlock = new BuzzSaw(); break; case ConstDistortion.MODEL_JUMBO_FUZZ: modelBlock = new JumboFuzz(); break; case ConstDistortion.MODEL_OCTAVE_FUZZ: modelBlock = new OctaveFuzz(); break; case ConstDistortion.MODEL_FUZZ_PI: modelBlock = new FuzzPi(); break; case ConstDistortion.MODEL_JET_FUZZ: modelBlock = new JetFuzz(); break; case ConstDistortion.MODEL_LINE_6_DRIVE: modelBlock = new Line6Drive(); break; case ConstDistortion.MODEL_LINE_6_DISTORTION: modelBlock = new Line6Distortion(); break; case ConstDistortion.MODEL_SUB_OCTAVE_FUZZ: modelBlock = new SubOctaveFuzz(); break; case ConstDistortion.MODEL_HEIR_APPARENT: modelBlock = new HeirApparent(); break; case ConstDistortion.MODEL_TONE_SOVEREIGN: modelBlock = new ToneSovereign(); break; case ConstDistortion.MODEL_DHYANA_DRIVE: modelBlock = new DhyanaDrive(); break; case ConstDistortion.MODEL_ZERO_AMP_BASS_DI: modelBlock = new ZeroAmpBassDI(); break; case ConstDistortion.MODEL_AMPEG_SCRAMBLER_OD: modelBlock = new AmpegScramblerOD(); break; #endregion Distortion #region Dynamics case ConstDynamics.MODEL_LA_STUDIO_COMP: modelBlock = new LASutdioComp(); break; case ConstDynamics.MODEL_NOISE_GATE: modelBlock = new NoiseGate(); break; case ConstDynamics.MODEL_HARD_GATE: modelBlock = new HardGate(); break; case ConstDynamics.MODEL_AUTO_SWELL: modelBlock = new AutoSwell(); break; case ConstDynamics.MODEL_RED_SQUEEZE: modelBlock = new RedSqueeze(); break; case ConstDynamics.MODEL_DELUXE_COMP: modelBlock = new DeluxeComp(); break; case ConstDynamics.MODEL_3_BAND_COMP: modelBlock = new Comp3BandComp(); break; case ConstDynamics.MODEL_KINKY_COMP: modelBlock = new KinkyComp(); break; case ConstDynamics.MODEL_TUBE_COMP: modelBlock = new TubeComp(); break; case ConstDynamics.MODEL_RED_COMP: modelBlock = new RedComp(); break; case ConstDynamics.MODEL_BLUE_COMP: modelBlock = new BlueComp(); break; case ConstDynamics.MODEL_BLUE_COMP_TREB: modelBlock = new BlueCompTreb(); break; case ConstDynamics.MODEL_VETTA_COMP: modelBlock = new VettaComp(); break; case ConstDynamics.MODEL_VETTA_JUICE: modelBlock = new VettaJuice(); break; case ConstDynamics.MODEL_BOOST_COMP: modelBlock = new BoostComp(); break; #endregion Dynamics #region EQ case ConstEQ.MODEL_LOW_CUT_HIGH_CUT: modelBlock = new LowCutHighCut(); break; case ConstEQ.MODEL_LOW_SHELF_HIGH_SHELF: modelBlock = new LowShelfHighShelf(); break; case ConstEQ.MODEL_GRAPHIC_10_BAND: modelBlock = new Graphic10Band(); break; case ConstEQ.MODEL_SIMPLE_3_BAND: modelBlock = new Simple3Band(); break; case ConstEQ.MODEL_PARAMETRIC: modelBlock = new Parametric(); break; case ConstEQ.MODEL_CALI_Q: modelBlock = new CaliQ(); break; case ConstEQ.DISP_SIMPLE_TILT: modelBlock = new SimpleTilt(); break; #endregion EQ #region FX Loop case ConstFxLoop.MODEL_FX_LOOP_MONO_1: modelBlock = new FXLoopLeft(); break; case ConstFxLoop.MODEL_FX_LOOP_MONO_2: modelBlock = new FXLoopRight(); break; case ConstFxLoop.MODEL_FX_LOOP_STEREO: modelBlock = new FXLoopStereo(); break; #endregion FX Loop #region Filter case ConstFilter.DISP_ASHEVILLE_PATTRN: modelBlock = new AshevillePattrn(); break; case ConstFilter.MODEL_AUTO_FILTER: modelBlock = new AutoFilter(); break; case ConstFilter.MODEL_MUTANT_FILTER: modelBlock = new MutantFilter(); break; case ConstFilter.MODEL_MYSTERY_FILTER: modelBlock = new MysteryFilter(); break; case ConstFilter.MODEL_VOICE_BOX: modelBlock = new VoiceBox(); break; case ConstFilter.MODEL_TRON: modelBlock = new Tron(); break; case ConstFilter.MODEL_Q_FILTER: modelBlock = new QFilter(); break; case ConstFilter.MODEL_SEEKER: modelBlock = new Seeker(); break; case ConstFilter.MODEL_OBI_WAH: modelBlock = new ObiWah(); break; case ConstFilter.MODEL_TRON_UP: modelBlock = new TronUp(); break; case ConstFilter.MODEL_TRON_DOWN: modelBlock = new TronDown(); break; case ConstFilter.MODEL_THROBBER: modelBlock = new Throbber(); break; case ConstFilter.MODEL_SLOW_FILTER: modelBlock = new SlowFilter(); break; case ConstFilter.MODEL_SPIN_CYCLE: modelBlock = new SpinCycle(); break; case ConstFilter.MODEL_COMET_TRAILS: modelBlock = new CometTrails(); break; #endregion Filter #region Looper case ConstLooper.MODEL_LOOPER: modelBlock = new Looper(); break; #endregion Looper #region Impulse response case ConstIR.MODEL_IMPULSE_RESPONSE_1024: modelBlock = new ImpulseResponse1024(); break; case ConstIR.MODEL_IMPULSE_RESPONSE_2048: modelBlock = new ImpulseResponse2048(); break; #endregion Impulse Response #region Modulation case ConstModulation.MODEL_60S_BIAS_TRAM: modelBlock = new Mod60sBiasTrem(); break; case ConstModulation.MODEL_70S_CHORUS: modelBlock = new Chorus70sChorus(); break; case ConstModulation.MODEL_AM_RING_MOD: modelBlock = new AMRingMod(); break; case ConstModulation.MODEL_BUBBLE_VIBRATO: modelBlock = new BubbleVibrato(); break; case ConstModulation.MODEL_COURTESAN_FLANGE: modelBlock = new CourtesanFlange(); break; case ConstModulation.MODEL_DELUXE_PHASER: modelBlock = new DeluxePhaser(); break; case ConstModulation.MODEL_DOUBLT_TAKE: modelBlock = new DoubleTake(); break; case ConstModulation.MODEL_DYNAMIX_FLANGER: modelBlock = new DynamixFlanger(); break; case ConstModulation.MODEL_TRINITY_CHORUS: modelBlock = new TrinityChorus(); break; case ConstModulation.MODEL_GRAY_FLANGER: modelBlock = new GrayFlanger(); break; case ConstModulation.MODEL_UBIQUITOUS_VIBE: modelBlock = new UbiquitousVibe(); break; case ConstModulation.MODEL_SCRIPT_MOD_PHASE: modelBlock = new ScriptModPhase(); break; case ConstModulation.DISP_HARMONIC_TREM: modelBlock = new HarmonicTremolo(); break; case ConstModulation.MODEL_OPTICAL_TREM: modelBlock = new OpticalTrem(); break; case ConstModulation.MODEL_PLASTI_CHORUS: modelBlock = new PlastiChorus(); break; case ConstModulation.MODEL_PITCH_RING_MOD: modelBlock = new PitchRingMod(); break; case ConstModulation.MODEL_CHORUS: modelBlock = new Chorus(); break; case ConstModulation.MODEL_ROTARY_122: modelBlock = new Rotary122(); break; case ConstModulation.MODEL_ROTARY_145: modelBlock = new Rotary145(); break; case ConstModulation.MODEL_ROTARY_VIBE: modelBlock = new RotaryVibe(); break; case ConstModulation.MODEL_HARMONIC_FLANGER: modelBlock = new HarmonicFlanger(); break; case ConstModulation.MODEL_BLEAT_CHOP_TREM: modelBlock = new BleatChopTrem(); break; case ConstModulation.MODEL_TREMOLO: modelBlock = new Tremolo(); break; case ConstModulation.MODEL_PATTERN_TREM: modelBlock = new PatternTrem(); break; case ConstModulation.MODEL_PANNER: modelBlock = new Panner(); break; case ConstModulation.MODEL_BIAS_TREMOLO: modelBlock = new BiasTremolo(); break; case ConstModulation.MODEL_OPTO_TREMOLO: modelBlock = new OptoTremolo(); break; case ConstModulation.MODEL_SCRIPT_PHASE: modelBlock = new ScriptPhase(); break; case ConstModulation.MODEL_PANNED_PHASER: modelBlock = new PannedPhaser(); break; case ConstModulation.MODEL_BARBERPOLE_PHASER: modelBlock = new BarberpolePhaser(); break; case ConstModulation.MODEL_DUAL_PHASER: modelBlock = new DualPhaser(); break; case ConstModulation.MODEL_U_VIBE: modelBlock = new UVibe(); break; case ConstModulation.MODEL_PHASER: modelBlock = new Phaser(); break; case ConstModulation.MODEL_PITCH_VIBRATO: modelBlock = new PitchVibrato(); break; case ConstModulation.MODEL_DIMMENSION: modelBlock = new Dimmension(); break; case ConstModulation.MODEL_ANALOG_CHORUS: modelBlock = new AnalogChorus(); break; case ConstModulation.MODEL_TRI_CHORUS: modelBlock = new TriChorus(); break; case ConstModulation.MODEL_ANALOG_FLANGER: modelBlock = new AnalogFlanger(); break; case ConstModulation.MODEL_JET_FLANGER: modelBlock = new JetFlanger(); break; case ConstModulation.MODEL_AC_FLANGER: modelBlock = new ACFlanger(); break; case ConstModulation.MODEL_80A_FLANGER: modelBlock = new ADAFlanger(); break; case ConstModulation.MODEL_FREQUENCY_SHIFTER: modelBlock = new FrequencyShifter(); break; case ConstModulation.MODEL_RING_MODULATOR: modelBlock = new RingModulator(); break; case ConstModulation.MODEL_ROTARY_DRUM: modelBlock = new RotaryDrum(); break; case ConstModulation.MODEL_ROTARY_DRUM_HORN: modelBlock = new RotaryDrumHorn(); break; #endregion Modulation #region Pitch/Synth case ConstPitch.MODEL_PITCH_WHAM: modelBlock = new PitchWham(); break; case ConstPitch.MODEL_DUAL_PITCH: modelBlock = new DualPitch(); break; case ConstPitch.MODEL_SIMPLE_PITCH: modelBlock = new SimplePitch(); break; case ConstPitch.MODEL_TWIN_HARMONY: modelBlock = new TwinHarmony(); break; case ConstPitch.MODEL_3_NOTE_GENERATOR: modelBlock = new Synth3NoteGenerator(); break; case ConstPitch.MODEL_4_OSC_GENERATOR: modelBlock = new Synth4OSCGenerator(); break; case ConstPitch.MODEL_3_OSC_SYNTH: modelBlock = new Synth3OSCSynth(); break; case ConstPitch.MODEL_BASS_OCTAVER: modelBlock = new BassOctaver(); break; case ConstPitch.MODEL_TWO_VOICE_HARMONY: modelBlock = new TwoVoiceHarmony(); break; case ConstPitch.MODEL_OCTI_SYNTH: modelBlock = new OctiSynth(); break; case ConstPitch.MODEL_SYNTH_OMATIC: modelBlock = new SynthOMatic(); break; case ConstPitch.MODEL_ATTACK_SYNTH: modelBlock = new AttackSynth(); break; case ConstPitch.MODEL_SYNTH_STRING: modelBlock = new SynthString(); break; case ConstPitch.MODEL_GROWLER: modelBlock = new Growler(); break; #endregion Pitch/Synth #region Reverb case ConstReverb.MODEL_SPRING: modelBlock = new Spring(); break; case ConstReverb.MODEL_63_SPRING: modelBlock = new Reverb63Spring(); break; case ConstReverb.MODEL_CAVE: modelBlock = new Cave(); break; case ConstReverb.MODEL_CHAMBER: modelBlock = new Chamber(); break; case ConstReverb.MODEL_DUCKING: modelBlock = new Ducking(); break; case ConstReverb.MODEL_ECHO: modelBlock = new Echo(); break; case ConstReverb.MODEL_HALL: modelBlock = new Hall(); break; case ConstReverb.MODEL_GLITZ: modelBlock = new Glitz(); break; case ConstReverb.MODEL_ROOM: modelBlock = new Room(); break; case ConstReverb.MODEL_DOUBLE_TANK: modelBlock = new DoubleTank(); break; case ConstReverb.MODEL_GANYMEDE: modelBlock = new Ganymede(); break; case ConstReverb.MODEL_PARTICLE: modelBlock = new Particle(); break; case ConstReverb.MODEL_PLATE: modelBlock = new Plate(); break; case ConstReverb.MODEL_OCTO: modelBlock = new Octo(); break; case ConstReverb.MODEL_PLATEAUX: modelBlock = new Plateaux(); break; case ConstReverb.MODEL_SEARCHLIGHTS: modelBlock = new Searchlights(); break; case ConstReverb.MODEL_TILE: modelBlock = new Tile(); break; #endregion Reverb #region Send/Return case ConstSendReturn.MODEL_SEND_MONO_1: modelBlock = new SendLeft(); break; case ConstSendReturn.MODEL_SEND_MONO_2: modelBlock = new SendRight(); break; case ConstSendReturn.MODEL_RETURN_MONO_1: modelBlock = new ReturnLeft(); break; case ConstSendReturn.MODEL_RETURN_MONO_2: modelBlock = new ReturnRight(); break; case ConstSendReturn.MODEL_SEND_STEREO_1_2: modelBlock = new SendStereoLR(); break; case ConstSendReturn.MODEL_RETURN_STEREO_1_2: modelBlock = new ReturnStereoLR(); break; #endregion Send/Return #region Volume/Pan case ConstVolPan.MODEL_VOLUME: modelBlock = new Volume(); break; case ConstVolPan.MODEL_GAIN: modelBlock = new Gain(); break; #endregion Volume/Pan #region Wah case ConstWah.MODEL_CHROME: modelBlock = new Chrome(); break; case ConstWah.MODEL_CHROME_CUSTOM: modelBlock = new ChromeCustom(); break; case ConstWah.MODEL_COLORFUL: modelBlock = new Colorful(); break; case ConstWah.MODEL_CONDUCTOR: modelBlock = new Conductor(); break; case ConstWah.MODEL_TEARDROP_310: modelBlock = new Teardrop310(); break; case ConstWah.MODEL_THROATY: modelBlock = new Throaty(); break; case ConstWah.MODEL_WEEPER: modelBlock = new Weeper(); break; case ConstWah.MODEL_FASSEL: modelBlock = new Fassel(); break; case ConstWah.MODEL_UK_WAH_846: modelBlock = new UkWah846(); break; case ConstWah.MODEL_VETTA_WAH: modelBlock = new Vetta(); break; #endregion Wah default: modelBlock = new Block(); break; } serializer.Populate(jsonObject.CreateReader(), modelBlock); return(modelBlock); } else { return(default(Block)); } }
private void LoadSolarSystem() { _sun = new Sun(); var mercury = new Mercury(); var venus = new Venus(); var earth = new Earth(); var moon = new Moon(earth.Position, earth.Velocity); var mars = new Mars(); var jupiter = new Jupiter(); var callisto = new Callisto(jupiter.Position, jupiter.Velocity); var europa = new Europa(jupiter.Position, jupiter.Velocity); var ganymede = new Ganymede(jupiter.Position, jupiter.Velocity); var io = new Io(jupiter.Position, jupiter.Velocity); var saturn = new Saturn(); _massiveBodies = new List <IMassiveBody> { _sun, mercury, venus, earth, moon, mars, jupiter, callisto, europa, ganymede, io, saturn }; ResolveMassiveBodyParents(); _gravitationalBodies = new List <IGravitationalBody> { _sun, mercury, venus, earth, moon, mars, jupiter, callisto, europa, ganymede, io, saturn }; _spaceCraftManager = new SpaceCraftManager(_gravitationalBodies); _structures = new List <StructureBase>(); MissionConfig primaryMission = MissionConfig.Load(ProfilePaths[0]); _originTime = primaryMission.GetLaunchDate(); UpdateLoadingPercentage(20); OrbitHelper.SimulateToTime(_massiveBodies, _originTime, 300, UpdateLoadingPercentage); UpdateLoadingPercentage(80); // Load missions for (int i = 0; i < ProfilePaths.Count; i++) { MissionConfig missionConfig = MissionConfig.Load(ProfilePaths[i]); if (missionConfig.ClockDelay > _clockDelay) { _clockDelay = missionConfig.ClockDelay; } IMassiveBody targetPlanet = LocatePlanet(missionConfig.ParentPlanet); // Get the launch angle relative to the sun for the given time at the origin // and offset each vehicle by a certain amount on the surface double launchAngle = targetPlanet.GetSurfaceAngle(_originTime, _sun) + i * 0.00002; _spaceCraftManager.Add(SpacecraftFactory.BuildSpaceCraft(targetPlanet, launchAngle, missionConfig, ProfilePaths[i])); _structures.AddRange(StructureFactory.Load(targetPlanet, launchAngle, ProfilePaths[i])); } _spaceCraftManager.Initialize(_eventManager, _clockDelay); // Target the spacecraft _targetIndex = _gravitationalBodies.IndexOf(_spaceCraftManager.First); _spaceCraftManager.ResolveGravitionalParents(_massiveBodies); UpdateLoadingPercentage(90); }