section switching added

This commit is contained in:
[poww10s]
2020-11-20 08:02:37 -05:00
parent 0e89ade1c6
commit 63efc3e2a0
8 changed files with 110 additions and 11 deletions
+2 -5
View File
@@ -1,15 +1,12 @@
import React from 'react';
import Timbre from './features/timbre/Timbre';
import Vocoder from './features/timbre/Vocoder';
import TimbreSwitcher from './features/timbre/timbreSwitcher';
import './App.css';
function App() {
return (
<div className="App">
<header className="App-header">
<Timbre id="timbre1" />
{/*<Timbre id="timbre2" />
<Vocoder id="vocoder" />*/}
<TimbreSwitcher />
</header>
</div>
);
+1 -1
View File
@@ -123,9 +123,9 @@ export default function Timbre(props) {
<Mixer id={ids.mixer} />
<Pitch id={ids.pitch} />
<Filter id={ids.filter} />
<Amp id={ids.amp} />
<div className="linebreak" style={lineBreak} />
<EG id={ids.eg1} />
<Amp id={ids.amp} />
<EG id={ids.eg2} />
<LFO
id={ids.lfo1}
+16
View File
@@ -0,0 +1,16 @@
import React from 'react';
import { useSelector, useDispatch } from 'react-redux';
import { selectById, parameterUpdated } from './parameterSlice.js';
import { Slider, SelectList } from '../../helpers/Helpers';
import styles from './Parameters.module.css';
export default function Levels(props) {
const parameters = useSelector((state) => selectById(state, props.id));
const dispatch = useDispatch();
return (
<div className={styles.horizontalContainer}>
<Slider />
</div>
);
}
@@ -26,7 +26,22 @@
width: 420px;
height: 214px;
}
.horizontalContainer > .container {
.patchesContainer {
font-size: small;
display: inline-flex;
flex-direction: row;
justify-content: center;
align-items: center;
padding: 16pt 8pt 16pt 8pt;
margin: 10pt;
border: solid 1pt black;
width: 680px;
height: 214px;
}
.horizontalContainer > .container,
.patchesContainer > .container {
padding: 0 16pt;
width: 100%;
margin: 10pt 0;
+2 -2
View File
@@ -6,7 +6,7 @@ import styles from './Parameters.module.css';
const Patch = (props) => {
return (
<div>
<div className={styles.container}>
Source
<SelectList
value={props.patch.source}
@@ -71,7 +71,7 @@ export default function Patches(props) {
const dispatch = useDispatch();
return (
<div className={styles.horizontalContainer}>
<div id="patches" className={styles.patchesContainer}>
<Patch
patch={parameters.patch1}
onChange={(value) =>
@@ -273,7 +273,30 @@ const parametersSlice = createSlice({
modIntensity: 0,
},
patch2: {
source: 'Amp EG',
source: 'Filter EG',
destination: 'Pitch',
modIntensity: 0,
},
patch3: {
source: 'LFO 1',
destination: 'Pitch',
modIntensity: 0,
},
patch4: {
source: 'LFO 2',
destination: 'Pitch',
modIntensity: 0,
},
},
'patches2': {
id: 'patches2',
patch1: {
source: 'Filter EG',
destination: 'Pitch',
modIntensity: 0,
},
patch2: {
source: 'Filter EG',
destination: 'Pitch',
modIntensity: 0,
},
+9 -1
View File
@@ -49,8 +49,12 @@ const timbreSlice = createSlice({
lfo2: 'lfo6',
},
},
currentTimbre: 'timbre1',
}),
reducers: {
timbreCurrentUpdate(state, action) {
state.currentTimbre = action.payload;
},
timbreAdded: timbreAdapter.addOne,
timbreUpdated: timbreAdapter.updateOne,
},
@@ -63,6 +67,10 @@ export const {
selectIds,
} = timbreAdapter.getSelectors((state) => state.timbres);
export const { timbreAdded, timbreUpdated } = timbreSlice.actions;
export const {
timbreCurrentUpdate,
timbreAdded,
timbreUpdated,
} = timbreSlice.actions;
export default timbreSlice.reducer;
+40
View File
@@ -0,0 +1,40 @@
import React from 'react';
import Timbre from './Timbre';
import Vocoder from './Vocoder';
import { useDispatch, useSelector } from 'react-redux';
import { timbreCurrentUpdate } from './timbreSlice';
export default function TimbreSwitcher(props) {
const currentTimbre = useSelector((state) => state.timbres.currentTimbre);
const dispatch = useDispatch();
function handleClick(e, value) {
e.preventDefault();
dispatch(timbreCurrentUpdate(value));
}
return (
<div>
<div>
<button onClick={(e) => handleClick(e, 'timbre1')}>
set to timbre 1
</button>
<button onClick={(e) => handleClick(e, 'timbre2')}>
set to timbre 2
</button>
<button onClick={(e) => handleClick(e, 'vocoder')}>
set to vocoder
</button>
</div>
<div>
{currentTimbre === 'timbre1' ? (
<Timbre id="timbre1" />
) : currentTimbre === 'timbre2' ? (
<Timbre id="timbre2" />
) : (
<Vocoder id="vocoder" />
)}
</div>
</div>
);
}