рдСрдбрд┐рдпреЛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдмрдирд╛рдирд╛, рднрд╛рдЧ 5

рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╕рднреА рдкреЛрд╕реНрдЯ:

рднрд╛рдЧ 1. рдкрд░рд┐рдЪрдп рдФрд░ рд╕реЗрдЯрдЕрдк

рднрд╛рдЧ 2. рдХреЛрдб рд╕реАрдЦрдирд╛

рднрд╛рдЧ 3. рд╡реАрдПрд╕рдЯреА рдФрд░ рдПрдпреВ

рднрд╛рдЧ 4. рдбрд┐рдЬрд┐рдЯрд▓ рд╡рд┐рд░реВрдкрдг

рднрд╛рдЧ 5. рдкреНрд░реАрд╕реЗрдЯ рдФрд░ рдЬреАрдпреВрдЖрдИ

рднрд╛рдЧ 6. рд╕рд┐рдЧреНрдирд▓ рд╕рдВрд╢реНрд▓реЗрд╖рдг

рднрд╛рдЧ 7. рдорд┐рдбреА рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛

рднрд╛рдЧ 8. рдЖрднрд╛рд╕реА рдХреАрдмреЛрд░реНрдб

рднрд╛рдЧ 9. рд▓рд┐рдлрд╛рдлреЗ

рднрд╛рдЧ 10. рдЬреАрдпреВрдЖрдИ рдореЗрдВ рд╕реБрдзрд╛рд░

рднрд╛рдЧ 11. рдлрд╝рд┐рд▓реНрдЯрд░

рднрд╛рдЧ 12. рдХрдо рдЖрд╡реГрддреНрддрд┐ рд╡рд╛рд▓рд╛ рдерд░рдерд░рд╛рдирд╡рд╛рд▓рд╛

рднрд╛рдЧ 13. рдирдпрд╛ рд╕реНрд╡рд░реВрдк

рднрд╛рдЧ 14. рдкреЙрд▓реАрдлреЛрдиреА 1

рднрд╛рдЧ 15. рдкреЙрд▓реАрдлреЛрдиреА 2

рднрд╛рдЧ 16. рдПрдВрдЯреАрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ






рдЪрд▓реЛ рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░реАрд╕реЗрдЯ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ [рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд] рд╕реБрдВрджрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рддреЗ рд╣реИрдВред



рдкреНрд░реАрд╕реЗрдЯ



рдкреНрд░реАрд╕реЗрдЯ рдРрд╕реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рдиреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рд╣рдорд╛рд░реЗ рдХреЛрдб рдореЗрдВ, рдкреНрд░реАрд╕реЗрдЯ рдореЗрдВ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд╛рдо рдФрд░ рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдмрд╛рдж рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗ, рдпрд╣рд╛рдВ рдЖрдк рдЕрдиреНрдп рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░реАрд╕реЗрдЯ рдХреЛ рдХрднреА-рдХрднреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред



рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд▓рд┐рдП GUI рд╡рд┐рдВрдбреЛ рдХреЛ рд╡реНрдпрд╛рдкрдХ рдмрдирд╛рддреЗ рд╣реИрдВред рд╕рдВрд╕рд╛рдзрди рдореЗрдВ рд╕рдВрдЧрдд рд╕реНрдерд┐рд░рд╛рдВрдХ рдмрджрд▓реЗрдВред



// GUI default dimensions #define GUI_WIDTH 400
      
      







DigitalDistortion.h рдореЗрдВ, рд╣рдо рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдХ private



рд╕рджрд╕реНрдп рдХрд╛рд░реНрдп рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:



 private: double mThreshold; void CreatePresets();   DigitalDistortion.cpp  void DigitalDistortion::CreatePresets() { MakePreset("clean", 100.0); MakePreset("slightly distorted", 80.0); MakePreset("woooo", 40.0); MakePreset("waaaa", 20.0); MakePreset("buzzz!!!", 0.01); }
      
      







MakePreset



