Files
alapatch/src/features/editor/timbreSlice.js
T
Aoife 99e2babad4 redesign complete
.remove unused import
2021-04-06 13:44:07 -04:00

92 lines
2.0 KiB
JavaScript

import { createSlice, createEntityAdapter } from '@reduxjs/toolkit';
const timbreAdapter = createEntityAdapter({});
const timbreSlice = createSlice({
name: 'timbre',
initialState: timbreAdapter.getInitialState({
ids: ['timbre1', 'timbre2', 'vocoder', 'effects', 'arpeggio'],
entities: {
timbre1: {
id: 'timbre1',
vco1: 'vco1',
vco2: 'vco2',
mixer: 'mixer1',
pitch: 'pitch1',
filter: 'filter1',
eg1: 'eg1',
amp: 'amp1',
eg2: 'eg2',
lfo1: 'lfo1',
lfo2: 'lfo2',
patches: 'patches1',
},
timbre2: {
id: 'timbre2',
vco1: 'vco3',
vco2: 'vco4',
mixer: 'mixer2',
pitch: 'pitch2',
filter: 'filter2',
eg1: 'eg3',
amp: 'amp2',
eg2: 'eg4',
lfo1: 'lfo3',
lfo2: 'lfo4',
patches: 'patches2',
},
vocoder: {
id: 'vocoder',
vco: 'vco5',
audioIn: 'audioIn',
mixer: 'mixer3',
pitch: 'pitch3',
filter: 'filter3',
fcMod: 'fcMod',
eg: 'eg5',
eg2: 'unusedVocoder',
amp: 'amp3',
lfo1: 'lfo5',
lfo2: 'lfo6',
levels: 'levels',
pans: 'pans',
},
effects: {
id: 'effects',
modfx: 'modfx',
delay: 'delay',
eq: 'eq',
arpeggA: 'arpeggA',
arpeggB: 'arpeggB',
},
arpeggio: {
arpeggA: 'arpeggA',
arpeggB: 'arpeggB',
},
},
currentTimbre: 'timbre1',
}),
reducers: {
timbreCurrentUpdate(state, action) {
state.currentTimbre = action.payload;
},
timbreAdded: timbreAdapter.addOne,
timbreUpdated: timbreAdapter.updateOne,
},
});
export const {
selectById,
selectAll,
selectEntities,
selectIds,
} = timbreAdapter.getSelectors((state) => state.timbres);
export const {
timbreCurrentUpdate,
timbreAdded,
timbreUpdated,
} = timbreSlice.actions;
export default timbreSlice.reducer;