ensoniq-buddy/src/input.jsx

72 lines
1.7 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { calc_sr } from './utils'
var _onames = [];
export function Oscillators(props) {
if (!_onames.length) {
for (var i = 1; i < 33; ++i) {
var x = (calc_sr(i) / 1000 ).toFixed(2) + " kHz";
_onames.push(x)
}
}
var options = _onames.map( (x, ix) => {
var i = ix + 1;
return <option value={i} key={i}>{i} {x}</option>
});
// for (var i = 1; i < 33; ++i) {
// options.push(<option value={i} key={i}>{i}</option>);
// }
return <select {...props}>{options}</select>;
}
export function WaveSize(props) {
var options = []
for (var i = 8; i < 16; ++i) {
var ext = 1 << i;
var int = i - 8;
options.push(<option value={int} key={int}>{ext}</option>);
}
return <select value={props.value} onChange={props.onChange}>{options}</select>;
}
export function Resolution(props) {
var options = []
for (var i = 0; i < 8; ++i) {
options.push(<option value={i} key={i}>{i}</option>);
}
return <select value={props.value} onChange={props.onChange}>{options}</select>;
}
export function Frequency(props) {
/* number, min, max are not as strict as they ought to be */
return <input type="number" min="0" max="65535" value={props.value} onChange={props.onChange} />;
}
export function Assembler(props) {
var options = ["Merlin", "ORCA/M", "MPW"].map( (o, ix) => {
return <option key={ix} value={ix}>{o}</option>;
});
return <select {...props}>{options}</select>;
}
export function WaveShape(props) {
var options = ["Sine", "Square", "Triangle", "Sawtooth"].map( (o, ix) => {
return <option key={ix} value={ix}>{o}</option>;
});
return <select {...props}>{options}</select>;
}
export function CheckBox(props) {
return <input type="checkbox" {...props} />
}