рддрд░реНрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реАрд╕реЗрдЯ рдирд╛рдо рдФрд░ рдорд╛рди рд▓реЗрддрд╛ рд╣реИред рддрд░реНрдХреЛрдВ рдХрд╛ рдХреНрд░рдо рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ enum EParams



рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдорд╛рди 0 рд╕реЗ 100 рддрдХ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдФрд░ 0 рд╕реЗ 1 рддрдХ рдирд╣реАрдВред рдпреЗ рдорд╛рди kThreshold



рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ mThreshold



рдЪрд░ рдХреЛ рдирд╣реАрдВред



MakeDefaultPreset



рдХреЗ рдЕрдВрдд рдореЗрдВ MakeDefaultPreset



рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, CreatePresets



рдХреЙрд▓ рд▓рд┐рдЦреЗрдВ:



 DigitalDistortion::DigitalDistortion(IPlugInstanceInfo instanceInfo) : IPLUG_CTOR(kNumParams, kNumPrograms, instanceInfo), mThreshold(1.) { // ... CreatePresets(); }
      
      







рдЕрдВрдд рдореЗрдВ, рд╣рдореЗрдВ рдЙрд╕ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрдм рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╣ 13 рд╡реАрдВ рдкрдВрдХреНрддрд┐ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрд╣реАрдВ рд╣реИ):



 const int kNumPrograms = 5;
      
      







рдпрджрд┐ рдЗрд╕ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдорд╛рди рдкреНрд░реАрд╕реЗрдЯ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдмрд╛рдХреА рдХреЛ рдХреЗрд╡рд▓ "рдЦрд╛рд▓реА" рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред



VST2 рдЕрд╕реЗрдВрдмрд▓реА рдЪрд▓рд╛рдПрдБред рдЖрдкрдХреЛ рдкреНрд▓рдЧрдЗрди рдХреЛ рдЯреНрд░реИрдХ рд╕реЗ рд╣рдЯрд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдирдП рд╕рд┐рд░реЗ рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рдкреНрд░реАрд╕реЗрдЯ рджрд┐рдЦрд╛рдИ рджреЗрдВред рдЙрдиреНрд╣реЗрдВ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╕реАрдзреЗ рдкреНрд▓рдЧрдЗрди GUI рдХреЗ рдКрдкрд░ рд╕реНрдерд┐рдд рд╣реИред рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ - рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдореЗрдВ рдореВрд▓реНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдШреБрдВрдбреА рдШреВрдорддреА рд╣реИред

рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ OnParamChange



рдХрд┐ рдЬрдм рдкреНрд░рддреНрдпреЗрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдмрджрд▓рддрд╛ рд╣реИ рддреЛ OnParamChange



рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдбреНрд░реЙрдк-рдбрд╛рдЙрди рдореЗрдиреВ рдХреЗ рджрд╛рдИрдВ рдУрд░ рдПрдХ рдмрдЯрди рд╣реИ рдЬреЛ рдкреНрд░реАрд╕реЗрдЯ рдореЗрдиреВ рдЦреЛрд▓рддрд╛ рд╣реИ:







рдкреНрд░реАрд╕реЗрдЯ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдФрд░ рдШреБрдВрдбреА рдХреЛ рдШреБрдорд╛рдХрд░ рджреЗрдЦреЗрдВред рдпрджрд┐ рдЖрдк рдЯреНрд░реИрдХ рд╕реЗ рдкреНрд▓рдЧрдЗрди рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЙрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдпрд╛рдж рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдЧреАред рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, "рдирд┐рд░реНрдпрд╛рдд VST рдкреИрдЪ / рдмреИрдВрдХ рдлрд╝рд╛рдЗрд▓ (.fxp / / .fxb) ..." рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ test.fxb рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВред рдЕрдм рдкреНрд▓рдЧрдЗрди рдирд┐рдХрд╛рд▓реЗрдВ, рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕ рд╕реЗрдЯрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВред

рд╡реАрдПрд╕рдЯреА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдПрдХ рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдлрдПрдХреНрд╕рдкреА рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рдкреНрд░реАрд╕реЗрдЯ рдмреИрдВрдХ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдлрдПрдХреНрд╕рдмреА ред



