diff --git a/src/features/timbre/Timbre.js b/src/features/timbre/Timbre.js
index bfacb94..46df65b 100644
--- a/src/features/timbre/Timbre.js
+++ b/src/features/timbre/Timbre.js
@@ -1,6 +1,9 @@
import React from 'react';
import VCO from './parameters/VCO';
import Mixer from './parameters/Mixer';
+import Pitch from './parameters/Pitch';
+import Filter from './parameters/Filter';
+import EG from './parameters/EG';
export function Timbre(props) {
return (
@@ -8,6 +11,10 @@ export function Timbre(props) {
+
+
+
+
);
}
diff --git a/src/features/timbre/parameters/Filter.js b/src/features/timbre/parameters/Filter.js
new file mode 100644
index 0000000..66c05ba
--- /dev/null
+++ b/src/features/timbre/parameters/Filter.js
@@ -0,0 +1,83 @@
+import React from 'react';
+import { useSelector, useDispatch } from 'react-redux';
+import { selectById, parameterUpdated } from './parameterSlice.js';
+import { Slider, SelectList } from '../../helpers/Helpers';
+
+export default function Filter(props) {
+ const parameters = useSelector((state) => selectById(state, props.id));
+ const dispatch = useDispatch();
+
+ return (
+
+
+ dispatch(
+ parameterUpdated({
+ id: props.id,
+ changes: { filterType: value },
+ })
+ )
+ }
+ />
+
+ dispatch(
+ parameterUpdated({
+ id: props.id,
+ changes: { cutoff: value },
+ })
+ )
+ }
+ />
+
+ dispatch(
+ parameterUpdated({
+ id: props.id,
+ changes: { resonance: value },
+ })
+ )
+ }
+ />
+
+ dispatch(
+ parameterUpdated({
+ id: props.id,
+ changes: { egIntensity: value },
+ })
+ )
+ }
+ />
+
+ dispatch(
+ parameterUpdated({
+ id: props.id,
+ changes: { keyboardTrack: value },
+ })
+ )
+ }
+ />
+
+ );
+}
diff --git a/src/features/timbre/parameters/Pitch.js b/src/features/timbre/parameters/Pitch.js
new file mode 100644
index 0000000..e5c2ee2
--- /dev/null
+++ b/src/features/timbre/parameters/Pitch.js
@@ -0,0 +1,116 @@
+import React from 'react';
+import { useSelector, useDispatch } from 'react-redux';
+import { selectById, parameterUpdated } from './parameterSlice.js';
+import { Slider, SelectList } from '../../helpers/Helpers';
+
+export default function Pitch(props) {
+ const parameters = useSelector((state) => selectById(state, props.id));
+ const dispatch = useDispatch();
+
+ return (
+
+
+ dispatch(
+ parameterUpdated({
+ id: props.id,
+ changes: { voiceAssign: value },
+ })
+ )
+ }
+ />
+
+ dispatch(
+ parameterUpdated({
+ id: props.id,
+ changes: { triggerMode: value },
+ })
+ )
+ }
+ />
+
+ dispatch(
+ parameterUpdated({
+ id: props.id,
+ changes: { transpose: value },
+ })
+ )
+ }
+ />
+
+ dispatch(
+ parameterUpdated({
+ id: props.id,
+ changes: { tune: value },
+ })
+ )
+ }
+ />
+
+ dispatch(
+ parameterUpdated({
+ id: props.id,
+ changes: { unisoneDetune: value },
+ })
+ )
+ }
+ />
+
+ dispatch(
+ parameterUpdated({
+ id: props.id,
+ changes: { portamento: value },
+ })
+ )
+ }
+ />
+
+ dispatch(
+ parameterUpdated({
+ id: props.id,
+ changes: { bendRange: value },
+ })
+ )
+ }
+ />
+
+ dispatch(
+ parameterUpdated({
+ id: props.id,
+ changes: { vibratoIntensity: value },
+ })
+ )
+ }
+ />
+
+ );
+}
diff --git a/src/features/timbre/parameters/VCO.js b/src/features/timbre/parameters/VCO.js
index 08f984d..0c99d7c 100644
--- a/src/features/timbre/parameters/VCO.js
+++ b/src/features/timbre/parameters/VCO.js
@@ -1,21 +1,7 @@
import React from 'react';
import { useSelector, useDispatch } from 'react-redux';
import { selectById, parameterUpdated } from './parameterSlice.js';
-
-const SelectList = (props) => {
- const options = props.list.map((option, index) => (
-
- ));
- return (
-
- );
-};
+import { Slider, SelectList } from '../../helpers/Helpers';
export default function VCO(props) {
const parameters = useSelector((state) => selectById(state, props.id));
@@ -23,30 +9,15 @@ export default function VCO(props) {
const dispatch = useDispatch();
return (
- Current Waveform {parameters.waveform}
-
- Current Mod Value {parameters.waveMod}
-
+ parameter={parameters.waveMod}
+ onChange={(value) =>
dispatch(
parameterUpdated({
id: props.id,
- changes: { waveMod: e.target.value },
+ changes: { waveMod: value },
})
)
}