@@ -575,17 +575,10 @@ void gui_draw(Synth *synth, SDL_Window *window, SDL_GLContext gl_context,
575575 draw_list->AddRect (rms_bar_pos,
576576 ImVec2 (rms_bar_pos.x + bar_width, rms_bar_pos.y + bar_height),
577577 ImColor (1 .0f , 1 .0f , 1 .0f , 1 .0f )); // White border
578-
579- ImGui::Separator ();
580- ImGui::Text (" Status:" );
581- if (synth->mixer .dc_filter_enabled )
582- ImGui::TextColored (ImVec4 (0 .0f , 1 .0f , 0 .0f , 1 .0f ), " [DC Filter ON]" );
583- if (synth->mixer .soft_clip_enabled )
584- ImGui::TextColored (ImVec4 (1 .0f , 0 .5f , 0 .0f , 1 .0f ), " [Soft Clip ON]" );
585- if (synth->mixer .auto_gain_enabled )
586- ImGui::TextColored (ImVec4 (0 .0f , 0 .5f , 1 .0f , 1 .0f ), " [Auto Gain ON]" );
587- }
588578
579+ ImGui::Separator ();
580+ }
581+
589582 // Arpeggiator
590583 if (ImGui::CollapsingHeader (" ArpeggiatorSection" , ImGuiTreeNodeFlags_DefaultOpen)) {
591584 ImGui::Checkbox (" Enabled##arp" , (bool *)&synth->arp .enabled );
@@ -640,6 +633,13 @@ void gui_draw(Synth *synth, SDL_Window *window, SDL_GLContext gl_context,
640633 }
641634 }
642635
636+ ImGui::Separator ();
637+ ImGui::Text (" Gate & Timing:" );
638+ ImGui::SliderFloat (" Gate Length" , &synth->arp .gate_length , 0 .1f , 1 .0f , " %.2f" );
639+ if (ImGui::IsItemHovered ()) {
640+ ImGui::SetTooltip (" Controls note duration (0.1=10%%, 0.5=50%%, 1.0=100%% of step time)" );
641+ }
642+
643643 ImGui::Separator ();
644644 ImGui::Text (" Presets:" );
645645 ImGui::Columns (4 , " arp_presets" , true );
@@ -650,6 +650,7 @@ void gui_draw(Synth *synth, SDL_Window *window, SDL_GLContext gl_context,
650650 synth->arp .octaves = 2 ;
651651 synth->arp .polyphonic = 0 ;
652652 synth->arp .hold = 0 ;
653+ synth->arp .gate_length = 0 .8f ;
653654 }
654655 ImGui::SameLine (); ImGui::Text (" 8th notes" );
655656
@@ -659,6 +660,7 @@ void gui_draw(Synth *synth, SDL_Window *window, SDL_GLContext gl_context,
659660 synth->arp .octaves = 2 ;
660661 synth->arp .polyphonic = 0 ;
661662 synth->arp .hold = 0 ;
663+ synth->arp .gate_length = 0 .8f ;
662664 }
663665 ImGui::SameLine (); ImGui::Text (" Descending" );
664666
@@ -668,6 +670,7 @@ void gui_draw(Synth *synth, SDL_Window *window, SDL_GLContext gl_context,
668670 synth->arp .octaves = 3 ;
669671 synth->arp .polyphonic = 1 ;
670672 synth->arp .hold = 1 ;
673+ synth->arp .gate_length = 0 .7f ;
671674 }
672675 ImGui::SameLine (); ImGui::Text (" Pop style" );
673676
@@ -677,6 +680,7 @@ void gui_draw(Synth *synth, SDL_Window *window, SDL_GLContext gl_context,
677680 synth->arp .octaves = 1 ;
678681 synth->arp .polyphonic = 0 ;
679682 synth->arp .hold = 0 ;
683+ synth->arp .gate_length = 0 .9f ;
680684 }
681685 ImGui::SameLine (); ImGui::Text (" Sequential" );
682686
@@ -689,6 +693,7 @@ void gui_draw(Synth *synth, SDL_Window *window, SDL_GLContext gl_context,
689693 synth->arp .octaves = 4 ;
690694 synth->arp .polyphonic = 1 ;
691695 synth->arp .hold = 1 ;
696+ synth->arp .gate_length = 0 .4f ;
692697 }
693698 ImGui::SameLine (); ImGui::Text (" 16th notes" );
694699
@@ -698,6 +703,7 @@ void gui_draw(Synth *synth, SDL_Window *window, SDL_GLContext gl_context,
698703 synth->arp .octaves = 3 ;
699704 synth->arp .polyphonic = 0 ;
700705 synth->arp .hold = 0 ;
706+ synth->arp .gate_length = 0 .6f ;
701707 }
702708 ImGui::SameLine (); ImGui::Text (" Unpredictable" );
703709
@@ -707,6 +713,7 @@ void gui_draw(Synth *synth, SDL_Window *window, SDL_GLContext gl_context,
707713 synth->arp .octaves = 2 ;
708714 synth->arp .polyphonic = 1 ;
709715 synth->arp .hold = 1 ;
716+ synth->arp .gate_length = 0 .8f ;
710717 }
711718 ImGui::SameLine (); ImGui::Text (" Progressive" );
712719
@@ -716,6 +723,7 @@ void gui_draw(Synth *synth, SDL_Window *window, SDL_GLContext gl_context,
716723 synth->arp .octaves = 1 ;
717724 synth->arp .polyphonic = 1 ;
718725 synth->arp .hold = 1 ;
726+ synth->arp .gate_length = 1 .0f ;
719727 }
720728 ImGui::SameLine (); ImGui::Text (" Chordal" );
721729
@@ -727,6 +735,7 @@ void gui_draw(Synth *synth, SDL_Window *window, SDL_GLContext gl_context,
727735 synth->arp .octaves = 2 ;
728736 synth->arp .polyphonic = 0 ;
729737 synth->arp .hold = 0 ;
738+ synth->arp .gate_length = 0 .3f ;
730739 }
731740 ImGui::SameLine (); ImGui::Text (" Driving" );
732741
@@ -736,6 +745,7 @@ void gui_draw(Synth *synth, SDL_Window *window, SDL_GLContext gl_context,
736745 synth->arp .octaves = 1 ;
737746 synth->arp .polyphonic = 0 ;
738747 synth->arp .hold = 0 ;
748+ synth->arp .gate_length = 0 .7f ;
739749 }
740750 ImGui::SameLine (); ImGui::Text (" Reggae" );
741751
@@ -746,6 +756,7 @@ void gui_draw(Synth *synth, SDL_Window *window, SDL_GLContext gl_context,
746756 synth->arp .octaves = 2 ;
747757 synth->arp .polyphonic = 1 ;
748758 synth->arp .hold = 0 ;
759+ synth->arp .gate_length = 0 .2f ;
749760 }
750761 ImGui::SameLine (); ImGui::Text (" Fast" );
751762
@@ -755,6 +766,7 @@ void gui_draw(Synth *synth, SDL_Window *window, SDL_GLContext gl_context,
755766 synth->arp .octaves = 2 ;
756767 synth->arp .polyphonic = 0 ;
757768 synth->arp .hold = 0 ;
769+ synth->arp .gate_length = 0 .5f ;
758770 }
759771 ImGui::SameLine (); ImGui::Text (" 8-bit" );
760772
@@ -766,6 +778,7 @@ void gui_draw(Synth *synth, SDL_Window *window, SDL_GLContext gl_context,
766778 synth->arp .octaves = 4 ;
767779 synth->arp .polyphonic = 0 ;
768780 synth->arp .hold = 0 ;
781+ synth->arp .gate_length = 0 .8f ;
769782 }
770783 ImGui::SameLine (); ImGui::Text (" Classic" );
771784
@@ -775,12 +788,14 @@ void gui_draw(Synth *synth, SDL_Window *window, SDL_GLContext gl_context,
775788 synth->arp .octaves = 3 ;
776789 synth->arp .polyphonic = 1 ;
777790 synth->arp .hold = 1 ;
791+ synth->arp .gate_length = 0 .9f ;
778792 }
779793 ImGui::SameLine (); ImGui::Text (" Ethereal" );
780794
781795 if (ImGui::Button (" Industrial" )) {
782796 synth->arp .mode = ARP_RANDOM;
783797 synth->arp .tempo = 160 .0f ;
798+ synth->arp .gate_length = 0 .2f ; // Staccato industrial feel
784799 synth->arp .octaves = 2 ;
785800 synth->arp .polyphonic = 0 ;
786801 synth->arp .hold = 0 ;
@@ -793,6 +808,7 @@ void gui_draw(Synth *synth, SDL_Window *window, SDL_GLContext gl_context,
793808 synth->arp .octaves = 2 ;
794809 synth->arp .polyphonic = 0 ;
795810 synth->arp .hold = 0 ;
811+ synth->arp .gate_length = 0 .6f ; // Medium gate for swing feel
796812 }
797813 ImGui::SameLine (); ImGui::Text (" Bouncing" );
798814
0 commit comments