рдПрдпреВ рд▓рдХреНрд╖реНрдп рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ (рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдПрдбрд┐рдЯ рд╕реНрдХреАрдо рдкрд░ рдЬрд╛рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╣реЛрд╕реНрдЯ рд╕реЗ рд╢реБрд░реВ рд╣реЛ)ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ REAPER "рдХреЛрдИ рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ" рд▓рд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдореЗрдВ рд╕рднреА рдкреНрд░реАрд╕реЗрдЯ рдЬрдЧрд╣ рдореЗрдВ рд╣реИрдВ рдФрд░ рд╕рдм рдХреБрдЫ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдкреНрд░реАрд╕реЗрдЯ рд╕рд╣реЗрдЬрдирд╛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рд╣рдо рдкреНрд░реАрд╕реЗрдЯ рдмреИрдВрдХреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдФрд░ рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдУрд▓реА рд▓рд╛рд░реНрдХрд┐рди рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрдЪрдд / рд▓реЛрдбрд┐рдВрдЧ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред



рдпрд╣ рдЕрдВрдд рдореЗрдВ рдПрдХ рд╕реБрдВрджрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ!



рдЬреАрдпреВрдЖрдИ



рд╣рдо рдЗрд╕ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:







рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдбреЗрдб рдХреВрд▓ рдХреЛ рдирд╣реАрдВ рдЧрд┐рд░рд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЛ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП рдФрд░, рдФрд░ рднреА рджрд┐рд▓рдЪрд╕реНрдк, рдПрдХ рд░реЛрдЯрд░реА рд╣реИрдВрдбрд▓ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред

рдЗрд╕ TIFF рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рд╕рд╛рде рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ ред рдлрд╝реЛрдЯреЛрд╢реЙрдк рдореЗрдВ рдЦреЛрд▓реЗрдВ (рдпрд╛ рдЬреЛ рднреА рдЖрдкрдХреЛ рдкрд╕рдВрдж рд╣реИ) рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкрд░рддреЛрдВ рдФрд░ рд╕рдореВрд╣реЛрдВ рдХреЛ рджреЗрдЦреЗрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ рд╡рд╣ рдХрд▓рдо рд╣реИред рддреЛ рдмрд╛рдХреА рдХреЛ рдХреЗрд╡рд▓ рдПрдХ png рдореЗрдВ рдмрдЪрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:







рдореИрдХ рдкрд░ рдЕрд╕реЗрдВрдмрд▓реА рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЬреЛрдбрд╝рдирд╛



рдКрдкрд░ рджрд┐рдП рдЧрдП рдЪрд┐рддреНрд░ рдХреЛ рдЕрдкрдиреЗ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рд╕рд╣реЗрдЬреЗрдВред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдиреЗрд╡рд┐рдЧреЗрдЯрд░ рдореЗрдВ Xcode рдореЗрдВ, рд╕рдВрд╕рд╛рдзрди рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ рдФрд░ рд╡рд╣рд╛рдВ рдкреГрд╖реНрдарднреВрдорд┐ рдЫрд╡рд┐ рдЦреАрдВрдЪреЗрдВ:







рдЖрдкрдХреЛ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЖрдЗрдЯрдо рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рд╕рднреА рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдЫрд╡рд┐ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЙрдХреНрд╕ рдХреЛ рдЪреЗрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:







рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рдПрдХ рдкреГрд╖реНрдарднреВрдорд┐ рдЬреЛрдбрд╝рдирд╛



рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ, рд╕рдВрд╕рд╛рдзрди рдЬреЛрдбрд╝рдирд╛ (рдЬреИрд╕реЗ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕) рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИред рдореИрдХ рдкрд░ рд╕рднреА рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рддрд╕реНрд╡реАрд░ рдХреЛ .app , .vst рдФрд░ .component рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдЖрдк рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред Visual Studio рдореЗрдВ, рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рд╣рдорд╛рд░реА рддрд╕реНрд╡реАрд░ рдХреЛ рд░рд┐рд╕реЛрд░реНрд╕ \ img рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдлреЗрдВрдХ рджреЗрдВ, рдФрд░ рдлрд┐рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ .rc рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдбрд┐рдЯ рдХрд░реЗрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, DigitalDistortion.rc ред рдЙрдирдХреА рдЯреЛрдкреА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:



 #include "resource.h" KNOB_ID PNG KNOB_FN
      
      







