рднрд╛рдЧ 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