commit 13e05658be828404e334b09a615c1b8335c71f07
parent 0d8a1c315d07f0385adce5c28a0a68350bcf3f9f
Author: NeelKanth333 <79251492+NeelKanth333@users.noreply.github.com>
Date: Thu, 8 Apr 2021 07:22:10 +0530
fine control over depth slider (#177)
* added 0.1x button
* implemented code for finer control over depth slider
* implemented point1x control
* refinements
* added param attrib
Diffstat:
4 files changed, 269 insertions(+), 249 deletions(-)
diff --git a/Plugin/Source/GUI/Assets/gui.xml b/Plugin/Source/GUI/Assets/gui.xml
@@ -1,246 +1,260 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<magic>
- <Styles>
- <Style name="default">
- <Nodes/>
- <Classes>
- <plot-view border="2" background-color="black" border-color="silver" display="contents"/>
- <nomargin margin="0" padding="0" border="0"/>
- <group margin="5" padding="5" border="2" flex-direction="column"/>
- <Slider background-color="00000000" caption-color="FFFFFFFF" slider-text-outline="00000000"
- slider-type="rotary-horizontal-vertical" slider-textbox="textbox-below"
- lookAndFeel="MyLNF" slider-background="ff595c6b" slider-track="ff9cbcbd"
- slidertext-width="80" slidertext-height="17" caption-size="21.25">
- <media/>
- </Slider>
- </Classes>
- <Types>
- <Slider border="0" slider-type="rotary-horizontal-vertical" slider-textbox="textbox-below"/>
- <ToggleButton border="0" max-height="50" caption-size="0" text="Active"/>
- <TextButton border="0" max-height="50" caption-size="0"/>
- <ComboBox border="0" max-height="50" caption-size="0"/>
- <Plot border="0" margin="0" padding="0" background-color="00000000"
- radius="0"/>
- <XYDragComponent border="0" margin="0" padding="0" background-color="00000000"
- radius="0"/>
- </Types>
- </Style>
- </Styles>
- <View id="root" resizable="1" resize-corner="1" flex-direction="column"
- padding="0" width="580" height="620" background-color="FF8B3232"
- background-image="Background_svg" image-placement="stretch">
- <View max-height="100" padding="0" margin="0" background-color="">
- <View margin="2" padding="" background-color="00000000" flex-direction="column"
- flex-grow="0.75">
- <View flex-grow="0.333" background-color="00000000"/>
- <TitleComp background-color="00000000" title="Chow Tape Model" font="28"
- padding="3" flex-grow="1.0"/>
- <InfoComp background-color="00000000" text1="FFEAA92C" flex-grow="0.7"
- padding="0" margin="5" border=""/>
- <View background-color="00000000" flex-grow="0.33"/>
- </View>
- <Plot source="scope" plot-color="FFEAA92C" padding="0" background-color="33000000"
- plot-decay="0.0" plot-fill-color="FFFFFFFF"/>
- </View>
- <View padding="0" margin="" background-color="" lookAndFeel="">
- <View display="tabbed" padding="0" background-color="FF31323A" lookAndFeel="MyLNF">
- <View flex-direction="column" tab-color="" background-color="FF31323A"
- padding="0" tab-caption="Gain">
- <Slider caption="Input Gain [dB]" parameter="ingain" class="Slider" name="Input Gain"
- padding="0" margin="0" tooltip="Sets the input gain to the tape model in Decibels."/>
- <Slider caption="Dry/Wet" parameter="drywet" class="Slider" tooltip="Sets dry/wet mix of the entire plugin."
- padding="0" margin="0" name="Dry/Wet" slider-track="FF0BBDC2"/>
- <Slider caption="Output Gain [dB]" parameter="outgain" class="Slider"
- padding="0" margin="0" name="Output Gain" tooltip="Sets the output gain from the tape model in Decibels."/>
- </View>
- <View flex-direction="column" tab-color="" background-color="FF31323A"
- padding="0" tab-caption="Filters" margin="0">
- <Slider caption="Low Cut" parameter="ifilt_low" class="Slider" name="Low Cut"
- tooltip="Applies a low cut filter before applying tape processing."/>
- <Slider caption="High Cut" parameter="ifilt_high" class="Slider" name="High Cut"
- tooltip="Applies a high cut filter before applying tape processing."/>
- <TextButton parameter="ifilt_makeup" text="Makeup" background-color="00000000"
- margin="0" padding="5" button-color="00000000" flex-grow="0.35"
- button-on-color="FF8B3232" lookAndFeel="SpeedButtonLNF" name="Makeup"
- tooltip="Adds the signal cut out by the cut filters back to the processed signal."/>
- <PowerButton background-color="00000000" max-height="25" min-height="20" margin="0"
- padding="0" button-color="ff595c6b" button-on-color="FFEAA92C"
- parameter="ifilt_onoff" name="Filters On/Off" tooltip="Turns the pre-processing filters on or off."/>
- </View>
- </View>
- <View display="tabbed" padding="0" background-color="FF31323A" lookAndFeel="MyLNF">
- <View flex-direction="column" tab-color="" background-color="FF31323A"
- padding="0" tab-caption="Tape" margin="0">
- <View margin="0" padding="0" flex-grow="0.05" background-color="00000000"/>
- <Slider caption="Bias" parameter="width" class="Slider" name="Bias" padding="0"
- margin="0" tooltip="Controls the amount of bias used by the tape recorder. Turning down the bias can create "deadzone" distortion."/>
- <Slider caption="Saturation" parameter="sat" class="Slider" name="Saturation"
- padding="0" margin="0" tooltip="Controls the amount of tape saturation applied to the signal."/>
- <Slider caption="Drive" parameter="drive" class="Slider" name="Drive"
- padding="0" margin="0" tooltip="Controls the amount of amplification done during the tape magnetisation process. Note that unlike the "Input Gain", this amplification is highly nonlinear."/>
- <PowerButton flex-grow="1.0" margin="0" padding="0" background-color="00000000"
- button-on-color="FFEAA92C" min-height="20" max-height="25" button-color="ff595c6b"
- parameter="hyst_onoff" name="Tape On/Off" tooltip="Turns the tape processing on or off."/>
- </View>
- <View flex-direction="column" tab-color="" background-color="FF31323A"
- padding="0" tab-caption="Tone" margin="0">
- <View margin="0" padding="0" flex-grow="0.05" background-color="00000000"/>
- <Slider caption="Treble" parameter="h_treble" class="Slider" name="Treble"
- padding="0" margin="0" tooltip="Controls the treble response of the pre/post-emphasis filters."/>
- <Slider caption="Bass" parameter="h_bass" class="Slider" name="Bass"
- padding="0" margin="0" tooltip="Controls the bass response of the pre/post-emphasis filters."/>
- <Slider caption="Frequency" parameter="h_tfreq" class="Slider" name="Transition Frequency"
- padding="0" margin="0" tooltip="Controls the transition frequency between the bass and treble sections of the EQ."/>
- <PowerButton max-height="25" min-height="20" margin="0" padding="0" background-color="00000000"
- button-color="ff595c6b" button-on-color="FFEAA92C" parameter="tone_onoff"
- name="Tone On/Off" tooltip="Turns the tone control processing on or off."/>
- </View>
- </View>
- <View display="tabbed" padding="0" background-color="FF31323A" flex-grow="1.5"
- lookAndFeel="MyLNF">
- <View flex-direction="column" tab-caption="Loss" tab-color="" background-color="FF31323A"
- padding="0" margin="0">
- <Slider caption="Gap [microns]" parameter="gap" slider-type="linear-horizontal"
- class="Slider" padding="0" slider-background="ff595c6b" slider-track="ff9cbcbd"
- name="Gap" tooltip="Sets the width of the playhead gap. Certain frequencies that resonate with the gap width will be emphasized."
- slidertext-height="18" caption-placement="top-left"/>
- <Slider caption="Thickness [microns]" parameter="thick" class="Slider"
- slider-type="linear-horizontal" padding="0" slider-background="ff595c6b"
- slider-track="ff9cbcbd" name="Thickness" tooltip="Sets the thickness of the tape. Thicker tape has a more muted high-frequency response."
- caption-placement="top-left"/>
- <Slider caption="Spacing [microns]" parameter="spacing" slider-type="linear-horizontal"
- class="Slider" padding="0" slider-background="ff595c6b" slider-track="ff9cbcbd"
- name="Spacing" tooltip="Sets the spacing between the tape and the playhead. A larger spacing means more high frequency signal is lost during playback."
- caption-placement="top-left"/>
- <Slider caption="Azimuth [degrees]" parameter="azimuth" slider-type="linear-horizontal"
- class="Slider" padding="0" slider-background="ff595c6b" slider-track="ff9cbcbd"
- name="Azimuth" tooltip="Sets the azimuth angle between the playhead and the tape. This can create a stereo widening effect at higher tape speeds."
- caption-placement="top-left"/>
- <Slider caption="Speed [ips]" parameter="speed" slider-type="linear-horizontal"
- class="Slider" padding="0" slider-background="ff595c6b" slider-track="ff9cbcbd"
- name="Speed" tooltip="Sets the speed of the tape as it affects the playhead loss effects. Note that this control does not affect the wow/flutter processing."
- caption-placement="top-left"/>
- <View flex-grow="0.53" margin="0" padding="2" background-color="00000000">
- <TextButton margin="0" padding="2" text="3.75" button-color="00000000" background-color="00000000"
- onClick="set_speed_3.75" lookAndFeel="SpeedButtonLNF" button-on-color="00000000"
- name="3.75 ips" tooltip="Snaps the tape speed to 3.75 inches per second."/>
- <TextButton text="7.5" margin="0" padding="2" button-color="00000000" background-color="00000000"
- onClick="set_speed_7.50" lookAndFeel="SpeedButtonLNF" button-on-color="00000000"
- name="7.5 ips" tooltip="Snaps the tape speed to 7.5 inches per second."/>
- <TextButton margin="0" padding="2" text="15" button-color="00000000" button-on-color="00000000"
- background-color="00000000" onClick="set_speed_15.00" lookAndFeel="SpeedButtonLNF"
- name="15 ips" tooltip="Snaps the tape speed to 15 inches per second."/>
- <TextButton margin="0" padding="2" background-color="00000000" onClick="set_speed_30.00"
- lookAndFeel="SpeedButtonLNF" text="30" button-color="00000000"
- button-on-color="00000000" name="30 ips" tooltip="Snaps the tape speed to 30 inches per second."/>
- </View>
- <View flex-grow="0.01" background-color="00000000"/>
- <PowerButton margin="0" padding="0" background-color="00000000" max-height="25"
- min-height="20" button-color="ff595c6b" button-on-color="FFEAA92C"
- parameter="loss_onoff" name="Loss On/Off" tooltip="Turns the loss filters on or off."/>
- </View>
- <View tab-caption="Degrade" padding="0" flex-direction="column" background-color="FF31323A"
- margin="0">
- <View margin="0" padding="0" flex-grow="0.15" background-color="00000000"/>
- <Slider parameter="deg_depth" caption="Depth" class="Slider" name="Depth"
- tooltip="Sets the depth of the tape degradation."
- margin="0" slider-type="linear-horizontal" max-height="70"/>
- <View margin="0" padding="0" flex-grow="0.1" background-color="00000000"/>
- <Slider caption="Amount" parameter="deg_amt" class="Slider" name="Amount"
- margin="0" tooltip="Sets the amount of the tape that is degraded. At large values all of the tape will be affected, at small values only some sections will be affected."
- slider-type="linear-horizontal" max-height="70"/>
- <View margin="0" padding="0" flex-grow="0.1" background-color="00000000"/>
- <Slider parameter="deg_var" caption="Variance" class="Slider" name="Variance"
- margin="0" tooltip="Sets the variance of the tape degradation. Use lower values for uniform degradation, or higher values for variation across different sections of tape."
- slider-type="linear-horizontal" max-height="70"/>
- <View margin="0" padding="0" flex-grow="0.1" background-color="00000000"/>
- <Slider parameter="deg_env" caption="Envelope" class="Slider" name="Envelope"
- margin="0" tooltip="Sets the amount of amplitude envelope applied to the tape degradation. At 0, the degradation will have no envelope."
- slider-type="linear-horizontal" max-height="70"/>
- <View margin="0" padding="0" flex-grow="0.15" background-color="00000000"/>
- <PowerButton margin="0" padding="0" background-color="00000000" max-height="25"
- min-height="20" button-color="ff595c6b" button-on-color="FFEAA92C"
- parameter="deg_onoff" name="Degrade On/Off" tooltip="Turns the degradation processing on or off."/>
- </View>
- <View tab-caption="CHEW" padding="0" flex-direction="column" background-color="FF31323A"
- margin="0">
- <View margin="0" padding="0" flex-grow="0.05" background-color="00000000"/>
- <Slider parameter="chew_depth" caption="Depth" padding="0" margin="0"
- class="Slider" name="Chew Depth" tooltip="Controls how intensely the tape has been chewed up."/>
- <Slider caption="Frequency" parameter="chew_freq" padding="0" margin="0"
- class="Slider" name="Chew Frequency" tooltip="Controls the amount of time in between chewed-up sections of tape."/>
- <Slider caption="Variance" parameter="chew_var" padding="0" margin="0"
- class="Slider" name="Chew Variance" tooltip="Controls the amount of variance in the chew frequency."/>
- <PowerButton margin="0" padding="0" background-color="00000000" max-height="25"
- min-height="20" button-color="ff595c6b" button-on-color="FFEAA92C"
- parameter="chew_onoff" name="Chew On/Off" tooltip="Turns the chew processing on or off."/>
- </View>
- </View>
- <View display="tabbed" padding="0" margin="2" background-color="FF31323A" lookAndFeel="MyLNF">
- <View tab-caption="Flutter" flex-direction="column" background-color="FF31323A">
- <FlutterMenu margin="0" padding="0" background-color="00000000"
- max-height="30" name="Flutter Sync" tooltip="Snaps the flutter rate to a synchronized value."/>
- <View margin="0" padding="0" flex-grow="0.1" background-color="00000000"/>
- <Slider caption="Depth" parameter="depth" max-height="150" class="Slider"
- name="Flutter Depth" tooltip="Sets depth of the tape flutter."
- margin="0" padding="0"/>
- <Slider caption="Rate" parameter="rate" class="Slider" max-height="150"
- name="Flutter Rate" tooltip="Sets the rate of the tape flutter."
- margin="0" padding="0"/>
- <Plot source="flutter" plot-decay="0.8" background-color="FF1E1F22"
- flex-grow="0.8" plot-color="FFEAA92C" plot-fill-color="CC8B3232"/>
- <PowerButton margin="0" padding="0" background-color="00000000" max-height="25"
- min-height="20" button-color="ff595c6b" button-on-color="FFEAA92C"
- parameter="flutter_onoff" name="Wow/Flutter On/Off" tooltip="Turns the wow and flutter processing on or off."/>
- </View>
- <View tab-caption="Wow" flex-direction="column" background-color="FF31323A" padding="0" margin="3">
- <WowMenu margin="0" padding="0" background-color="00000000"
- max-height="30" name="Wow Sync" tooltip="Snaps the wow rate to a synchronized value."/>
- <View margin="0" padding="0" flex-grow="0.1" background-color="00000000"/>
- <Slider caption="Depth" parameter="wow_depth" max-height="150" class="Slider"
- name="Wow Depth" tooltip="Sets the depth of the tape wow." margin="0"
- padding="0" slider-type="linear-horizontal"/>
- <Slider caption="Rate" parameter="wow_rate" class="Slider" max-height="150"
- name="Wow Rate" tooltip="Sets the rate of the tape wow." margin="0"
- padding="0" slider-type="linear-horizontal"/>
- <Slider caption="Variance" parameter="wow_var" class="Slider" max-height="150"
- name="Wow Variance" tooltip="Sets the amount of variance in the tape wow." margin="0"
- padding="0" slider-type="linear-horizontal"/>
- <Slider caption="Drift" parameter="wow_drift" class="Slider" max-height="150"
- name="Wow Drift" tooltip="Sets the amount of drift in the tape wow." margin="0"
- padding="0" slider-type="linear-horizontal"/>
- <Plot source="wow" plot-decay="0.8" flex-grow="1.45" background-color="FF1E1F22"
- plot-color="FFEAA92C" plot-fill-color="CC8B3232"/>
- <PowerButton margin="0" padding="0" background-color="00000000" max-height="25"
- min-height="20" button-color="ff595c6b" button-on-color="FFEAA92C"
- parameter="flutter_onoff" name="Wow/Flutter On/Off" tooltip="Turns the wow and flutter processing on or off."/>
- </View>
- </View>
- </View>
- <TooltipComp flex-grow="0.15" background-color="00000000" tooltip-name="FFEAA92C"
- tooltip-text="FFFFFFFF"/>
- <View max-height="35" margin="0" padding="0" background-color="FF31323A"
- flex-grow="0.1">
- <View background-color="00000000" flex-grow="0.1"/>
- <ComboBox caption="Oversampling" parameter="os" class="Slider" caption-size="0"
- padding="0" combo-text="FFEAA92C" combo-background="00000000"
- max-height="100" margin="" lookAndFeel="ComboBoxLNF" name="Oversampling"
- tooltip="Sets the amount of oversampling used for the hysteresis processing. More oversampling will reduce aliasing artifacts, but requires more CPU resources."/>
- <ComboBox lookAndFeel="ComboBoxLNF" padding="0" border="0" background-color="00000000"
- name="Hysteresis Mode" caption="Hysteresis Mode" caption-size="0"
- combo-text="FFEAA92C" caption-color="FFFFFFFF" max-height="100"
- margin="" parameter="mode" combo-background="00000000" tooltip="Selects the mode to use for hysteresis processing. Choose between 2nd/4th order Runge-Kutta method, 4 or 8 Newton-Raphson iterations, or revert to version 1.0."/>
- <View flex-grow="0.1" background-color="00000000"/>
- <ComboBox lookAndFeel="ComboBoxLNF" padding="0" border="0" background-color="00000000"
- name="Mix Group" caption="Mix Group" caption-size="0" flex-grow="0.85"
- combo-text="FFEAA92C" caption-color="FFFFFFFF" max-height="100"
- margin="0" parameter="mix_group" combo-background="00000000"
- tooltip="Adds this plugin to a mix group. When the plugin is added to a group, the group parameters will be copied to this plugin, and their parameters will remain in sync."/>
- <MixGroupViz flex-grow="0.3" margin="5" padding="0" background-color="00000000"/>
- <presets margin="5" padding="0" background-color="00000000" border-color="595C6B"
- radius="" border="" lookAndFeel="PresetsLNF" flex-grow="1.9"
- max-height="100"/>
- </View>
- </View>
-</magic>
+<?xml version="1.0" encoding="UTF-8"?>
+
+<magic>
+ <Styles>
+ <Style name="default">
+ <Nodes/>
+ <Classes>
+ <plot-view border="2" background-color="black" border-color="silver" display="contents"/>
+ <nomargin margin="0" padding="0" border="0"/>
+ <group margin="5" padding="5" border="2" flex-direction="column"/>
+ <Slider background-color="00000000" caption-color="FFFFFFFF" slider-text-outline="00000000"
+ slider-type="rotary-horizontal-vertical" slider-textbox="textbox-below"
+ lookAndFeel="MyLNF" slider-background="ff595c6b" slider-track="ff9cbcbd"
+ slidertext-width="80" slidertext-height="17" caption-size="21.25">
+ <media/>
+ </Slider>
+ </Classes>
+ <Types>
+ <Slider border="0" slider-type="rotary-horizontal-vertical" slider-textbox="textbox-below"/>
+ <ToggleButton border="0" max-height="50" caption-size="0" text="Active"/>
+ <TextButton border="0" max-height="50" caption-size="0"/>
+ <ComboBox border="0" max-height="50" caption-size="0"/>
+ <Plot border="0" margin="0" padding="0" background-color="00000000"
+ radius="0"/>
+ <XYDragComponent border="0" margin="0" padding="0" background-color="00000000"
+ radius="0"/>
+ </Types>
+ </Style>
+ </Styles>
+ <View id="root" resizable="1" resize-corner="1" flex-direction="column"
+ padding="0" width="580" height="620" background-color="FF8B3232"
+ background-image="Background_svg" image-placement="stretch">
+ <View max-height="100" padding="0" margin="0" background-color="">
+ <View margin="2" padding="" background-color="00000000" flex-direction="column"
+ flex-grow="0.75">
+ <View flex-grow="0.333" background-color="00000000"/>
+ <TitleComp background-color="00000000" title="Chow Tape Model" font="28"
+ padding="3" flex-grow="1.0"/>
+ <InfoComp background-color="00000000" text1="FFEAA92C" flex-grow="0.7"
+ padding="0" margin="5" border=""/>
+ <View background-color="00000000" flex-grow="0.33"/>
+ </View>
+ <Plot source="scope" plot-color="FFEAA92C" padding="0" background-color="33000000"
+ plot-decay="0.0" plot-fill-color="FFFFFFFF"/>
+ </View>
+ <View padding="0" margin="" background-color="" lookAndFeel="">
+ <View display="tabbed" padding="0" background-color="FF31323A" lookAndFeel="MyLNF">
+ <View flex-direction="column" tab-color="" background-color="FF31323A"
+ padding="0" tab-caption="Gain">
+ <Slider caption="Input Gain [dB]" parameter="ingain" class="Slider" name="Input Gain"
+ padding="0" margin="0" tooltip="Sets the input gain to the tape model in Decibels."/>
+ <Slider caption="Dry/Wet" parameter="drywet" class="Slider" tooltip="Sets dry/wet mix of the entire plugin."
+ padding="0" margin="0" name="Dry/Wet" slider-track="FF0BBDC2"/>
+ <Slider caption="Output Gain [dB]" parameter="outgain" class="Slider"
+ padding="0" margin="0" name="Output Gain" tooltip="Sets the output gain from the tape model in Decibels."/>
+ </View>
+ <View flex-direction="column" tab-color="" background-color="FF31323A"
+ padding="0" tab-caption="Filters" margin="0">
+ <Slider caption="Low Cut" parameter="ifilt_low" class="Slider" name="Low Cut"
+ tooltip="Applies a low cut filter before applying tape processing."/>
+ <Slider caption="High Cut" parameter="ifilt_high" class="Slider" name="High Cut"
+ tooltip="Applies a high cut filter before applying tape processing."/>
+ <TextButton parameter="ifilt_makeup" text="Makeup" background-color="00000000"
+ margin="0" padding="5" button-color="FF33343D" flex-grow="0.35"
+ button-on-color="FFB41717" lookAndFeel="LookAndFeel_V3" name="Makeup"
+ tooltip="Adds the signal cut out by the cut filters back to the processed signal."
+ button-off-text="FFFFFFFF" button-on-text="FFFFFFFF"/>
+ <PowerButton background-color="00000000" max-height="25" min-height="20" margin="0"
+ padding="0" button-color="ff595c6b" button-on-color="FFEAA92C"
+ parameter="ifilt_onoff" name="Filters On/Off" tooltip="Turns the pre-processing filters on or off."/>
+ </View>
+ </View>
+ <View display="tabbed" padding="0" background-color="FF31323A" lookAndFeel="MyLNF">
+ <View flex-direction="column" tab-color="" background-color="FF31323A"
+ padding="0" tab-caption="Tape" margin="0">
+ <View margin="0" padding="0" flex-grow="0.05" background-color="00000000"/>
+ <Slider caption="Bias" parameter="width" class="Slider" name="Bias" padding="0"
+ margin="0" tooltip="Controls the amount of bias used by the tape recorder. Turning down the bias can create "deadzone" distortion."/>
+ <Slider caption="Saturation" parameter="sat" class="Slider" name="Saturation"
+ padding="0" margin="0" tooltip="Controls the amount of tape saturation applied to the signal."/>
+ <Slider caption="Drive" parameter="drive" class="Slider" name="Drive"
+ padding="0" margin="0" tooltip="Controls the amount of amplification done during the tape magnetisation process. Note that unlike the "Input Gain", this amplification is highly nonlinear."/>
+ <PowerButton flex-grow="1.0" margin="0" padding="0" background-color="00000000"
+ button-on-color="FFEAA92C" min-height="20" max-height="25" button-color="ff595c6b"
+ parameter="hyst_onoff" name="Tape On/Off" tooltip="Turns the tape processing on or off."/>
+ </View>
+ <View flex-direction="column" tab-color="" background-color="FF31323A"
+ padding="0" tab-caption="Tone" margin="0">
+ <View margin="0" padding="0" flex-grow="0.05" background-color="00000000"/>
+ <Slider caption="Treble" parameter="h_treble" class="Slider" name="Treble"
+ padding="0" margin="0" tooltip="Controls the treble response of the pre/post-emphasis filters."/>
+ <Slider caption="Bass" parameter="h_bass" class="Slider" name="Bass"
+ padding="0" margin="0" tooltip="Controls the bass response of the pre/post-emphasis filters."/>
+ <Slider caption="Frequency" parameter="h_tfreq" class="Slider" name="Transition Frequency"
+ padding="0" margin="0" tooltip="Controls the transition frequency between the bass and treble sections of the EQ."/>
+ <PowerButton max-height="25" min-height="20" margin="0" padding="0" background-color="00000000"
+ button-color="ff595c6b" button-on-color="FFEAA92C" parameter="tone_onoff"
+ name="Tone On/Off" tooltip="Turns the tone control processing on or off."/>
+ </View>
+ </View>
+ <View display="tabbed" padding="0" background-color="FF31323A" flex-grow="1.5"
+ lookAndFeel="MyLNF">
+ <View flex-direction="column" tab-caption="Loss" tab-color="" background-color="FF31323A"
+ padding="0" margin="0">
+ <Slider caption="Gap [microns]" parameter="gap" slider-type="linear-horizontal"
+ class="Slider" padding="0" slider-background="ff595c6b" slider-track="ff9cbcbd"
+ name="Gap" tooltip="Sets the width of the playhead gap. Certain frequencies that resonate with the gap width will be emphasized."
+ slidertext-height="18" caption-placement="top-left"/>
+ <Slider caption="Thickness [microns]" parameter="thick" class="Slider"
+ slider-type="linear-horizontal" padding="0" slider-background="ff595c6b"
+ slider-track="ff9cbcbd" name="Thickness" tooltip="Sets the thickness of the tape. Thicker tape has a more muted high-frequency response."
+ caption-placement="top-left"/>
+ <Slider caption="Spacing [microns]" parameter="spacing" slider-type="linear-horizontal"
+ class="Slider" padding="0" slider-background="ff595c6b" slider-track="ff9cbcbd"
+ name="Spacing" tooltip="Sets the spacing between the tape and the playhead. A larger spacing means more high frequency signal is lost during playback."
+ caption-placement="top-left"/>
+ <Slider caption="Azimuth [degrees]" parameter="azimuth" slider-type="linear-horizontal"
+ class="Slider" padding="0" slider-background="ff595c6b" slider-track="ff9cbcbd"
+ name="Azimuth" tooltip="Sets the azimuth angle between the playhead and the tape. This can create a stereo widening effect at higher tape speeds."
+ caption-placement="top-left"/>
+ <Slider caption="Speed [ips]" parameter="speed" slider-type="linear-horizontal"
+ class="Slider" padding="0" slider-background="ff595c6b" slider-track="ff9cbcbd"
+ name="Speed" tooltip="Sets the speed of the tape as it affects the playhead loss effects. Note that this control does not affect the wow/flutter processing."
+ caption-placement="top-left"/>
+ <View flex-grow="0.53" margin="0" padding="2" background-color="00000000">
+ <TextButton margin="0" padding="2" text="3.75" button-color="00000000" background-color="00000000"
+ onClick="set_speed_3.75" lookAndFeel="SpeedButtonLNF" button-on-color="00000000"
+ name="3.75 ips" tooltip="Snaps the tape speed to 3.75 inches per second."/>
+ <TextButton text="7.5" margin="0" padding="2" button-color="00000000" background-color="00000000"
+ onClick="set_speed_7.50" lookAndFeel="SpeedButtonLNF" button-on-color="00000000"
+ name="7.5 ips" tooltip="Snaps the tape speed to 7.5 inches per second."/>
+ <TextButton margin="0" padding="2" text="15" button-color="00000000" button-on-color="00000000"
+ background-color="00000000" onClick="set_speed_15.00" lookAndFeel="SpeedButtonLNF"
+ name="15 ips" tooltip="Snaps the tape speed to 15 inches per second."/>
+ <TextButton margin="0" padding="2" background-color="00000000" onClick="set_speed_30.00"
+ lookAndFeel="SpeedButtonLNF" text="30" button-color="00000000"
+ button-on-color="00000000" name="30 ips" tooltip="Snaps the tape speed to 30 inches per second."/>
+ </View>
+ <View flex-grow="0.01" background-color="00000000"/>
+ <PowerButton margin="0" padding="0" background-color="00000000" max-height="25"
+ min-height="20" button-color="ff595c6b" button-on-color="FFEAA92C"
+ parameter="loss_onoff" name="Loss On/Off" tooltip="Turns the loss filters on or off."/>
+ </View>
+ <View tab-caption="Degrade" padding="0" flex-direction="column" background-color="FF31323A"
+ margin="0">
+ <View flex-direction="column" max-height="140" background-color="FF1E1F22"
+ flex-grow="2.0" flex-shrink="2.0" padding="0">
+ <View max-height="5"/>
+ <Slider parameter="deg_depth" caption="Depth" class="Slider" name="Depth"
+ tooltip="Sets the depth of the tape degradation." slider-type="linear-horizontal"
+ max-height="70" margin="0" min-height="0" slidertext-width="80"
+ flex-grow="2.5" flex-shrink="2.5" padding=""/>
+ <TextButton flex-align-self="auto" parameter="deg_point1x" max-height="160" background-color="FF31323A"
+ button-on-color="FFB41717" button-color="FF33343D" text="0.1x"
+ button-off-text="FFFFFFFF" button-on-text="FFFFFFFF" height=""
+ width="" min-height="0.0" padding="0" caption-placement="centred"
+ min-width="" margin="5" caption="" flex-grow="1.0" flex-shrink="0.1"
+ name="0.1x" lookAndFeel="LookAndFeel_V3" tooltip="Scales the Depth value by 0.1 to allow for more subtle degradation"/>
+ </View>
+ <View margin="0" padding="0" flex-grow="0.1" background-color="00000000"/>
+ <Slider caption="Amount" parameter="deg_amt" class="Slider" name="Amount"
+ margin="0" tooltip="Sets the amount of the tape that is degraded. At large values all of the tape will be affected, at small values only some sections will be affected."
+ slider-type="linear-horizontal" max-height="70"/>
+ <View margin="0" padding="0" flex-grow="0.1" background-color="00000000"/>
+ <Slider parameter="deg_var" caption="Variance" class="Slider" name="Variance"
+ margin="0" tooltip="Sets the variance of the tape degradation. Use lower values for uniform degradation, or higher values for variation across different sections of tape."
+ slider-type="linear-horizontal" max-height="70"/>
+ <View margin="0" padding="0" flex-grow="0.1" background-color="00000000"/>
+ <Slider parameter="deg_env" caption="Envelope" class="Slider" name="Envelope"
+ margin="0" tooltip="Sets the amount of amplitude envelope applied to the tape degradation. At 0, the degradation will have no envelope."
+ slider-type="linear-horizontal" max-height="70"/>
+ <View margin="0" padding="0" flex-grow="0.15" background-color="00000000"/>
+ <PowerButton margin="0" padding="0" background-color="00000000" max-height="25"
+ min-height="20" button-color="ff595c6b" button-on-color="FFEAA92C"
+ parameter="deg_onoff" name="Degrade On/Off" tooltip="Turns the degradation processing on or off."/>
+ </View>
+ <View tab-caption="CHEW" padding="0" flex-direction="column" background-color="FF31323A"
+ margin="0">
+ <View margin="0" padding="0" flex-grow="0.05" background-color="00000000"/>
+ <Slider parameter="chew_depth" caption="Depth" padding="0" margin="0"
+ class="Slider" name="Chew Depth" tooltip="Controls how intensely the tape has been chewed up."/>
+ <Slider caption="Frequency" parameter="chew_freq" padding="0" margin="0"
+ class="Slider" name="Chew Frequency" tooltip="Controls the amount of time in between chewed-up sections of tape."/>
+ <Slider caption="Variance" parameter="chew_var" padding="0" margin="0"
+ class="Slider" name="Chew Variance" tooltip="Controls the amount of variance in the chew frequency."/>
+ <PowerButton margin="0" padding="0" background-color="00000000" max-height="25"
+ min-height="20" button-color="ff595c6b" button-on-color="FFEAA92C"
+ parameter="chew_onoff" name="Chew On/Off" tooltip="Turns the chew processing on or off."/>
+ </View>
+ </View>
+ <View display="tabbed" padding="0" margin="2" background-color="FF31323A"
+ lookAndFeel="MyLNF">
+ <View tab-caption="Flutter" flex-direction="column" background-color="FF31323A">
+ <FlutterMenu margin="0" padding="0" background-color="00000000" max-height="30"
+ name="Flutter Sync" tooltip="Snaps the flutter rate to a synchronized value."/>
+ <View margin="0" padding="0" flex-grow="0.1" background-color="00000000"/>
+ <Slider caption="Depth" parameter="depth" max-height="150" class="Slider"
+ name="Flutter Depth" tooltip="Sets depth of the tape flutter."
+ margin="0" padding="0"/>
+ <Slider caption="Rate" parameter="rate" class="Slider" max-height="150"
+ name="Flutter Rate" tooltip="Sets the rate of the tape flutter."
+ margin="0" padding="0"/>
+ <Plot source="flutter" plot-decay="0.8" background-color="FF1E1F22"
+ flex-grow="0.8" plot-color="FFEAA92C" plot-fill-color="CC8B3232"/>
+ <PowerButton margin="0" padding="0" background-color="00000000" max-height="25"
+ min-height="20" button-color="ff595c6b" button-on-color="FFEAA92C"
+ parameter="flutter_onoff" name="Wow/Flutter On/Off" tooltip="Turns the wow and flutter processing on or off."/>
+ </View>
+ <View tab-caption="Wow" flex-direction="column" background-color="FF31323A"
+ padding="0" margin="3">
+ <WowMenu margin="0" padding="0" background-color="00000000" max-height="30"
+ name="Wow Sync" tooltip="Snaps the wow rate to a synchronized value."/>
+ <View margin="0" padding="0" flex-grow="0.1" background-color="00000000"/>
+ <Slider caption="Depth" parameter="wow_depth" max-height="150" class="Slider"
+ name="Wow Depth" tooltip="Sets the depth of the tape wow." margin="0"
+ padding="0" slider-type="linear-horizontal"/>
+ <Slider caption="Rate" parameter="wow_rate" class="Slider" max-height="150"
+ name="Wow Rate" tooltip="Sets the rate of the tape wow." margin="0"
+ padding="0" slider-type="linear-horizontal"/>
+ <Slider caption="Variance" parameter="wow_var" class="Slider" max-height="150"
+ name="Wow Variance" tooltip="Sets the amount of variance in the tape wow."
+ margin="0" padding="0" slider-type="linear-horizontal"/>
+ <Slider caption="Drift" parameter="wow_drift" class="Slider" max-height="150"
+ name="Wow Drift" tooltip="Sets the amount of drift in the tape wow."
+ margin="0" padding="0" slider-type="linear-horizontal"/>
+ <Plot source="wow" plot-decay="0.8" flex-grow="1.45" background-color="FF1E1F22"
+ plot-color="FFEAA92C" plot-fill-color="CC8B3232"/>
+ <PowerButton margin="0" padding="0" background-color="00000000" max-height="25"
+ min-height="20" button-color="ff595c6b" button-on-color="FFEAA92C"
+ parameter="flutter_onoff" name="Wow/Flutter On/Off" tooltip="Turns the wow and flutter processing on or off."/>
+ </View>
+ </View>
+ </View>
+ <TooltipComp flex-grow="0.15" background-color="00000000" tooltip-name="FFEAA92C"
+ tooltip-text="FFFFFFFF"/>
+ <View max-height="35" margin="0" padding="0" background-color="FF31323A"
+ flex-grow="0.1">
+ <View background-color="00000000" flex-grow="0.1"/>
+ <ComboBox caption="Oversampling" parameter="os" class="Slider" caption-size="0"
+ padding="0" combo-text="FFEAA92C" combo-background="00000000"
+ max-height="100" margin="" lookAndFeel="ComboBoxLNF" name="Oversampling"
+ tooltip="Sets the amount of oversampling used for the hysteresis processing. More oversampling will reduce aliasing artifacts, but requires more CPU resources."/>
+ <ComboBox lookAndFeel="ComboBoxLNF" padding="0" border="0" background-color="00000000"
+ name="Hysteresis Mode" caption="Hysteresis Mode" caption-size="0"
+ combo-text="FFEAA92C" caption-color="FFFFFFFF" max-height="100"
+ margin="" parameter="mode" combo-background="00000000" tooltip="Selects the mode to use for hysteresis processing. Choose between 2nd/4th order Runge-Kutta method, 4 or 8 Newton-Raphson iterations, or revert to version 1.0."/>
+ <View flex-grow="0.1" background-color="00000000"/>
+ <ComboBox lookAndFeel="ComboBoxLNF" padding="0" border="0" background-color="00000000"
+ name="Mix Group" caption="Mix Group" caption-size="0" flex-grow="0.85"
+ combo-text="FFEAA92C" caption-color="FFFFFFFF" max-height="100"
+ margin="0" parameter="mix_group" combo-background="00000000"
+ tooltip="Adds this plugin to a mix group. When the plugin is added to a group, the group parameters will be copied to this plugin, and their parameters will remain in sync."/>
+ <MixGroupViz flex-grow="0.3" margin="5" padding="0" background-color="00000000"/>
+ <presets margin="5" padding="0" background-color="00000000" border-color="595C6B"
+ radius="" border="" lookAndFeel="PresetsLNF" flex-grow="1.9"
+ max-height="100"/>
+ </View>
+ </View>
+</magic>
+
diff --git a/Plugin/Source/GUI/OnOffManager.cpp b/Plugin/Source/GUI/OnOffManager.cpp
@@ -9,7 +9,7 @@ static const std::unordered_map<String, StringArray> triggerMap {
{ String ("tone_onoff"), StringArray ({ "Bass", "Treble", "Transition Frequency" }) },
{ String ("loss_onoff"), StringArray ({ "Gap", "Thickness", "Spacing", "Speed", "3.75 ips", "7.5 ips", "15 ips", "30 ips" }) },
{ String ("chew_onoff"), StringArray ({ "Chew Depth", "Chew Frequency", "Chew Variance" }) },
- { String ("deg_onoff"), StringArray ({ "Depth", "Amount", "Variance", "Envelope" }) },
+ { String ("deg_onoff"), StringArray ({ "Depth", "Amount", "Variance", "Envelope", "0.1x" }) },
{ String ("flutter_onoff"), StringArray ({ "Flutter Depth", "Flutter Rate", "Wow Depth", "Wow Rate", "Wow Variance", "Wow Drift" }) },
};
diff --git a/Plugin/Source/Processors/Degrade/DegradeProcessor.cpp b/Plugin/Source/Processors/Degrade/DegradeProcessor.cpp
@@ -2,6 +2,7 @@
DegradeProcessor::DegradeProcessor (AudioProcessorValueTreeState& vts)
{
+ point1xParam = vts.getRawParameterValue ("deg_point1x");
onOffParam = vts.getRawParameterValue ("deg_onoff");
depthParam = vts.getRawParameterValue ("deg_depth");
amtParam = vts.getRawParameterValue ("deg_amt");
@@ -11,6 +12,7 @@ DegradeProcessor::DegradeProcessor (AudioProcessorValueTreeState& vts)
void DegradeProcessor::createParameterLayout (std::vector<std::unique_ptr<RangedAudioParameter>>& params)
{
+ params.push_back (std::make_unique<AudioParameterBool> ("deg_point1x", "Degrade Point1x", false));
params.push_back (std::make_unique<AudioParameterBool> ("deg_onoff", "Degrade On/Off", false));
params.push_back (std::make_unique<AudioParameterFloat> ("deg_depth", "Degrade Depth", 0.0f, 1.0f, 0.0f));
params.push_back (std::make_unique<AudioParameterFloat> ("deg_amt", "Degrade Amount", 0.0f, 1.0f, 0.0f));
@@ -20,12 +22,15 @@ void DegradeProcessor::createParameterLayout (std::vector<std::unique_ptr<Ranged
void DegradeProcessor::cookParams()
{
+ auto point1x = static_cast<bool> (point1xParam->load());
+ auto depthValue = point1x ? depthParam->load() * 0.1f : depthParam->load();
+
float freqHz = 200.0f * powf (20000.0f / 200.0f, 1.0f - *amtParam);
- float gainDB = -24.0f * *depthParam;
+ float gainDB = -24.0f * depthValue;
for (int ch = 0; ch < 2; ++ch)
{
- noiseProc[ch].setGain (0.5f * *depthParam * *amtParam);
+ noiseProc[ch].setGain (0.5f * depthValue * *amtParam);
filterProc[ch].setFreq (jmin (freqHz + (*varParam * (freqHz / 0.6f) * (random.nextFloat() - 0.5f)), 0.49f * fs));
}
diff --git a/Plugin/Source/Processors/Degrade/DegradeProcessor.h b/Plugin/Source/Processors/Degrade/DegradeProcessor.h
@@ -18,6 +18,7 @@ public:
void processBlock (AudioBuffer<float>& buffer, MidiBuffer& midi);
private:
+ std::atomic<float>* point1xParam = nullptr;
std::atomic<float>* onOffParam = nullptr;
std::atomic<float>* depthParam = nullptr;
std::atomic<float>* amtParam = nullptr;