Rename timbre to editor, remove outdated tabs
This commit is contained in:
+1
-6
@@ -4,12 +4,7 @@
|
|||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
|
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<meta name="theme-color" content="#000000" />
|
<meta name="description" content="Alapatch - A microKORG patch editor" />
|
||||||
<meta
|
|
||||||
name="description"
|
|
||||||
content="Web site created using create-react-app"
|
|
||||||
/>
|
|
||||||
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
|
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" />
|
<link rel="preconnect" href="https://fonts.gstatic.com" />
|
||||||
<link
|
<link
|
||||||
href="https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,wght@0,300;0,400;0,600;0,700;0,900;1,400&display=swap"
|
href="https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,wght@0,300;0,400;0,600;0,700;0,900;1,400&display=swap"
|
||||||
|
|||||||
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import Menu from './features/menu';
|
import Menu from './features/menu';
|
||||||
import TimbreSwitcher from './features/timbre/timbreSwitcher';
|
import Editor from './features/editor';
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
return (
|
return (
|
||||||
<div className='grid grid-cols-6 grid-rows-1 gap-4 h-screen'>
|
<div className='grid grid-cols-6 grid-rows-1 gap-4 h-screen'>
|
||||||
<Menu className='col-span-1' />
|
<Menu className='col-span-1' />
|
||||||
<TimbreSwitcher className='col-span-5' />
|
<Editor className='col-span-5' />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-6
@@ -1,10 +1,10 @@
|
|||||||
import { configureStore } from '@reduxjs/toolkit';
|
import { configureStore } from '@reduxjs/toolkit';
|
||||||
import timbreReducer from '../features/timbre/timbreSlice';
|
import timbreReducer from '../features/editor/timbreSlice';
|
||||||
import parameterReducer from '../features/timbre/parameters/parameterSlice';
|
import parameterReducer from '../features/editor/parameters/parameterSlice';
|
||||||
|
|
||||||
export default configureStore({
|
export default configureStore({
|
||||||
reducer: {
|
reducer: {
|
||||||
timbres: timbreReducer,
|
timbres: timbreReducer,
|
||||||
parameters: parameterReducer,
|
parameters: parameterReducer,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
import Timbre from './Timbre';
|
||||||
|
import Vocoder from './Vocoder';
|
||||||
|
import Effects from './Effects';
|
||||||
|
import Arpeggio from './Arpeggio';
|
||||||
|
import { useSelector } from 'react-redux';
|
||||||
|
|
||||||
|
const Editor = () => {
|
||||||
|
const activeTab = useSelector((state) => state.parameters.activeTab);
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{activeTab === 'Timbre1' ? <Timbre id='timbre1' /> : null}
|
||||||
|
{activeTab === 'Timbre2' ? <Timbre id='timbre2' /> : null}
|
||||||
|
{activeTab === 'Vocoder' ? <Vocoder id='vocoder' /> : null}
|
||||||
|
{activeTab === 'Effects' ? <Effects id='effects' /> : null}
|
||||||
|
{activeTab === 'Arpeggio' ? <Arpeggio id='arpeggio' /> : null}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Editor;
|
||||||
+4
-4
@@ -425,7 +425,7 @@ const defaultState = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
unsaved: false,
|
unsaved: false,
|
||||||
tabIndex: 0,
|
activeTab: 'Timbre1',
|
||||||
};
|
};
|
||||||
|
|
||||||
const parametersAdapter = createEntityAdapter({});
|
const parametersAdapter = createEntityAdapter({});
|
||||||
@@ -442,8 +442,8 @@ const parametersSlice = createSlice({
|
|||||||
parameterFlipUnsaved(state) {
|
parameterFlipUnsaved(state) {
|
||||||
state.unsaved = !state.unsaved;
|
state.unsaved = !state.unsaved;
|
||||||
},
|
},
|
||||||
parameterUpdateIndex(state, action) {
|
parameterUpdateTab(state, action) {
|
||||||
state.tabIndex = action.payload;
|
state.activeTab = action.payload;
|
||||||
},
|
},
|
||||||
parameterFromFile(state, action) {
|
parameterFromFile(state, action) {
|
||||||
parametersAdapter.upsertMany(state, action.payload);
|
parametersAdapter.upsertMany(state, action.payload);
|
||||||
@@ -464,7 +464,7 @@ export const {
|
|||||||
parameterRefreshAll,
|
parameterRefreshAll,
|
||||||
parameterFlipUnsaved,
|
parameterFlipUnsaved,
|
||||||
parameterFromFile,
|
parameterFromFile,
|
||||||
parameterUpdateIndex,
|
parameterUpdateTab,
|
||||||
} = parametersSlice.actions;
|
} = parametersSlice.actions;
|
||||||
|
|
||||||
export default parametersSlice.reducer;
|
export default parametersSlice.reducer;
|
||||||
@@ -2,12 +2,12 @@ import { useRef, useState, useEffect } from 'react';
|
|||||||
import { Select } from '../utils/components';
|
import { Select } from '../utils/components';
|
||||||
import { useDispatch, useSelector } from 'react-redux';
|
import { useDispatch, useSelector } from 'react-redux';
|
||||||
import {
|
import {
|
||||||
parameterUpdateIndex,
|
parameterUpdateTab,
|
||||||
parameterUpdated,
|
parameterUpdated,
|
||||||
parameterFromFile,
|
parameterFromFile,
|
||||||
parameterRefreshAll,
|
parameterRefreshAll,
|
||||||
selectEntities,
|
selectEntities,
|
||||||
} from '../timbre/parameters/parameterSlice'; // probably temporarily here
|
} from '../editor/parameters/parameterSlice'; // probably temporarily here
|
||||||
import { return_store_from_file, return_file_from_store } from '../io';
|
import { return_store_from_file, return_file_from_store } from '../io';
|
||||||
|
|
||||||
export default function Menu() {
|
export default function Menu() {
|
||||||
@@ -106,7 +106,7 @@ export default function Menu() {
|
|||||||
disabled={state.patch.mode === 'Vocoder'}
|
disabled={state.patch.mode === 'Vocoder'}
|
||||||
className='btn'
|
className='btn'
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
dispatch(parameterUpdateIndex(0));
|
dispatch(parameterUpdateTab('Timbre1'));
|
||||||
}}>
|
}}>
|
||||||
Timbre 1
|
Timbre 1
|
||||||
</button>
|
</button>
|
||||||
@@ -114,7 +114,7 @@ export default function Menu() {
|
|||||||
disabled={state.patch.mode !== 'Multiple'}
|
disabled={state.patch.mode !== 'Multiple'}
|
||||||
className='btn'
|
className='btn'
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
dispatch(parameterUpdateIndex(1));
|
dispatch(parameterUpdateTab('Timbre2'));
|
||||||
}}>
|
}}>
|
||||||
Timbre 2
|
Timbre 2
|
||||||
</button>
|
</button>
|
||||||
@@ -122,21 +122,21 @@ export default function Menu() {
|
|||||||
disabled={state.patch.mode !== 'Vocoder'}
|
disabled={state.patch.mode !== 'Vocoder'}
|
||||||
className='btn'
|
className='btn'
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
dispatch(parameterUpdateIndex(2));
|
dispatch(parameterUpdateTab('Vocoder'));
|
||||||
}}>
|
}}>
|
||||||
Vocoder
|
Vocoder
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
className='btn'
|
className='btn'
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
dispatch(parameterUpdateIndex(3));
|
dispatch(parameterUpdateTab('Effects'));
|
||||||
}}>
|
}}>
|
||||||
Effects
|
Effects
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
className='btn'
|
className='btn'
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
dispatch(parameterUpdateIndex(4));
|
dispatch(parameterUpdateTab('Arpeggio'));
|
||||||
}}>
|
}}>
|
||||||
Arpeggio
|
Arpeggio
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
import React from 'react';
|
|
||||||
import Timbre from './Timbre';
|
|
||||||
import Vocoder from './Vocoder';
|
|
||||||
import Effects from './Effects';
|
|
||||||
import Arpeggio from './Arpeggio';
|
|
||||||
import { Tab, Tabs, TabList, TabPanel } from 'react-tabs';
|
|
||||||
import { useSelector } from 'react-redux';
|
|
||||||
|
|
||||||
export default function TimbreSwitcher() {
|
|
||||||
const index = useSelector((state) => state.parameters.tabIndex);
|
|
||||||
return (
|
|
||||||
<div>
|
|
||||||
<Tabs selectedIndex={index} onSelect={() => {}}>
|
|
||||||
<TabList>
|
|
||||||
<Tab>Timbre 1</Tab>
|
|
||||||
<Tab>Timbre 2</Tab>
|
|
||||||
<Tab>Vocoder</Tab>
|
|
||||||
<Tab>Effects</Tab>
|
|
||||||
<Tab>Arpeggio</Tab>
|
|
||||||
</TabList>
|
|
||||||
|
|
||||||
<TabPanel>
|
|
||||||
<Timbre id='timbre1' />
|
|
||||||
</TabPanel>
|
|
||||||
<TabPanel>
|
|
||||||
<Timbre id='timbre2' />
|
|
||||||
</TabPanel>
|
|
||||||
<TabPanel>
|
|
||||||
<Vocoder id='vocoder' />
|
|
||||||
</TabPanel>
|
|
||||||
<TabPanel>
|
|
||||||
<Effects id='effects' />
|
|
||||||
</TabPanel>
|
|
||||||
<TabPanel>
|
|
||||||
<Arpeggio id='arpeggio' />
|
|
||||||
</TabPanel>
|
|
||||||
</Tabs>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user