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 }, }) ) }