kopia lustrzana https://github.com/jameshball/osci-render
Add trace min slider
rodzic
30b7442be1
commit
55ddfeae64
|
@ -22,8 +22,6 @@ import javax.sound.midi.ShortMessage;
|
|||
import javax.sound.sampled.AudioFormat;
|
||||
import javax.sound.sampled.AudioInputStream;
|
||||
|
||||
import static sh.ball.gui.Gui.audioPlayer;
|
||||
|
||||
public class ShapeAudioPlayer implements AudioPlayer<List<Shape>> {
|
||||
|
||||
private static final double MIN_TRACE = 0.001;
|
||||
|
@ -75,7 +73,8 @@ public class ShapeAudioPlayer implements AudioPlayer<List<Shape>> {
|
|||
private DoubleProperty frequency;
|
||||
private double baseFrequencyVolumeScale = 0.5;
|
||||
private double baseFrequency;
|
||||
private double trace = 1;
|
||||
private double traceMin = 0;
|
||||
private double traceMax = 1;
|
||||
private int octave = 0;
|
||||
private int sampleRate;
|
||||
|
||||
|
@ -125,22 +124,11 @@ public class ShapeAudioPlayer implements AudioPlayer<List<Shape>> {
|
|||
this.volume = volume;
|
||||
}
|
||||
|
||||
private Vector2 generateChannels() throws InterruptedException {
|
||||
Shape shape = getCurrentShape();
|
||||
private void incrementShapeDrawing() {
|
||||
double length = getCurrentShape().getLength();
|
||||
|
||||
double length = shape.getLength();
|
||||
double drawingProgress = length == 0 ? 1 : shapeDrawn / length;
|
||||
Vector2 nextVector = applyEffects(count, shape.nextVector(drawingProgress));
|
||||
|
||||
Vector2 channels = cutoff(nextVector);
|
||||
writeChannels((float) channels.getX(), (float) channels.getY());
|
||||
|
||||
shapeDrawn += lengthIncrement;
|
||||
frameDrawn += lengthIncrement;
|
||||
|
||||
if (++count > MAX_COUNT) {
|
||||
count = 0;
|
||||
}
|
||||
shapeDrawn += lengthIncrement;
|
||||
|
||||
// Need to skip all shapes that the lengthIncrement draws over.
|
||||
// This is especially an issue when there are lots of small lines being
|
||||
|
@ -154,8 +142,25 @@ public class ShapeAudioPlayer implements AudioPlayer<List<Shape>> {
|
|||
}
|
||||
length = getCurrentShape().getLength();
|
||||
}
|
||||
}
|
||||
|
||||
double proportionalLength = trace * frameLength;
|
||||
private Vector2 generateChannels() throws InterruptedException {
|
||||
Shape shape = getCurrentShape();
|
||||
|
||||
double length = shape.getLength();
|
||||
double drawingProgress = length == 0 ? 1 : shapeDrawn / length;
|
||||
Vector2 nextVector = applyEffects(count, shape.nextVector(drawingProgress));
|
||||
|
||||
Vector2 channels = cutoff(nextVector);
|
||||
writeChannels((float) channels.getX(), (float) channels.getY());
|
||||
|
||||
if (++count > MAX_COUNT) {
|
||||
count = 0;
|
||||
}
|
||||
|
||||
incrementShapeDrawing();
|
||||
|
||||
double proportionalLength = traceMax * frameLength;
|
||||
|
||||
if (currentShape >= frame.size() || frameDrawn > proportionalLength) {
|
||||
currentShape = 0;
|
||||
|
@ -163,6 +168,10 @@ public class ShapeAudioPlayer implements AudioPlayer<List<Shape>> {
|
|||
frameLength = Shape.totalLength(frame);
|
||||
shapeDrawn = 0;
|
||||
frameDrawn = 0;
|
||||
|
||||
while (frameDrawn < traceMin * frameLength) {
|
||||
incrementShapeDrawing();
|
||||
}
|
||||
}
|
||||
|
||||
updateLengthIncrement();
|
||||
|
@ -294,7 +303,7 @@ public class ShapeAudioPlayer implements AudioPlayer<List<Shape>> {
|
|||
|
||||
private void updateLengthIncrement() {
|
||||
if (frame != null) {
|
||||
double proportionalLength = trace * frameLength;
|
||||
double proportionalLength = (traceMax - traceMin) * frameLength;
|
||||
int sampleRate = device.sampleRate();
|
||||
double actualFrequency = octaveFrequency * pitchBends[mainChannel];
|
||||
lengthIncrement = Math.max(proportionalLength / (sampleRate / actualFrequency), MIN_LENGTH_INCREMENT);
|
||||
|
@ -485,8 +494,12 @@ public class ShapeAudioPlayer implements AudioPlayer<List<Shape>> {
|
|||
|
||||
}
|
||||
|
||||
public void setTrace(double trace) {
|
||||
this.trace = Math.max(MIN_TRACE, Math.min(trace, 1));
|
||||
public void setTraceMin(double traceMin) {
|
||||
this.traceMin = Math.max(MIN_TRACE, Math.min(traceMin, traceMax - MIN_TRACE));
|
||||
}
|
||||
|
||||
public void setTraceMax(double traceMax) {
|
||||
this.traceMax = Math.max(traceMin + MIN_TRACE, Math.min(traceMax, 1));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
package sh.ball.audio.effect;
|
||||
|
||||
import sh.ball.shapes.Vector2;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class ConsumerEffect implements SettableEffect {
|
||||
|
||||
private final Consumer<Double> consumer;
|
||||
|
||||
public ConsumerEffect(Consumer<Double> consumer) {
|
||||
this.consumer = consumer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vector2 apply(int count, Vector2 vector) {
|
||||
return vector;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setValue(double trace) {
|
||||
consumer.accept(trace);
|
||||
}
|
||||
}
|
|
@ -8,5 +8,7 @@ public enum EffectType {
|
|||
VERTICAL_DISTORT,
|
||||
HORIZONTAL_DISTORT,
|
||||
WOBBLE,
|
||||
TRACE, SMOOTH
|
||||
TRACE_MIN,
|
||||
TRACE_MAX,
|
||||
SMOOTH
|
||||
}
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
package sh.ball.audio.effect;
|
||||
|
||||
import sh.ball.audio.ShapeAudioPlayer;
|
||||
import sh.ball.shapes.Vector2;
|
||||
|
||||
public class TraceEffect implements SettableEffect {
|
||||
|
||||
private final ShapeAudioPlayer audioPlayer;
|
||||
|
||||
public TraceEffect(ShapeAudioPlayer audioPlayer) {
|
||||
this.audioPlayer = audioPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vector2 apply(int count, Vector2 vector) {
|
||||
return vector;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setValue(double trace) {
|
||||
audioPlayer.setTrace(trace);
|
||||
}
|
||||
}
|
|
@ -32,7 +32,8 @@ public class EffectsController implements Initializable, SubController {
|
|||
|
||||
private final WobbleEffect wobbleEffect;
|
||||
private final EffectAnimator wobbleAnimator;
|
||||
private final EffectAnimator traceAnimator;
|
||||
private final EffectAnimator traceMinAnimator;
|
||||
private final EffectAnimator traceMaxAnimator;
|
||||
private final EffectAnimator vectorCancellingAnimator;
|
||||
private final EffectAnimator bitCrushAnimator;
|
||||
private final EffectAnimator smoothingAnimator;
|
||||
|
@ -100,20 +101,31 @@ public class EffectsController implements Initializable, SubController {
|
|||
@FXML
|
||||
private CheckBox smoothingMic;
|
||||
@FXML
|
||||
private CheckBox traceCheckBox;
|
||||
private CheckBox traceMinCheckBox;
|
||||
@FXML
|
||||
private Slider traceSlider;
|
||||
private Slider traceMinSlider;
|
||||
@FXML
|
||||
private SVGPath traceMidi;
|
||||
private SVGPath traceMinMidi;
|
||||
@FXML
|
||||
private ComboBox<AnimationType> traceComboBox;
|
||||
private ComboBox<AnimationType> traceMinComboBox;
|
||||
@FXML
|
||||
private CheckBox traceMic;
|
||||
private CheckBox traceMinMic;
|
||||
@FXML
|
||||
private CheckBox traceMaxCheckBox;
|
||||
@FXML
|
||||
private Slider traceMaxSlider;
|
||||
@FXML
|
||||
private SVGPath traceMaxMidi;
|
||||
@FXML
|
||||
private ComboBox<AnimationType> traceMaxComboBox;
|
||||
@FXML
|
||||
private CheckBox traceMaxMic;
|
||||
|
||||
public EffectsController() {
|
||||
this.wobbleEffect = new WobbleEffect(DEFAULT_SAMPLE_RATE);
|
||||
this.wobbleAnimator = new EffectAnimator(DEFAULT_SAMPLE_RATE, wobbleEffect);
|
||||
this.traceAnimator = new EffectAnimator(DEFAULT_SAMPLE_RATE, new TraceEffect(audioPlayer));
|
||||
this.traceMinAnimator = new EffectAnimator(DEFAULT_SAMPLE_RATE, new ConsumerEffect(audioPlayer::setTraceMin));
|
||||
this.traceMaxAnimator = new EffectAnimator(DEFAULT_SAMPLE_RATE, new ConsumerEffect(audioPlayer::setTraceMax));
|
||||
this.vectorCancellingAnimator = new EffectAnimator(DEFAULT_SAMPLE_RATE, new VectorCancellingEffect());
|
||||
this.bitCrushAnimator = new EffectAnimator(DEFAULT_SAMPLE_RATE, new BitCrushEffect());
|
||||
this.smoothingAnimator = new EffectAnimator(DEFAULT_SAMPLE_RATE, new SmoothEffect(1));
|
||||
|
@ -128,7 +140,8 @@ public class EffectsController implements Initializable, SubController {
|
|||
bitCrushMidi, bitCrushSlider,
|
||||
wobbleMidi, wobbleSlider,
|
||||
smoothingMidi, smoothingSlider,
|
||||
traceMidi, traceSlider,
|
||||
traceMinMidi, traceMinSlider,
|
||||
traceMaxMidi, traceMaxSlider,
|
||||
verticalDistortMidi, verticalDistortSlider,
|
||||
horizontalDistortMidi, horizontalDistortSlider
|
||||
);
|
||||
|
@ -140,7 +153,8 @@ public class EffectsController implements Initializable, SubController {
|
|||
bitCrushComboBox, bitCrushAnimator,
|
||||
wobbleComboBox, wobbleAnimator,
|
||||
smoothingComboBox, smoothingAnimator,
|
||||
traceComboBox, traceAnimator,
|
||||
traceMinComboBox, traceMinAnimator,
|
||||
traceMaxComboBox, traceMaxAnimator,
|
||||
verticalDistortComboBox, verticalDistortAnimator,
|
||||
horizontalDistortComboBox, horizontalDistortAnimator
|
||||
);
|
||||
|
@ -162,8 +176,10 @@ public class EffectsController implements Initializable, SubController {
|
|||
wobbleSlider,
|
||||
EffectType.SMOOTH,
|
||||
smoothingSlider,
|
||||
EffectType.TRACE,
|
||||
traceSlider
|
||||
EffectType.TRACE_MIN,
|
||||
traceMinSlider,
|
||||
EffectType.TRACE_MAX,
|
||||
traceMaxSlider
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -220,8 +236,10 @@ public class EffectsController implements Initializable, SubController {
|
|||
updateEffect(EffectType.SMOOTH, smoothingCheckBox.isSelected(), smoothingAnimator, smoothingSlider.getValue());
|
||||
InvalidationListener vectorCancellingListener = e ->
|
||||
updateEffect(EffectType.VECTOR_CANCELLING, vectorCancellingCheckBox.isSelected(), vectorCancellingAnimator, vectorCancellingSlider.getValue());
|
||||
InvalidationListener traceListener = e ->
|
||||
updateEffect(EffectType.TRACE, traceCheckBox.isSelected(), traceAnimator, traceSlider.getValue());
|
||||
InvalidationListener traceMinListener = e ->
|
||||
updateEffect(EffectType.TRACE_MIN, traceMinCheckBox.isSelected(), traceMinAnimator, traceMinSlider.getValue());
|
||||
InvalidationListener traceMaxListener = e ->
|
||||
updateEffect(EffectType.TRACE_MAX, traceMaxCheckBox.isSelected(), traceMaxAnimator, traceMaxSlider.getValue());
|
||||
|
||||
vectorCancellingSlider.valueProperty().addListener(vectorCancellingListener);
|
||||
vectorCancellingCheckBox.selectedProperty().addListener(vectorCancellingListener);
|
||||
|
@ -242,13 +260,23 @@ public class EffectsController implements Initializable, SubController {
|
|||
smoothingSlider.valueProperty().addListener(smoothListener);
|
||||
smoothingCheckBox.selectedProperty().addListener(smoothListener);
|
||||
|
||||
traceSlider.valueProperty().addListener(traceListener);
|
||||
traceCheckBox.selectedProperty().addListener(traceListener);
|
||||
traceCheckBox.selectedProperty().addListener((e, old, selected) -> {
|
||||
traceMinSlider.valueProperty().addListener(traceMinListener);
|
||||
traceMinCheckBox.selectedProperty().addListener(traceMinListener);
|
||||
traceMinCheckBox.selectedProperty().addListener((e, old, selected) -> {
|
||||
if (selected) {
|
||||
traceAnimator.setValue(traceSlider.getValue());
|
||||
traceMinAnimator.setValue(traceMinSlider.getValue());
|
||||
} else {
|
||||
traceAnimator.setValue(1.0);
|
||||
traceMinAnimator.setValue(0.0);
|
||||
}
|
||||
});
|
||||
|
||||
traceMaxSlider.valueProperty().addListener(traceMaxListener);
|
||||
traceMaxCheckBox.selectedProperty().addListener(traceMaxListener);
|
||||
traceMaxCheckBox.selectedProperty().addListener((e, old, selected) -> {
|
||||
if (selected) {
|
||||
traceMaxAnimator.setValue(traceMaxSlider.getValue());
|
||||
} else {
|
||||
traceMaxAnimator.setValue(1.0);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -278,26 +306,28 @@ public class EffectsController implements Initializable, SubController {
|
|||
}
|
||||
private List<CheckBox> checkBoxes() {
|
||||
return List.of(vectorCancellingCheckBox, bitCrushCheckBox, verticalDistortCheckBox,
|
||||
horizontalDistortCheckBox, wobbleCheckBox, smoothingCheckBox, traceCheckBox);
|
||||
horizontalDistortCheckBox, wobbleCheckBox, smoothingCheckBox, traceMinCheckBox,
|
||||
traceMaxCheckBox);
|
||||
}
|
||||
private List<EffectAnimator> animators() {
|
||||
return List.of(vectorCancellingAnimator, bitCrushAnimator, verticalDistortAnimator,
|
||||
horizontalDistortAnimator, wobbleAnimator, smoothingAnimator, traceAnimator);
|
||||
horizontalDistortAnimator, wobbleAnimator, smoothingAnimator, traceMinAnimator,
|
||||
traceMaxAnimator);
|
||||
}
|
||||
@Override
|
||||
public List<CheckBox> micCheckBoxes() {
|
||||
return List.of(vectorCancellingMic, bitCrushMic, verticalDistortMic, horizontalDistortMic,
|
||||
wobbleMic, smoothingMic, traceMic);
|
||||
wobbleMic, smoothingMic, traceMinMic, traceMaxMic);
|
||||
}
|
||||
@Override
|
||||
public List<Slider> sliders() {
|
||||
return List.of(vectorCancellingSlider, bitCrushSlider, verticalDistortSlider,
|
||||
horizontalDistortSlider, wobbleSlider, smoothingSlider, traceSlider);
|
||||
horizontalDistortSlider, wobbleSlider, smoothingSlider, traceMinSlider, traceMaxSlider);
|
||||
}
|
||||
@Override
|
||||
public List<String> labels() {
|
||||
return List.of("vectorCancelling", "bitCrush", "verticalDistort", "horizontalDistort",
|
||||
"wobble", "smooth", "trace");
|
||||
"wobble", "smooth", "traceMin", "traceMax");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -6,42 +6,47 @@
|
|||
<?import javafx.scene.layout.AnchorPane?>
|
||||
<?import javafx.scene.shape.SVGPath?>
|
||||
|
||||
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="356.0" prefWidth="576.0" xmlns="http://javafx.com/javafx/17" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sh.ball.gui.controller.EffectsController">
|
||||
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="355.0" prefWidth="576.0" xmlns="http://javafx.com/javafx/17" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sh.ball.gui.controller.EffectsController">
|
||||
<children>
|
||||
<CheckBox fx:id="vectorCancellingCheckBox" layoutX="14.0" layoutY="15.0" mnemonicParsing="false" text="Vector cancelling" />
|
||||
<Slider fx:id="vectorCancellingSlider" blockIncrement="0.005" disable="true" layoutX="154.0" layoutY="16.0" majorTickUnit="0.1" max="1.0" prefHeight="42.0" prefWidth="219.0" showTickLabels="true" showTickMarks="true" value="0.11111111" />
|
||||
<CheckBox fx:id="bitCrushCheckBox" layoutX="14.0" layoutY="62.0" mnemonicParsing="false" text="Bit crush" />
|
||||
<Slider fx:id="bitCrushSlider" blockIncrement="0.005" disable="true" layoutX="154.0" layoutY="64.0" majorTickUnit="0.1" max="1.0" prefHeight="42.0" prefWidth="219.0" showTickLabels="true" showTickMarks="true" value="0.6666666" />
|
||||
<CheckBox fx:id="verticalDistortCheckBox" layoutX="14.0" layoutY="110.0" mnemonicParsing="false" text="Vertical Distort" />
|
||||
<Slider fx:id="verticalDistortSlider" blockIncrement="0.005" disable="true" layoutX="154.0" layoutY="112.0" majorTickUnit="0.1" max="1.0" prefHeight="38.0" prefWidth="219.0" showTickLabels="true" showTickMarks="true" value="0.2" />
|
||||
<CheckBox fx:id="horizontalDistortCheckBox" layoutX="14.0" layoutY="159.0" mnemonicParsing="false" text="Horizontal Distort" />
|
||||
<Slider fx:id="horizontalDistortSlider" blockIncrement="0.005" disable="true" layoutX="154.0" layoutY="161.0" majorTickUnit="0.1" max="1.0" prefHeight="38.0" prefWidth="219.0" showTickLabels="true" showTickMarks="true" value="0.2" />
|
||||
<CheckBox fx:id="wobbleCheckBox" layoutX="14.0" layoutY="208.0" mnemonicParsing="false" text="Wobble" />
|
||||
<Slider fx:id="wobbleSlider" blockIncrement="0.005" disable="true" layoutX="154.0" layoutY="210.0" majorTickUnit="0.1" max="1.0" prefHeight="38.0" prefWidth="219.0" showTickLabels="true" showTickMarks="true" value="0.2" />
|
||||
<CheckBox fx:id="bitCrushCheckBox" layoutX="14.0" layoutY="55.0" mnemonicParsing="false" text="Bit crush" />
|
||||
<Slider fx:id="bitCrushSlider" blockIncrement="0.005" disable="true" layoutX="154.0" layoutY="57.0" majorTickUnit="0.1" max="1.0" prefHeight="42.0" prefWidth="219.0" showTickLabels="true" showTickMarks="true" value="0.6666666" />
|
||||
<CheckBox fx:id="verticalDistortCheckBox" layoutX="14.0" layoutY="96.0" mnemonicParsing="false" text="Vertical Distort" />
|
||||
<Slider fx:id="verticalDistortSlider" blockIncrement="0.005" disable="true" layoutX="154.0" layoutY="98.0" majorTickUnit="0.1" max="1.0" prefHeight="38.0" prefWidth="219.0" showTickLabels="true" showTickMarks="true" value="0.2" />
|
||||
<CheckBox fx:id="horizontalDistortCheckBox" layoutX="14.0" layoutY="138.0" mnemonicParsing="false" text="Horizontal Distort" />
|
||||
<Slider fx:id="horizontalDistortSlider" blockIncrement="0.005" disable="true" layoutX="154.0" layoutY="140.0" majorTickUnit="0.1" max="1.0" prefHeight="38.0" prefWidth="219.0" showTickLabels="true" showTickMarks="true" value="0.2" />
|
||||
<CheckBox fx:id="wobbleCheckBox" layoutX="14.0" layoutY="180.0" mnemonicParsing="false" text="Wobble" />
|
||||
<Slider fx:id="wobbleSlider" blockIncrement="0.005" disable="true" layoutX="154.0" layoutY="182.0" majorTickUnit="0.1" max="1.0" prefHeight="38.0" prefWidth="219.0" showTickLabels="true" showTickMarks="true" value="0.2" />
|
||||
<SVGPath fx:id="vectorCancellingMidi" content="M20.15 8.26H22V15.74H20.15M13 8.26H18.43C19 8.26 19.3 8.74 19.3 9.3V14.81C19.3 15.5 19 15.74 18.38 15.74H13V11H14.87V13.91H17.5V9.95H13M10.32 8.26H12.14V15.74H10.32M2 8.26H8.55C9.1 8.26 9.41 8.74 9.41 9.3V15.74H7.59V10.15H6.5V15.74H4.87V10.15H3.83V15.74H2Z" fill="WHITE" layoutX="373.0" layoutY="13.0" pickOnBounds="true" />
|
||||
<SVGPath fx:id="bitCrushMidi" content="M20.15 8.26H22V15.74H20.15M13 8.26H18.43C19 8.26 19.3 8.74 19.3 9.3V14.81C19.3 15.5 19 15.74 18.38 15.74H13V11H14.87V13.91H17.5V9.95H13M10.32 8.26H12.14V15.74H10.32M2 8.26H8.55C9.1 8.26 9.41 8.74 9.41 9.3V15.74H7.59V10.15H6.5V15.74H4.87V10.15H3.83V15.74H2Z" fill="WHITE" layoutX="373.0" layoutY="61.0" pickOnBounds="true" />
|
||||
<SVGPath fx:id="verticalDistortMidi" content="M20.15 8.26H22V15.74H20.15M13 8.26H18.43C19 8.26 19.3 8.74 19.3 9.3V14.81C19.3 15.5 19 15.74 18.38 15.74H13V11H14.87V13.91H17.5V9.95H13M10.32 8.26H12.14V15.74H10.32M2 8.26H8.55C9.1 8.26 9.41 8.74 9.41 9.3V15.74H7.59V10.15H6.5V15.74H4.87V10.15H3.83V15.74H2Z" fill="WHITE" layoutX="373.0" layoutY="108.0" pickOnBounds="true" />
|
||||
<SVGPath fx:id="horizontalDistortMidi" content="M20.15 8.26H22V15.74H20.15M13 8.26H18.43C19 8.26 19.3 8.74 19.3 9.3V14.81C19.3 15.5 19 15.74 18.38 15.74H13V11H14.87V13.91H17.5V9.95H13M10.32 8.26H12.14V15.74H10.32M2 8.26H8.55C9.1 8.26 9.41 8.74 9.41 9.3V15.74H7.59V10.15H6.5V15.74H4.87V10.15H3.83V15.74H2Z" fill="WHITE" layoutX="373.0" layoutY="157.0" pickOnBounds="true" />
|
||||
<SVGPath fx:id="wobbleMidi" content="M20.15 8.26H22V15.74H20.15M13 8.26H18.43C19 8.26 19.3 8.74 19.3 9.3V14.81C19.3 15.5 19 15.74 18.38 15.74H13V11H14.87V13.91H17.5V9.95H13M10.32 8.26H12.14V15.74H10.32M2 8.26H8.55C9.1 8.26 9.41 8.74 9.41 9.3V15.74H7.59V10.15H6.5V15.74H4.87V10.15H3.83V15.74H2Z" fill="WHITE" layoutX="373.0" layoutY="206.0" pickOnBounds="true" />
|
||||
<CheckBox fx:id="smoothingCheckBox" layoutX="14.0" layoutY="255.0" mnemonicParsing="false" text="Smoothing" />
|
||||
<Slider fx:id="smoothingSlider" blockIncrement="0.005" disable="true" layoutX="154.0" layoutY="257.0" majorTickUnit="0.1" max="1.0" minorTickCount="1" prefHeight="38.0" prefWidth="219.0" showTickLabels="true" showTickMarks="true" value="0.125" />
|
||||
<SVGPath fx:id="smoothingMidi" content="M20.15 8.26H22V15.74H20.15M13 8.26H18.43C19 8.26 19.3 8.74 19.3 9.3V14.81C19.3 15.5 19 15.74 18.38 15.74H13V11H14.87V13.91H17.5V9.95H13M10.32 8.26H12.14V15.74H10.32M2 8.26H8.55C9.1 8.26 9.41 8.74 9.41 9.3V15.74H7.59V10.15H6.5V15.74H4.87V10.15H3.83V15.74H2Z" fill="WHITE" layoutX="373.0" layoutY="253.0" pickOnBounds="true" />
|
||||
<CheckBox fx:id="traceCheckBox" layoutX="14.0" layoutY="304.0" mnemonicParsing="false" text="Trace" />
|
||||
<Slider fx:id="traceSlider" blockIncrement="0.005" disable="true" layoutX="154.0" layoutY="306.0" majorTickUnit="0.1" max="1.0" prefHeight="38.0" prefWidth="219.0" showTickLabels="true" showTickMarks="true" value="0.5" />
|
||||
<SVGPath fx:id="traceMidi" content="M20.15 8.26H22V15.74H20.15M13 8.26H18.43C19 8.26 19.3 8.74 19.3 9.3V14.81C19.3 15.5 19 15.74 18.38 15.74H13V11H14.87V13.91H17.5V9.95H13M10.32 8.26H12.14V15.74H10.32M2 8.26H8.55C9.1 8.26 9.41 8.74 9.41 9.3V15.74H7.59V10.15H6.5V15.74H4.87V10.15H3.83V15.74H2Z" fill="WHITE" layoutX="373.0" layoutY="302.0" pickOnBounds="true" />
|
||||
<ComboBox fx:id="wobbleComboBox" layoutX="404.0" layoutY="203.0" prefHeight="26.0" prefWidth="102.0" />
|
||||
<ComboBox fx:id="traceComboBox" layoutX="404.0" layoutY="299.0" prefHeight="26.0" prefWidth="102.0" />
|
||||
<ComboBox fx:id="smoothingComboBox" layoutX="404.0" layoutY="250.0" prefHeight="26.0" prefWidth="102.0" />
|
||||
<ComboBox fx:id="horizontalDistortComboBox" layoutX="404.0" layoutY="154.0" prefHeight="26.0" prefWidth="102.0" />
|
||||
<ComboBox fx:id="verticalDistortComboBox" layoutX="404.0" layoutY="105.0" prefHeight="26.0" prefWidth="102.0" />
|
||||
<ComboBox fx:id="bitCrushComboBox" layoutX="404.0" layoutY="60.0" prefHeight="26.0" prefWidth="102.0" />
|
||||
<SVGPath fx:id="bitCrushMidi" content="M20.15 8.26H22V15.74H20.15M13 8.26H18.43C19 8.26 19.3 8.74 19.3 9.3V14.81C19.3 15.5 19 15.74 18.38 15.74H13V11H14.87V13.91H17.5V9.95H13M10.32 8.26H12.14V15.74H10.32M2 8.26H8.55C9.1 8.26 9.41 8.74 9.41 9.3V15.74H7.59V10.15H6.5V15.74H4.87V10.15H3.83V15.74H2Z" fill="WHITE" layoutX="373.0" layoutY="54.0" pickOnBounds="true" />
|
||||
<SVGPath fx:id="verticalDistortMidi" content="M20.15 8.26H22V15.74H20.15M13 8.26H18.43C19 8.26 19.3 8.74 19.3 9.3V14.81C19.3 15.5 19 15.74 18.38 15.74H13V11H14.87V13.91H17.5V9.95H13M10.32 8.26H12.14V15.74H10.32M2 8.26H8.55C9.1 8.26 9.41 8.74 9.41 9.3V15.74H7.59V10.15H6.5V15.74H4.87V10.15H3.83V15.74H2Z" fill="WHITE" layoutX="373.0" layoutY="94.0" pickOnBounds="true" />
|
||||
<SVGPath fx:id="horizontalDistortMidi" content="M20.15 8.26H22V15.74H20.15M13 8.26H18.43C19 8.26 19.3 8.74 19.3 9.3V14.81C19.3 15.5 19 15.74 18.38 15.74H13V11H14.87V13.91H17.5V9.95H13M10.32 8.26H12.14V15.74H10.32M2 8.26H8.55C9.1 8.26 9.41 8.74 9.41 9.3V15.74H7.59V10.15H6.5V15.74H4.87V10.15H3.83V15.74H2Z" fill="WHITE" layoutX="373.0" layoutY="136.0" pickOnBounds="true" />
|
||||
<SVGPath fx:id="wobbleMidi" content="M20.15 8.26H22V15.74H20.15M13 8.26H18.43C19 8.26 19.3 8.74 19.3 9.3V14.81C19.3 15.5 19 15.74 18.38 15.74H13V11H14.87V13.91H17.5V9.95H13M10.32 8.26H12.14V15.74H10.32M2 8.26H8.55C9.1 8.26 9.41 8.74 9.41 9.3V15.74H7.59V10.15H6.5V15.74H4.87V10.15H3.83V15.74H2Z" fill="WHITE" layoutX="373.0" layoutY="178.0" pickOnBounds="true" />
|
||||
<CheckBox fx:id="smoothingCheckBox" layoutX="14.0" layoutY="220.0" mnemonicParsing="false" text="Smoothing" />
|
||||
<Slider fx:id="smoothingSlider" blockIncrement="0.005" disable="true" layoutX="154.0" layoutY="222.0" majorTickUnit="0.1" max="1.0" minorTickCount="1" prefHeight="38.0" prefWidth="219.0" showTickLabels="true" showTickMarks="true" value="0.125" />
|
||||
<SVGPath fx:id="smoothingMidi" content="M20.15 8.26H22V15.74H20.15M13 8.26H18.43C19 8.26 19.3 8.74 19.3 9.3V14.81C19.3 15.5 19 15.74 18.38 15.74H13V11H14.87V13.91H17.5V9.95H13M10.32 8.26H12.14V15.74H10.32M2 8.26H8.55C9.1 8.26 9.41 8.74 9.41 9.3V15.74H7.59V10.15H6.5V15.74H4.87V10.15H3.83V15.74H2Z" fill="WHITE" layoutX="373.0" layoutY="218.0" pickOnBounds="true" />
|
||||
<CheckBox fx:id="traceMaxCheckBox" layoutX="15.0" layoutY="302.0" mnemonicParsing="false" text="Trace Max" />
|
||||
<Slider fx:id="traceMaxSlider" blockIncrement="0.005" disable="true" layoutX="155.0" layoutY="304.0" majorTickUnit="0.1" max="1.0" prefHeight="38.0" prefWidth="219.0" showTickLabels="true" showTickMarks="true" value="0.5" />
|
||||
<SVGPath fx:id="traceMaxMidi" content="M20.15 8.26H22V15.74H20.15M13 8.26H18.43C19 8.26 19.3 8.74 19.3 9.3V14.81C19.3 15.5 19 15.74 18.38 15.74H13V11H14.87V13.91H17.5V9.95H13M10.32 8.26H12.14V15.74H10.32M2 8.26H8.55C9.1 8.26 9.41 8.74 9.41 9.3V15.74H7.59V10.15H6.5V15.74H4.87V10.15H3.83V15.74H2Z" fill="WHITE" layoutX="374.0" layoutY="300.0" pickOnBounds="true" />
|
||||
<ComboBox fx:id="wobbleComboBox" layoutX="404.0" layoutY="175.0" prefHeight="26.0" prefWidth="102.0" />
|
||||
<ComboBox fx:id="traceMaxComboBox" layoutX="405.0" layoutY="297.0" prefHeight="26.0" prefWidth="102.0" />
|
||||
<ComboBox fx:id="smoothingComboBox" layoutX="404.0" layoutY="215.0" prefHeight="26.0" prefWidth="102.0" />
|
||||
<ComboBox fx:id="horizontalDistortComboBox" layoutX="404.0" layoutY="133.0" prefHeight="26.0" prefWidth="102.0" />
|
||||
<ComboBox fx:id="verticalDistortComboBox" layoutX="404.0" layoutY="91.0" prefHeight="26.0" prefWidth="102.0" />
|
||||
<ComboBox fx:id="bitCrushComboBox" layoutX="404.0" layoutY="53.0" prefHeight="26.0" prefWidth="102.0" />
|
||||
<ComboBox fx:id="vectorCancellingComboBox" layoutX="404.0" layoutY="12.0" prefHeight="26.0" prefWidth="102.0" />
|
||||
<CheckBox fx:id="vectorCancellingMic" layoutX="517.0" layoutY="16.0" mnemonicParsing="false" text="Mic" />
|
||||
<CheckBox fx:id="bitCrushMic" layoutX="517.0" layoutY="64.0" mnemonicParsing="false" text="Mic" />
|
||||
<CheckBox fx:id="verticalDistortMic" layoutX="517.0" layoutY="109.0" mnemonicParsing="false" text="Mic" />
|
||||
<CheckBox fx:id="horizontalDistortMic" layoutX="517.0" layoutY="158.0" mnemonicParsing="false" text="Mic" />
|
||||
<CheckBox fx:id="wobbleMic" layoutX="517.0" layoutY="207.0" mnemonicParsing="false" text="Mic" />
|
||||
<CheckBox fx:id="smoothingMic" layoutX="517.0" layoutY="254.0" mnemonicParsing="false" text="Mic" />
|
||||
<CheckBox fx:id="traceMic" layoutX="517.0" layoutY="303.0" mnemonicParsing="false" text="Mic" />
|
||||
<CheckBox fx:id="bitCrushMic" layoutX="517.0" layoutY="57.0" mnemonicParsing="false" text="Mic" />
|
||||
<CheckBox fx:id="verticalDistortMic" layoutX="517.0" layoutY="95.0" mnemonicParsing="false" text="Mic" />
|
||||
<CheckBox fx:id="horizontalDistortMic" layoutX="517.0" layoutY="137.0" mnemonicParsing="false" text="Mic" />
|
||||
<CheckBox fx:id="wobbleMic" layoutX="517.0" layoutY="179.0" mnemonicParsing="false" text="Mic" />
|
||||
<CheckBox fx:id="smoothingMic" layoutX="517.0" layoutY="219.0" mnemonicParsing="false" text="Mic" />
|
||||
<CheckBox fx:id="traceMaxMic" layoutX="518.0" layoutY="301.0" mnemonicParsing="false" text="Mic" />
|
||||
<CheckBox fx:id="traceMinCheckBox" layoutX="15.0" layoutY="260.0" mnemonicParsing="false" text="Trace Min" />
|
||||
<Slider fx:id="traceMinSlider" blockIncrement="0.005" disable="true" layoutX="155.0" layoutY="262.0" majorTickUnit="0.1" max="1.0" prefHeight="38.0" prefWidth="219.0" showTickLabels="true" showTickMarks="true" value="0.5" />
|
||||
<SVGPath fx:id="traceMinMidi" content="M20.15 8.26H22V15.74H20.15M13 8.26H18.43C19 8.26 19.3 8.74 19.3 9.3V14.81C19.3 15.5 19 15.74 18.38 15.74H13V11H14.87V13.91H17.5V9.95H13M10.32 8.26H12.14V15.74H10.32M2 8.26H8.55C9.1 8.26 9.41 8.74 9.41 9.3V15.74H7.59V10.15H6.5V15.74H4.87V10.15H3.83V15.74H2Z" fill="WHITE" layoutX="374.0" layoutY="258.0" pickOnBounds="true" />
|
||||
<ComboBox fx:id="traceMinComboBox" layoutX="405.0" layoutY="255.0" prefHeight="26.0" prefWidth="102.0" />
|
||||
<CheckBox fx:id="traceMinMic" layoutX="518.0" layoutY="259.0" mnemonicParsing="false" text="Mic" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
|
|
Ładowanie…
Reference in New Issue