рд░рд┐рд╕реЛрд░реНрд╕.рд╣ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рддрд╛рдХрд┐ рдЙрд╕рдореЗрдВ рд╕реЗ рд╕рднреА #define



рдЗрд╕ рдлрд╛рдЗрд▓ рдореЗрдВ рднреА рдЙрдкрд▓рдмреНрдз рд╣реЛрдВред рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдпрд╣ рдШреЛрд╖рдгрд╛ рдХрд░рддреА рд╣реИ рдХрд┐ рдПрдХ рдкреЗрди рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рдкреГрд╖реНрдарднреВрдорд┐ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдкрдВрдХреНрддрд┐ рдХреЛ рдЬреЛрдбрд╝реЗрдВ:



 BACKGROUND_ID PNG BACKGROUND_FN
      
      







рдПрдХ рдорд┐рдирдЯ рдореЗрдВ, BACKGROUND_ID



рдФрд░ BACKGROUND_FN



рдХреЛ resource.h рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред

рд╣рд░ рдмрд╛рд░ рдЬрдм рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдЫрд╡рд┐ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рд╕рдорд╛рди рд░реЗрдЦрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред



рдкреГрд╖реНрдарднреВрдорд┐ рдЫрд╡рд┐



рдЪрд▓реЛ рдПрдХ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рд╣рдорд╛рд░реА рддрд╕реНрд╡реАрд░ рд╣реБрдХред рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд╕рдВрд╕рд╛рдзрди рдореЗрдВ 60 рд╡реАрдВ рдкрдВрдХреНрддрд┐ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдкрдХреЛ рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:



 // GUI default dimensions #define GUI_WIDTH 280 #define GUI_HEIGHT 230
      
      







рдФрд░ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдЖрдИрдбреА рдФрд░ рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдЬреЛрдбрд╝реЗрдВ:



 // Unique IDs for each image resource. #define KNOB_ID 101 #define BACKGROUND_ID 102 // Image resource locations for this plug. #define KNOB_FN "resources/img/knob.png" #define BACKGROUND_FN "resources/img/background.png"
      
      







DigitalDistortion.cpp рдореЗрдВ, рдЖрдкрдХреЛ рд▓рд╛рд▓ рдХреЗ рдмрдЬрд╛рдп рд╣рдорд╛рд░реА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛:



 // pGraphics->AttachPanelBackground(&COLOR_RED); pGraphics->AttachBackground(BACKGROUND_ID, BACKGROUND_FN);
      
      







рдпрд╣ рдПрдХ рддрд╕реНрд╡реАрд░ рдереАред рдЖрдЗрдП рд╣рдо рдПрдХ рд╕рд╛рде рдПрдкреАрдкреА рдбрд╛рд▓реЗрдВ рдФрд░ рдЪрд┐рддреНрд░ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВ:







рд▓реЗрдЦрдиреА



