From cea71f777f5da0bd159301680b69ce5fed62aba4 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Sun, 12 May 2019 13:54:37 +0200 Subject: Add tips for velocity and timing humanizers as well as the visualizer. Prefix all knob labels with 'p'. --- plugingui/humanizerframecontent.h | 6 +-- plugingui/maintab.cc | 66 +++++++++++++++++++++++++++++---- plugingui/maintab.h | 6 +-- plugingui/sampleselectionframecontent.h | 6 +-- plugingui/timingframecontent.h | 6 +-- 5 files changed, 70 insertions(+), 20 deletions(-) (limited to 'plugingui') diff --git a/plugingui/humanizerframecontent.h b/plugingui/humanizerframecontent.h index 048aea7..c8a49e7 100644 --- a/plugingui/humanizerframecontent.h +++ b/plugingui/humanizerframecontent.h @@ -56,9 +56,9 @@ private: GridLayout layout{this, 3, 1}; - LabeledControl attack{this, "Attack"}; // drummer strength - LabeledControl falloff{this, "Release"}; // regain - LabeledControl stddev{this, "StdDev"}; + LabeledControl attack{this, "pAttack"}; // drummer strength + LabeledControl falloff{this, "pRelease"}; // regain + LabeledControl stddev{this, "pStdDev"}; Knob attack_knob{&attack}; Knob falloff_knob{&falloff}; diff --git a/plugingui/maintab.cc b/plugingui/maintab.cc index e2ea9d2..1582d5c 100644 --- a/plugingui/maintab.cc +++ b/plugingui/maintab.cc @@ -29,6 +29,58 @@ namespace GUI { +constexpr char humanizer_tip[] = "\ +The first two knobs influence how DrumGizmo simulates the\n\ +stamina of a physical drummers, ie. the fact that they\n\ +loose power in their strokes when playing fast notes:\n\ + * pAttack: How quickly the velocity gets reduced when\n\ + playing fast notes.\n\ + Higher value results in faster velocity reduction.\n\ + * pRelease: How quickly the drummer regains the velocity\n\ + when there are spaces between the notes.\n\ + Higher value results in faster regain.\n\ +\n\ +The last knob controls the randomization of the sample selection:\n\ + * pStdDev: The standard-deviation for the sample selection.\n\ + Higher value makes it more likely that a sample further\n\ + away from the input velocity will be played."; + +constexpr char timing_tip[] = "\ +These three knobs influence how DrumGizmo simulates the tightness\n\ +of the drummer. The drifting is defined as the difference between\n\ +the perfect metronome (defined by the note positions) and the 'internal'\n\ +metronome of the drummer which can then drift back and forth in a\n\ +controlled fashion:\n\ + * pTightness: For each note how much is the drummer aloowed to drift.\n\ + Higher value make the drummer more tight, ie. drift less.\n\ + * pTimingRegain: Once the drifted, how fast does the drummer's 'internal'\n\ + metronome get back in sync with the perfect metronome.\n\ + Higher values moves the timng back towards perfect faster.\n\ + * pLaidback: Add or subtract a fixed delay in ms to all notes. This will\n\ + alter the feel of a beat.\n\ + Positive values are up-beat, negative values are back on the beat.\n\ +\n\ +NOTE: Enabling timing humanization will introduce a fixed delay into the\n\ +audio stream. So this feature should be disabled when using DrumGizmo in\n\ +a real-time schenario such as live with a MIDI drumkit."; + +constexpr char sampleselection_tip[] = "\ +These three knobs influence how DrumGizmo selects\n\ +its samples in the following way:\n\ + * pClose: The importance given to choosing a sample close\n\ + to the actual MIDI value (after humanization)\n\ + * pDiversity: The importance given to choosing samples\n\ + which haven't been played recently.\n\ + * pRandom: The amount of randomness added."; + +constexpr char visualizer_tip[] = "\ +This graph visualizes the time and velocity offsets of last note played\n\ +according to it's ideal input time and velocity.\n\ +The green lines indicate the ideal time and velocity positions.\n\ +The pink areas indicate the spread of the position and velocity of the\n\ +next note in line. The wider the area the more the note can move in time\n\ +and velocity."; + MainTab::MainTab(Widget* parent, Settings& settings, SettingsNotifier& settings_notifier, @@ -54,16 +106,14 @@ MainTab::MainTab(Widget* parent, add("Resampling", resampling_frame, resamplingframe_content, 20, 0); add("Velocity Humanizer", humanizer_frame, humanizerframe_content, 10, 1); - humanizer_frame.setHelpText("Hello World\nThis is a nice World\n... I think"); + humanizer_frame.setHelpText(humanizer_tip); add("Timing Humanizer", timing_frame, timingframe_content, 10, 1); - add("Sample Selection", sampleselection_frame, sampleselectionframe_content, 10, 1); - sampleselection_frame.setHelpText( - "These three knobs influence how DrumGizmo selects its samples in the following way:\n" - " * Close: importance given to choosing a sample close to the actual MIDI value (after humanization)\n" - " * Diversity: importance given to choosing samples which haven't been played recently\n" - " * Random: amount of randomness added" - ); + timing_frame.setHelpText(timing_tip); + add("Sample Selection", sampleselection_frame, + sampleselectionframe_content, 10, 1); + sampleselection_frame.setHelpText(sampleselection_tip); add("Visualizer", visualizer_frame, visualizerframe_content, 10, 1); + visualizer_frame.setHelpText(visualizer_tip); add("Bleed Control", bleedcontrol_frame, bleedcontrolframe_content, 9, 1); add("Disk Streaming", diskstreaming_frame, diskstreamingframe_content, 10, 1); diff --git a/plugingui/maintab.h b/plugingui/maintab.h index 3e5eb1f..f90d23a 100644 --- a/plugingui/maintab.h +++ b/plugingui/maintab.h @@ -70,13 +70,13 @@ private: FrameWidget drumkit_frame{this, false}; FrameWidget status_frame{this, false}; - FrameWidget humanizer_frame{this, true, true}; FrameWidget diskstreaming_frame{this, false}; FrameWidget bleedcontrol_frame{this, true}; FrameWidget resampling_frame{this, true}; - FrameWidget timing_frame{this, true}; + FrameWidget humanizer_frame{this, true, true}; + FrameWidget timing_frame{this, true, true}; FrameWidget sampleselection_frame{this, false, true}; - FrameWidget visualizer_frame{this, false}; + FrameWidget visualizer_frame{this, false, true}; DrumkitframeContent drumkitframe_content; StatusframeContent statusframe_content; diff --git a/plugingui/sampleselectionframecontent.h b/plugingui/sampleselectionframecontent.h index 20765ed..ebb1a02 100644 --- a/plugingui/sampleselectionframecontent.h +++ b/plugingui/sampleselectionframecontent.h @@ -60,9 +60,9 @@ private: GridLayout layout{this, 3, 1}; - LabeledControl f_close{this, "Close"}; - LabeledControl f_diverse{this, "Diverse"}; - LabeledControl f_random{this, "Random"}; + LabeledControl f_close{this, "pClose"}; + LabeledControl f_diverse{this, "pDiverse"}; + LabeledControl f_random{this, "pRandom"}; Knob f_close_knob{&f_close}; Knob f_diverse_knob{&f_diverse}; diff --git a/plugingui/timingframecontent.h b/plugingui/timingframecontent.h index 282f08f..c0f82df 100644 --- a/plugingui/timingframecontent.h +++ b/plugingui/timingframecontent.h @@ -68,9 +68,9 @@ private: GridLayout layout{this, 3, 1}; - LabeledControl tightness{this, "Tightness"}; - LabeledControl regain{this, "Timing Regain"}; - LabeledControl laidback{this, "Laid Back-ness"}; + LabeledControl tightness{this, "pTightness"}; + LabeledControl regain{this, "pTimingRegain"}; + LabeledControl laidback{this, "pLaidback"}; Knob tightness_knob{&tightness}; Knob regain_knob{®ain}; -- cgit v1.2.3