mirror of
				https://github.com/AquaMorph/Droplets.git
				synced 2025-10-31 16:23:19 +00:00 
			
		
		
		
	Basic AD switching
This commit is contained in:
		| @@ -19,11 +19,15 @@ void AD::Process(DacHandle::Channel chn, | |||||||
|   if(patch->gate_input[gate].Trig()) { |   if(patch->gate_input[gate].Trig()) { | ||||||
|     env.Trigger(); |     env.Trigger(); | ||||||
|   } |   } | ||||||
|  |   if (curve_menu) { | ||||||
|   attack = attack_param.Process(); |     curve = curve_param.Process(); | ||||||
|  |   } else { | ||||||
|  |     attack = attack_param.Process(); | ||||||
|  |   } | ||||||
|   decay = decay_param.Process(); |   decay = decay_param.Process(); | ||||||
|   env.SetTime(ADENV_SEG_ATTACK, attack); |   env.SetTime(ADENV_SEG_ATTACK, attack); | ||||||
|   env.SetTime(ADENV_SEG_DECAY, decay); |   env.SetTime(ADENV_SEG_DECAY, decay); | ||||||
|  |   env.SetCurve(curve); | ||||||
|    |    | ||||||
|   sig = env.Process(); |   sig = env.Process(); | ||||||
|   patch->seed.dac.WriteValue(chn, |   patch->seed.dac.WriteValue(chn, | ||||||
| @@ -46,6 +50,14 @@ float AD::GetCurve() { | |||||||
|   return curve; |   return curve; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | bool AD::GetMenu() { | ||||||
|  |   return curve_menu; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void AD::ToggleCurve() { | ||||||
|  |   curve_menu = !curve_menu; | ||||||
|  | } | ||||||
|  |  | ||||||
| ADDroplet::ADDroplet(DaisyPatch* m_patch, | ADDroplet::ADDroplet(DaisyPatch* m_patch, | ||||||
| 		       DropletState m_state, | 		       DropletState m_state, | ||||||
| 		       float sample_rate) : | 		       float sample_rate) : | ||||||
| @@ -80,7 +92,16 @@ ADDroplet::ADDroplet(DaisyPatch* m_patch, | |||||||
|  |  | ||||||
| ADDroplet::~ADDroplet() {} | ADDroplet::~ADDroplet() {} | ||||||
|  |  | ||||||
| void ADDroplet::Control() {} | void ADDroplet::Control() { | ||||||
|  |   if (Patch()->encoder.Pressed()) { | ||||||
|  |     if (Patch()->encoder.TimeHeldMs() < 10) { | ||||||
|  |       ad[0].ToggleCurve(); | ||||||
|  |       if (GetState() == DropletState::kFull) { | ||||||
|  | 	ad[1].ToggleCurve(); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
| void ADDroplet::Process(AudioHandle::InputBuffer in, AudioHandle::OutputBuffer out, size_t size) { | void ADDroplet::Process(AudioHandle::InputBuffer in, AudioHandle::OutputBuffer out, size_t size) { | ||||||
|   Patch()->ProcessAnalogControls(); |   Patch()->ProcessAnalogControls(); | ||||||
| @@ -106,22 +127,22 @@ void ADDroplet::Process(AudioHandle::InputBuffer in, AudioHandle::OutputBuffer o | |||||||
|  |  | ||||||
| void ADDroplet::Draw() { | void ADDroplet::Draw() { | ||||||
|   WriteString(Patch(), |   WriteString(Patch(), | ||||||
| 	      GetScreenMin(), | 	      GetScreenMin()+3, | ||||||
| 	      10, | 	      11, | ||||||
| 	      Font_6x8, | 	      Font_6x8, | ||||||
| 	      "A: " + | 	      "A: " + | ||||||
| 	      FloatToString(ad[0].GetAttack(), 2) + | 	      FloatToString(ad[0].GetAttack(), 2) + | ||||||
| 	      "s"); | 	      "s"); | ||||||
|   WriteString(Patch(), |   WriteString(Patch(), | ||||||
| 	      GetScreenMin(), | 	      GetScreenMin()+3, | ||||||
| 	      20, | 	      21, | ||||||
| 	      Font_6x8, | 	      Font_6x8, | ||||||
| 	      "D: " + | 	      "D: " + | ||||||
| 	      FloatToString(ad[0].GetDecay(), 2) + | 	      FloatToString(ad[0].GetDecay(), 2) + | ||||||
| 	      "s"); | 	      "s"); | ||||||
|   WriteString(Patch(), |   WriteString(Patch(), | ||||||
| 	      GetScreenMin(), | 	      GetScreenMin()+3, | ||||||
| 	      30, | 	      31, | ||||||
| 	      Font_6x8, | 	      Font_6x8, | ||||||
| 	      "C: " + | 	      "C: " + | ||||||
| 	      FloatToString(ad[0].GetCurve(), 2)); | 	      FloatToString(ad[0].GetCurve(), 2)); | ||||||
| @@ -129,24 +150,32 @@ void ADDroplet::Draw() { | |||||||
|     int mid = (GetScreenMax() - GetScreenMin())/2; |     int mid = (GetScreenMax() - GetScreenMin())/2; | ||||||
|     WriteString(Patch(), |     WriteString(Patch(), | ||||||
| 	        mid, | 	        mid, | ||||||
| 		10, | 		11, | ||||||
| 		Font_6x8, | 		Font_6x8, | ||||||
| 		"A: " + | 		"A: " + | ||||||
| 		FloatToString(ad[1].GetAttack(), 2) + | 		FloatToString(ad[1].GetAttack(), 2) + | ||||||
| 		"s"); | 		"s"); | ||||||
|     WriteString(Patch(), |     WriteString(Patch(), | ||||||
| 		mid, | 		mid, | ||||||
| 		20, | 		21, | ||||||
| 		Font_6x8, | 		Font_6x8, | ||||||
| 		"D: " + | 		"D: " + | ||||||
| 		FloatToString(ad[1].GetDecay(), 2) + | 		FloatToString(ad[1].GetDecay(), 2) + | ||||||
| 		"s"); | 		"s"); | ||||||
|     WriteString(Patch(), |     WriteString(Patch(), | ||||||
| 		mid, | 		mid, | ||||||
| 		30, | 		31, | ||||||
| 		Font_6x8, | 		Font_6x8, | ||||||
| 		"C: " + | 		"C: " + | ||||||
| 		FloatToString(ad[1].GetCurve(), 2)); | 		FloatToString(ad[1].GetCurve(), 2)); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   if (ad[0].GetMenu()) { | ||||||
|  |     DrawSolidRect(Patch(), GetScreenMin(), 30, GetScreenMin()+1, 39, true); | ||||||
|  |   } else { | ||||||
|  |     DrawSolidRect(Patch(), GetScreenMin(), 10, GetScreenMin()+1, 19, true); | ||||||
|  |   } | ||||||
|  |   DrawSolidRect(Patch(), GetScreenMin(), 20, GetScreenMin()+1, 29, true); | ||||||
|  |    | ||||||
|   DrawName("AD"); |   DrawName("AD"); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -21,6 +21,7 @@ private: | |||||||
|   Parameter     curve_param; |   Parameter     curve_param; | ||||||
|   float         sig; |   float         sig; | ||||||
|   DaisyPatch*   patch; |   DaisyPatch*   patch; | ||||||
|  |   bool          curve_menu = false; | ||||||
| public: | public: | ||||||
|   void Init(DaisyPatch* m_patch, |   void Init(DaisyPatch* m_patch, | ||||||
| 	    float sample_rate, | 	    float sample_rate, | ||||||
| @@ -33,6 +34,8 @@ public: | |||||||
|   float GetAttack(); |   float GetAttack(); | ||||||
|   float GetDecay(); |   float GetDecay(); | ||||||
|   float GetCurve(); |   float GetCurve(); | ||||||
|  |   bool GetMenu(); | ||||||
|  |   void ToggleCurve(); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class ADDroplet: public Droplet { | class ADDroplet: public Droplet { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user