@@ -78,15 +78,14 @@ Plateau2::Plateau2(const InstanceInfo& info)
7878
7979 GetParam (kDanger )->InitBool (" DANGER! Allow Unsafe Feedback" , false );
8080
81- MakePreset (" Default" , 100.000000 , false , false , true , 50.000000 , 10.000000 , 10.000000 , 0.500000 , 10.000000 , 0.450000 , 10.000000 , 10.000000 , 0.000000 , 0.500000 , 0.500000 , 1.000000 , false , false , false , true , 0.000000 , false , 76.923000 , 1.000000 , false , 100.000000 , 0.000000 , 100.000000 , 0.000000 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , false , 50.000000 , 10.000000 , 10.000000 , 0.500000 , 10.000000 , 0.450000 , 10.000000 , 10.000000 , 0.000000 , 0.500000 , 0.500000 , 1.000000 , false , false , false , true , 0.000000 , false , 76.923000 , 1.000000 , false , 100.000000 , 0.000000 , 100.000000 , 0.000000 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , false );
82- MakePreset (" Bassment" , 68.452381 , false , false , true , 92.261905 , 10.000000 , 4.866071 , 0.473214 , 3.571429 , 0.377201 , 10.000000 , 6.875000 , 0.272321 , 1.285714 , 0.500000 , 1.000000 , false , false , false , false , 0.000000 , false , 76.923070 , 0.982143 , true , 100.000000 , 0.000000 , 131.250000 , 0.000000 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , true , 47.619048 , 3.616071 , 10.000000 , 0.553572 , 5.892857 , 0.591530 , 7.232143 , 10.000000 , 0.218750 , 3.000000 , 0.299107 , 0.459821 , false , false , false , true , 0.039286 , true , 36.744499 , 0.165179 , false , 100.000000 , 0.000000 , 100.000000 , 0.000000 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , false );
83- MakePreset (" Polish" , 100.000000 , false , false , true , 29.166666 , 10.000000 , 8.169643 , 0.191964 , 6.473214 , 0.300870 , 10.000000 , 7.366071 , 0.272321 , 1.285714 , 0.500000 , 1.000000 , false , false , false , true , 0.000000 , false , 76.923070 , 1.000000 , false , 100.000000 , 0.000000 , 100.000000 , 0.000000 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , false , 50.000000 , 10.000000 , 10.000000 , 0.500000 , 10.000000 , 0.450000 , 10.000000 , 10.000000 , 0.000000 , 0.500000 , 0.500000 , 1.000000 , false , true , false , true , 0.000000 , false , 76.923000 , 1.000000 , false , 100.000000 , 0.000000 , 100.000000 , 0.000000 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , false );
84- MakePreset (" Cave" , 100.000000 , false , false , true , 50.000000 , 10.000000 , 7.991071 , 0.589286 , 10.000000 , 0.386642 , 10.000000 , 5.803571 , 0.000000 , 0.000000 , 0.500000 , 1.000000 , false , false , false , true , 0.000000 , false , 76.923000 , 1.000000 , false , 100.000000 , 0.000000 , 100.000000 , 0.000000 , true , 29.910714 , 0.131696 , 10.000000 , 10.000000 , true , 22.619048 , 10.000000 , 7.767857 , 0.584821 , 10.000000 , 0.466990 , 10.000000 , 7.053571 , 0.245536 , 0.714286 , 0.500000 , 1.000000 , false , false , false , true , 0.000000 , true , 64.423000 , 1.000000 , false , 22.321429 , 0.000000 , 100.000000 , 0.000000 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , false );
85- // MakePreset("Canyon", 0.000000, false, false, true, 100.000000, 10.000000, 8.080357, 0.803571, 10.000000, 0.240609, 10.000000, 10.000000, 0.138393, 0.714286, 0.500000, 0.116071, false, false, false, true, 0.000000, true, 25.583714, 0.000000, false, 100.000000, 0.000000, 200.000000, 0.000000, false, 0.000000, 0.000000, 10.000000, 10.000000, false, 50.000000, 10.000000, 10.000000, 0.500000, 10.000000, 0.334416, 10.000000, 10.000000, 0.000000, 0.500000, 0.500000, 1.000000, false, true, false, true, 0.000000, false, 76.923000, 1.000000, false, 100.000000, 0.000000, 0.000000, 0.000000, false, 0.000000, 0.000000, 10.000000, 10.000000, false);
86- MakePreset (" Canyon" , 0.000000 , false , true , true , 100.000000 , 10.000000 , 8.035714 , 0.803571 , 10.000000 , 0.248644 , 10.000000 , 10.000000 , 0.133929 , 0.642857 , 0.500000 , 0.120535 , false , true , false , true , 0.000000 , true , 60.851571 , 0.000000 , true , 100.000000 , -100.000000 , 100.000000 , -66.666666 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , true , 100.000000 , 10.000000 , 8.035714 , 0.803571 , 10.000000 , 0.248644 , 10.000000 , 10.000000 , 0.133929 , 0.642857 , 0.500000 , 0.120535 , true , true , false , true , 0.000000 , true , 60.851568 , 0.000000 , true , 100.000000 , 100.000000 , 100.000000 , 66.666663 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , false );
87- MakePreset (" ChorusVerb" , 51.190476 , false , false , true , 100.000000 , 10.000000 , 8.080357 , 0.803571 , 0.000000 , 0.284801 , 10.000000 , 10.000000 , 0.138393 , 1.857143 , 0.500000 , 0.116071 , false , false , false , false , 0.000000 , true , 25.583714 , 0.000000 , false , 100.000000 , 0.000000 , 100.000000 , 0.000000 , true , 100.000000 , 0.082589 , 7.366071 , 10.000000 , true , 11.309524 , 10.000000 , 10.000000 , 0.500000 , 10.000000 , 0.495112 , 10.000000 , 10.000000 , 0.000000 , 0.500000 , 0.500000 , 1.000000 , false , false , false , true , 0.000000 , false , 76.923000 , 1.000000 , false , 23.660714 , 0.000000 , 100.000000 , 0.000000 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , false );
88- MakePreset (" Washout" , 100.000000 , false , false , true , 32.142857 , 10.000000 , 10.000000 , 0.379464 , 10.000000 , 0.730733 , 8.169643 , 7.901786 , 0.272321 , 1.285714 , 0.500000 , 1.000000 , false , false , false , true , 0.000000 , true , 72.905213 , 1.000000 , false , 100.000000 , 0.000000 , 100.000000 , 0.000000 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , false , 50.000000 , 10.000000 , 10.000000 , 0.500000 , 10.000000 , 0.450000 , 10.000000 , 10.000000 , 0.000000 , 0.500000 , 0.500000 , 1.000000 , false , false , false , true , 0.000000 , false , 76.923000 , 1.000000 , false , 100.000000 , 0.000000 , 100.000000 , 0.000000 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , false );
89- MakePreset (" Totally Tubular" , 61.904762 , false , false , true , 51.785714 , 10.000000 , 6.026786 , 0.191964 , 6.473214 , 0.497723 , 10.000000 , 8.348214 , 0.272321 , 1.285714 , 0.500000 , 1.000000 , false , false , true , true , 0.000000 , false , 76.923070 , 1.000000 , false , 100.000000 , 0.000000 , 100.000000 , 0.000000 , true , 32.589286 , 0.049107 , 10.000000 , 4.285714 , true , 32.142857 , 6.517857 , 8.080357 , 0.294643 , 10.000000 , 0.591530 , 7.232143 , 10.000000 , 0.232143 , 1.071429 , 0.723214 , 1.000000 , false , false , false , true , 0.000000 , true , 47.458785 , 1.000000 , false , 100.000000 , 0.000000 , 58.928571 , 0.000000 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , false );
81+ MakePreset (" Default" , 100.000000 , false , false , false , true , 50.000000 , 10.000000 , 10.000000 , 0.500000 , 10.000000 , 0.450000 , 10.000000 , 10.000000 , 0.000000 , 0.500000 , 0.500000 , 1.000000 , false , false , false , true , 0.000000 , false , 76.923000 , 1.000000 , false , 100.000000 , 0.000000 , 100.000000 , 0.000000 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , false , 50.000000 , 10.000000 , 10.000000 , 0.500000 , 10.000000 , 0.450000 , 10.000000 , 10.000000 , 0.000000 , 0.500000 , 0.500000 , 1.000000 , false , false , false , true , 0.000000 , false , 76.923000 , 1.000000 , false , 100.000000 , 0.000000 , 100.000000 , 0.000000 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , false );
82+ MakePreset (" Bassment" , 68.452381 , false , false , false , true , 92.261905 , 10.000000 , 4.866071 , 0.473214 , 3.571429 , 0.377201 , 10.000000 , 6.875000 , 0.272321 , 1.285714 , 0.500000 , 1.000000 , false , false , false , false , 0.000000 , false , 76.923070 , 0.982143 , true , 100.000000 , 0.000000 , 131.250000 , 0.000000 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , true , 47.619048 , 3.616071 , 10.000000 , 0.553572 , 5.892857 , 0.591530 , 7.232143 , 10.000000 , 0.218750 , 3.000000 , 0.299107 , 0.459821 , false , false , false , true , 0.039286 , true , 36.744499 , 0.165179 , false , 100.000000 , 0.000000 , 100.000000 , 0.000000 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , false );
83+ MakePreset (" Polish" , 100.000000 , false , false , false , true , 29.166666 , 10.000000 , 8.169643 , 0.191964 , 6.473214 , 0.300870 , 10.000000 , 7.366071 , 0.272321 , 1.285714 , 0.500000 , 1.000000 , false , false , false , true , 0.000000 , false , 76.923070 , 1.000000 , false , 100.000000 , 0.000000 , 100.000000 , 0.000000 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , false , 50.000000 , 10.000000 , 10.000000 , 0.500000 , 10.000000 , 0.450000 , 10.000000 , 10.000000 , 0.000000 , 0.500000 , 0.500000 , 1.000000 , false , true , false , true , 0.000000 , false , 76.923000 , 1.000000 , false , 100.000000 , 0.000000 , 100.000000 , 0.000000 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , false );
84+ MakePreset (" Cave" , 100.000000 , false , false , false , true , 50.000000 , 10.000000 , 7.991071 , 0.589286 , 10.000000 , 0.386642 , 10.000000 , 5.803571 , 0.000000 , 0.000000 , 0.500000 , 1.000000 , false , false , false , true , 0.000000 , false , 76.923000 , 1.000000 , false , 100.000000 , 0.000000 , 100.000000 , 0.000000 , true , 29.910714 , 0.131696 , 10.000000 , 10.000000 , true , 22.619048 , 10.000000 , 7.767857 , 0.584821 , 10.000000 , 0.466990 , 10.000000 , 7.053571 , 0.245536 , 0.714286 , 0.500000 , 1.000000 , false , false , false , true , 0.000000 , true , 64.423000 , 1.000000 , false , 22.321429 , 0.000000 , 100.000000 , 0.000000 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , false );
85+ MakePreset (" Canyon" , 0.000000 , false , true , false , true , 100.000000 , 10.000000 , 8.035714 , 0.803571 , 10.000000 , 0.248644 , 10.000000 , 10.000000 , 0.133929 , 0.642857 , 0.500000 , 0.120535 , false , true , false , true , 0.000000 , true , 60.851571 , 0.000000 , true , 100.000000 , -100.000000 , 100.000000 , -66.666666 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , true , 100.000000 , 10.000000 , 8.035714 , 0.803571 , 10.000000 , 0.248644 , 10.000000 , 10.000000 , 0.133929 , 0.642857 , 0.500000 , 0.120535 , true , true , false , true , 0.000000 , true , 60.851568 , 0.000000 , true , 100.000000 , 100.000000 , 100.000000 , 66.666663 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , false );
86+ MakePreset (" ChorusVerb" , 51.190476 , false , false , false , true , 100.000000 , 10.000000 , 8.080357 , 0.803571 , 0.000000 , 0.284801 , 10.000000 , 10.000000 , 0.138393 , 1.857143 , 0.500000 , 0.116071 , false , false , false , false , 0.000000 , true , 25.583714 , 0.000000 , false , 100.000000 , 0.000000 , 100.000000 , 0.000000 , true , 100.000000 , 0.082589 , 7.366071 , 10.000000 , true , 11.309524 , 10.000000 , 10.000000 , 0.500000 , 10.000000 , 0.495112 , 10.000000 , 10.000000 , 0.000000 , 0.500000 , 0.500000 , 1.000000 , false , false , false , true , 0.000000 , false , 76.923000 , 1.000000 , false , 23.660714 , 0.000000 , 100.000000 , 0.000000 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , false );
87+ MakePreset (" Washout" , 100.000000 , false , false , false , true , 32.142857 , 10.000000 , 10.000000 , 0.379464 , 10.000000 , 0.730733 , 8.169643 , 7.901786 , 0.272321 , 1.285714 , 0.500000 , 1.000000 , false , false , false , true , 0.000000 , true , 72.905213 , 1.000000 , false , 100.000000 , 0.000000 , 100.000000 , 0.000000 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , false , 50.000000 , 10.000000 , 10.000000 , 0.500000 , 10.000000 , 0.450000 , 10.000000 , 10.000000 , 0.000000 , 0.500000 , 0.500000 , 1.000000 , false , false , false , true , 0.000000 , false , 76.923000 , 1.000000 , false , 100.000000 , 0.000000 , 100.000000 , 0.000000 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , false );
88+ MakePreset (" Totally Tubular" , 61.904762 , false , false , false , true , 51.785714 , 10.000000 , 6.026786 , 0.191964 , 6.473214 , 0.497723 , 10.000000 , 8.348214 , 0.272321 , 1.285714 , 0.500000 , 1.000000 , false , false , true , true , 0.000000 , false , 76.923070 , 1.000000 , false , 100.000000 , 0.000000 , 100.000000 , 0.000000 , true , 32.589286 , 0.049107 , 10.000000 , 4.285714 , true , 32.142857 , 6.517857 , 8.080357 , 0.294643 , 10.000000 , 0.591530 , 7.232143 , 10.000000 , 0.232143 , 1.071429 , 0.723214 , 1.000000 , false , false , false , true , 0.000000 , true , 47.458785 , 1.000000 , false , 100.000000 , 0.000000 , 58.928571 , 0.000000 , false , 0.000000 , 0.000000 , 10.000000 , 10.000000 , false );
9089
9190 reverb1.setSampleRate (GetSampleRate ());
9291 envelope1.setSampleRate (GetSampleRate ());
@@ -289,7 +288,51 @@ Plateau2::Plateau2(const InstanceInfo& info)
289288
290289 // Dump Preset Button
291290 // pGraphics->AttachControl((new LEDButton(IRECT::MakeXYWH(0, 40, 102, 102), LEDScale, LedOffSVG, LedOnBothSVG, LedOnBothSVG, [this](IControl* button) {DumpMakePresetSrc("C:/dev/Plugins/Plateau/Plateau2/preset.txt");})));
292-
291+
292+ // Save Button
293+ pGraphics->AttachControl ((new LEDButton (IRECT::MakeXYWH (-14 , 20 , 102 , 102 ), LEDScale, LedOffSVG, LedOnBothSVG, LedOnBothSVG, [this , pGraphics](IControl* button) {
294+ WDL_String filename;
295+ WDL_String path;
296+ pGraphics->PromptForFile (filename, path, EFileAction::Save, " pl2" , [this , button](const WDL_String& fileName, const WDL_String& path) {
297+ if (path.GetLength ()) {
298+ IByteChunk chunk;
299+ if (SerializeState (chunk)) {
300+ FILE* f = fopen (fileName.Get (), " wb" );
301+ if (f) {
302+ fwrite (chunk.GetData (), 1 , chunk.Size (), f);
303+ fclose (f);
304+ button->SetValue (0 );
305+ button->SetDirty (false );
306+ }
307+ }
308+ }
309+ });
310+ })));
311+
312+ // Load Button
313+ pGraphics->AttachControl ((new LEDButton (IRECT::MakeXYWH (228 , 20 , 102 , 102 ), LEDScale, LedOffSVG, LedOnBothSVG, LedOnBothSVG, [this , pGraphics](IControl* button) {
314+ WDL_String filename;
315+ WDL_String path;
316+ pGraphics->PromptForFile (filename, path, EFileAction::Open, " pl2" , [this , button](const WDL_String& fileName, const WDL_String& path) {
317+ FILE* f = fopen (fileName.Get (), " rb" );
318+ if (f) {
319+ fseek (f, 0 , SEEK_END);
320+ int size = (int )ftell (f);
321+ fseek (f, 0 , SEEK_SET);
322+
323+ IByteChunk chunk;
324+ chunk.Resize (size);
325+ fread (chunk.GetData (), 1 , size, f);
326+ fclose (f);
327+
328+ UnserializeState (chunk, 0 );
329+
330+ if (GetUI ()) GetUI ()->SetAllControlsDirty ();
331+ button->SetValue (0 );
332+ button->SetDirty (false );
333+ }
334+ });
335+ })));
293336
294337 // Tank Enable Switch
295338 Switches[4 ] = new LEDSwitch (IRECT::MakeXYWH (106 .5f , 112 , 102 , 102 ), LEDScale, LedOffSVG, LedOn1SVG, LedOn2SVG, kEnable1 , kEnable2 );
@@ -758,6 +801,17 @@ void Plateau2::UpdateParameter(int sourceIndex, int targetIndex)
758801 }
759802}
760803
804+ bool Plateau2::SerializeState (IByteChunk& chunk) const
805+ {
806+ return SerializeParams (chunk);
807+ }
808+
809+ int Plateau2::UnserializeState (const IByteChunk& chunk, int pos)
810+ {
811+ pos = UnserializeParams (chunk, pos);
812+ if (GetUI ()) GetUI ()->SetAllControlsDirty ();
813+ return pos;
814+ }
761815
762816#if IPLUG_DSP
763817void Plateau2::ProcessBlock (sample** inputs, sample** outputs, int nFrames)
0 commit comments