рд╣реИрдВрдбрд▓ рдереЛрдбрд╝рд╛ рдкреЗрдЪреАрджрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдмрдирд╛рд╡рдЯ рдФрд░ рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╣реИрдВ, рдЗрд╕рдореЗрдВ рдХрдИ рдкрд░рддреЗрдВ рд╣реИрдВред рдЬрдм рдЖрдк рдШреБрдВрдбреА рдХреЛ рдореЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдзрд╛рддреБ рдШреВрдорддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЫрдд рдкрд░ рджреАрдкрдХ (рдЪрд▓реЛ рдЖрд╢рд╛) рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рддреЛ рдХреБрдЫ рдШрдЯрдХреЛрдВ рдХреЛ рдШреВрдордирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдХреБрдЫ рдкреНрд░рдХрд╛рд╢ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдкреЗрди рдХреЛ рдПрдХ рдЪрд┐рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬ рдирд╣реАрдВ рдкрд╛рдПрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдореЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛: рд╣реИрдВрдбрд▓ рдореЗрдВ рдПрдХ рдЖрдзрд╛рд░ рд╣реИ рдЬреЛ рдШреВрдорддрд╛ рдирд╣реАрдВ рд╣реИ; рдЗрд╕рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдзрд╛рддреБ рдХреА рдмрдирд╛рд╡рдЯ рд╣реИ рдЬреЛ рдШреВрдорддреА рд╣реИ; рдФрд░ рдЗрд╕ рд╕рдм рдХреЗ рдКрдкрд░ рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╣реИрдВ рдЬреЛ рд╕реНрдкрд┐рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╕рднреА рддреАрди рднрд╛рдЧреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдпрд╣рд╛рдВ рдореИрдВрдиреЗ рдПрдХ рдХрд╛рд▓реА рдкреГрд╖реНрдарднреВрдорд┐ рдЬреЛрдбрд╝реА, рдмрд╕ рд╕реАрдорд╛рдУрдВ рдФрд░ рд╣рд▓реНрдХреЗ рднрд╛рдЧреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП):







рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдЙрдкрдХрд░рдг рд╣реИ: рдиреЛрдмрдореИрдиред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреЗрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрдлреНрдд рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИред рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ , рдЪрд▓рд╛рдПрдБ, рдФрд░ рдЦреЛрд▓реЗрдВ рдЬреЛ рдореИрдВрдиреЗ рддреИрдпрд╛рд░ рдХреА рдереА:







рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдХреЗрд╡рд▓ рддреАрди рдкрд░рддреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдФрд░ рдХреБрдЫ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдмрджрд▓ рджрд┐рдП рддрд╛рдХрд┐ рдзрд╛рддреБ рдХреА рдмрдирд╛рд╡рдЯ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдШреВрдо рд╕рдХреЗред рдпрджрд┐ рдЖрдк рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореИрдиреБрдЕрд▓ рдкрдврд╝реЗрдВред

рдЗрд╕ рдкреЗрди рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ (рдореИрдХ рдкрд░ Cmd + E, Windows рдкрд░ Ctrl + E) рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд╛рдо knob.png (рдпрд╛ рдореЗрд░рд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ)ред рдЗрд╕ png рдореЗрдВ рд╣реИрдВрдбрд▓ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдкрджреЛрдВ рдХреЗ рд▓рд┐рдП 128 рдлреНрд░реЗрдо рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рддреАрд░ рдХреЗ рд╕рд╛рде рдзрд╛рддреБ рдШреВрдорддрд╛ рд╣реИред рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП



Xcode рдореЗрдВ, рдореМрдЬреВрджрд╛ knob.png (рд░рд╛рдЗрдЯ рдХреНрд▓рд┐рдХ, рдбрд┐рд▓реАрдЯ ) рдХреЛ рд╣рдЯрд╛рдПрдВ ред рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╡рд╛рдж рдореЗрдВ, рдореВрд╡ рдЯреВ рдЯреНрд░реИрд╢ рдЪреБрдиреЗрдВ ред рдЕрдм рдирдП knob.png рдХреЛ img рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЦреАрдВрдЪреЗрдВ рдФрд░ рд╡рд╣реА рдХрд╛рдо рдХрд░реЗрдВ рдЬреЛ рд╣рдордиреЗ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЗрдореЗрдЬ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдерд╛ред

рдЪреВрдВрдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╕рдВрд╕рд╛рдзрди рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред enum ELayout



рд╕реАрдзреЗ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ enum ELayout



рдмрджрд▓реЗрдВ:



 enum ELayout { kWidth = GUI_WIDTH, kHeight = GUI_HEIGHT, kThresholdX = 79, kThresholdY = 62, kKnobFrames = 128 };
      
      







рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдореЗрдВ WDL рдХреЗ рд▓рд┐рдП рднреА рд╕рдВрдХреЗрдд рдирд╣реАрдВ рджреЗрдирд╛ рд╣реИ рдХрд┐ рдирдпрд╛ рдкреЗрди рдмрдбрд╝рд╛ рд╣реИред рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдлрд╝реНрд░реЗрдо рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

VST2 рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдЬрдм рдЖрдк рд╣реИрдВрдбрд▓ рдШреБрдорд╛рддреЗ рд╣реИрдВ рддреЛ рдлреНрд░реЗрдо рдХреИрд╕реЗ рдШреВрдорддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдореБрдЭреЗ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд▓рдЧрдЗрди рдХреЛ рд╡рд┐рдХреГрддрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ 100% рд╕рдВрднрд╛рд▓ рдХреЗ рд╕рд╛рде, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдзреНрд╡рдирд┐ рд╣реИред



рд╣рд╛рде рдХреА рджрд┐рд╢рд╛





рдХрд╣реАрдВ рди рдХрд╣реАрдВ 90 рд╡реАрдВ рдкрдВрдХреНрддрд┐ рдореЗрдВ, рдЖрдкрдХреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:



 mThreshold = 1 - (GetParam(kThreshold)->Value() / 100.);
      
      







рд╡рд┐рднрд╛рдЬрди рдХреЛ рд╢реВрдиреНрдп рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдмрд╛рдд рдХреА рдереА, рдЖрдкрдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЛ 0



рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп 99.99



(30 рд╡реАрдВ рдкрдВрдХреНрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ):



 GetParam(kThreshold)->InitDouble("Threshold", 0.0, 0.0, 99.99, 0.01, "%");
      
      







рдЕрдм рд╕рдм рдХреБрдЫ рд╡реИрд╕рд╛ рд╣реА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд┐рдореЗрдВрдЯрд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, Threshold



рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдирд╛рдо mThreshold



рдХрд┐рд╕реА mThreshold



рдкрд░ mThreshold



рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдереНрд░реЗрд╢реЛрд▓реНрдб рд╡реИрд▓реНрдпреВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИ, рд╡рд╣ рд╣реИ mThreshold



рд╡реЗрд░рд┐рдПрдмрд▓ред



рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдХреЗ рдкрд░рд┐рдгрд╛рдо



рдиреНрдпреВрдирддрдо рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдШрдВрдЯрд┐рдпрд╛рдБ рдФрд░ рд╕реАрдЯреА рдХреЗ рд╕рд╛рде, рд╣рдордиреЗ рдПрдХ рдХрд╕реНрдЯрдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╡рд┐рдХреГрддрд┐ рдкреИрджрд╛ рдХреАред рдпрд╣ рд╣рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдкреНрд▓рдЧрдЗрди рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред

рдЕрдм рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рд╕рдордЭ рд╣реИ, рддреЛ рд╣рдо рдФрд░ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЛрдВ рдкрд░ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд▓реА рдмрд╛рд░ рдореИрдВ рдзреНрд╡рдирд┐ рддрд░рдВрдЧреЛрдВ рдХреЗ рд╕рдВрд╢реНрд▓реЗрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред



рдХрд╛рд░реНрдп рдХреЗ рд╕рднреА рдкрд░рд┐рдгрд╛рдореЛрдВ рд╡рд╛рд▓реА рдлрд╛рдЗрд▓реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред



рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╛рдордЧреНрд░реА



рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ рдиреЙрдмрдореИрди рдХреЗ рд▓рд┐рдП рдХрдИ рд╕реНрд╡рддрдВрддреНрд░ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ ред



GUI рдмрдирд╛рддреЗ рд╕рдордп, рдореИрдВрдиреЗ рдЗрд╕ рдлрд╝реЛрдЯреЛрд╢реЙрдк рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд▓реЗрдЦрдХ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!



рдФрд░ рдиреЙрдмрдореИрди рдХреЗ рд▓рд┐рдП g200kg рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!



рдореВрд▓ рд▓реЗрдЦ:

martin-finke.de/blog/articles/audio-plugins-006-presets

martin-finke.de/blog/articles/audio-plugins-007-gui



All Articles