mirror of
https://github.com/ksherlock/ensoniq-buddy.git
synced 2024-09-25 21:54:43 +00:00
Compare commits
No commits in common. "320bcf3dca37ea3464e79b20c652b085e4466c69" and "2e68a2c0e03ad76f0299a926f67be7c14a287867" have entirely different histories.
320bcf3dca
...
2e68a2c0e0
@ -272,19 +272,6 @@ function DurationToSeconds(x) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
function DurationSplit(x) {
|
||||
let [time, unit] = split_value2(x);
|
||||
switch (+unit) {
|
||||
case 0:
|
||||
return [+time, "s"];
|
||||
case 1:
|
||||
return [+time / 1e3, "ms"];
|
||||
case 2:
|
||||
return [+time / 60, "ticks"];
|
||||
default:
|
||||
return [0, ""];
|
||||
}
|
||||
}
|
||||
var DurationInput = class extends preact.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
@ -371,19 +358,16 @@ function simplify(res, freq) {
|
||||
}
|
||||
function SampleDisplay(props) {
|
||||
var { shift, freq } = props;
|
||||
if (freq == 0)
|
||||
return [];
|
||||
var freq2 = log2(freq);
|
||||
var fspan = /* @__PURE__ */ preact.h("span", {
|
||||
title: "Frequency"
|
||||
}, freq);
|
||||
var fspann = freq == 1 ? /* @__PURE__ */ preact.h("i", null, "n") : /* @__PURE__ */ preact.h(preact.Fragment, null, "(", fspan, " * ", /* @__PURE__ */ preact.h("i", null, "n"), ")");
|
||||
var rv = [];
|
||||
rv.push(
|
||||
/* @__PURE__ */ preact.h("div", null, "Sample", /* @__PURE__ */ preact.h("sub", null, "n"), " = RAM[ ", fspann, " >> ", shift, " ]")
|
||||
/* @__PURE__ */ preact.h("div", null, "Sample", /* @__PURE__ */ preact.h("sub", null, "n"), " = RAM[ (", fspan, " * ", /* @__PURE__ */ preact.h("i", null, "n"), ") >> ", shift, " ]")
|
||||
);
|
||||
rv.push(
|
||||
/* @__PURE__ */ preact.h("div", null, "Sample", /* @__PURE__ */ preact.h("sub", null, "n"), " = RAM[ ", fspann, " / ", 1 << shift, " ]")
|
||||
/* @__PURE__ */ preact.h("div", null, "Sample", /* @__PURE__ */ preact.h("sub", null, "n"), " = RAM[ (", fspan, " * ", /* @__PURE__ */ preact.h("i", null, "n"), ") / ", 1 << shift, " ]")
|
||||
);
|
||||
if (freq2) {
|
||||
if (freq2 >= shift) {
|
||||
@ -410,28 +394,14 @@ function NoteDisplay(props) {
|
||||
var best_res = 0;
|
||||
var best_freq = 0;
|
||||
for (var res = 0; res < 8; ++res) {
|
||||
const shift = 1 << calc_shift(res, wave);
|
||||
const tmp = Math.round(f * shift);
|
||||
var tmp = Math.round(f * (1 << calc_shift(res, wave)));
|
||||
if (tmp >= 65536)
|
||||
break;
|
||||
best_res = res;
|
||||
best_freq = tmp;
|
||||
}
|
||||
[best_res, best_freq] = simplify(best_res, best_freq);
|
||||
return /* @__PURE__ */ preact.h(preact.Fragment, null, /* @__PURE__ */ preact.h(RateDisplay, {
|
||||
wave: 0,
|
||||
osc,
|
||||
freq: best_freq,
|
||||
res: best_res
|
||||
}), /* @__PURE__ */ preact.h("div", null, "Wave Size: 256"), /* @__PURE__ */ preact.h("div", null, "Resolution: ", best_res), /* @__PURE__ */ preact.h("div", null, "Frequency: ", best_freq));
|
||||
}
|
||||
function RateDisplay(props) {
|
||||
const { osc, wave, freq, res } = props;
|
||||
const sr = calc_sr(osc);
|
||||
const shift = 1 << calc_shift(res, wave);
|
||||
const size = 256 << wave;
|
||||
const rate = sr / (size * shift / freq);
|
||||
return /* @__PURE__ */ preact.h("div", null, "Rate: ", rate.toFixed(2), " Hz");
|
||||
return /* @__PURE__ */ preact.h(preact.Fragment, null, /* @__PURE__ */ preact.h("div", null, "Wave Size: 256"), /* @__PURE__ */ preact.h("div", null, "Resolution: ", best_res), /* @__PURE__ */ preact.h("div", null, "Frequency: ", best_freq));
|
||||
}
|
||||
function ResampleDisplay(props) {
|
||||
var { osc, size, freq } = props;
|
||||
@ -461,37 +431,25 @@ function HyperDisplay(props) {
|
||||
return /* @__PURE__ */ preact.h("div", null, "Relative: ", relative);
|
||||
}
|
||||
function TimerDisplay(props) {
|
||||
var { osc, duration } = props;
|
||||
const [time, units] = DurationSplit(duration);
|
||||
var { osc, time } = props;
|
||||
const sr = calc_sr(osc);
|
||||
const cycles = time * sr;
|
||||
const size = 0;
|
||||
var best_res = 0;
|
||||
var best_freq = 0;
|
||||
var actual = 0;
|
||||
best = [];
|
||||
for (var res = 0; res < 8; ++res) {
|
||||
var shift = 1 << calc_shift(res, size);
|
||||
var f = Math.round(shift * 256 / cycles);
|
||||
if (f >= 65536)
|
||||
continue;
|
||||
actual = Math.ceil(256 * shift / f);
|
||||
var actual = Math.ceil(256 * shift / f);
|
||||
best_res = res;
|
||||
best_freq = f;
|
||||
}
|
||||
[best_res, best_freq] = simplify(best_res, best_freq);
|
||||
var best_shift = calc_shift(best_res, size);
|
||||
switch (units) {
|
||||
case "s":
|
||||
break;
|
||||
case "ms":
|
||||
actual *= 1e3;
|
||||
break;
|
||||
case "ticks":
|
||||
actual *= 60;
|
||||
break;
|
||||
}
|
||||
return /* @__PURE__ */ preact.h(preact.Fragment, null, /* @__PURE__ */ preact.h("div", null, "Time: ", actual ? (actual / sr).toFixed(2) + " " + units : "N/A"), /* @__PURE__ */ preact.h("div", null, "Resolution: ", best_res ? best_res : "N/A"), /* @__PURE__ */ preact.h("div", null, "Frequency: ", best_freq ? best_freq : "N/A"), /* @__PURE__ */ preact.h(SampleDisplay, {
|
||||
return /* @__PURE__ */ preact.h(preact.Fragment, null, /* @__PURE__ */ preact.h("div", null, "Resolution: ", best_res ? best_res : "N/A"), /* @__PURE__ */ preact.h("div", null, "Frequency: ", best_freq ? best_freq : "N/A"), /* @__PURE__ */ preact.h(SampleDisplay, {
|
||||
freq: best_freq,
|
||||
shift: best_shift
|
||||
}));
|
||||
@ -604,13 +562,7 @@ var Application = class extends preact.Component {
|
||||
})), /* @__PURE__ */ preact.h("div", null, /* @__PURE__ */ preact.h("label", null, "Frequency"), " ", /* @__PURE__ */ preact.h(Frequency, {
|
||||
value: freq,
|
||||
onChange: this._freqChange
|
||||
})), /* @__PURE__ */ preact.h(RateDisplay, {
|
||||
wave,
|
||||
osc,
|
||||
freq,
|
||||
shift,
|
||||
res
|
||||
}), /* @__PURE__ */ preact.h(SampleDisplay, {
|
||||
})), /* @__PURE__ */ preact.h(SampleDisplay, {
|
||||
freq,
|
||||
shift
|
||||
}));
|
||||
@ -669,7 +621,7 @@ var Application = class extends preact.Component {
|
||||
onChange: this._durationChange
|
||||
})), /* @__PURE__ */ preact.h(TimerDisplay, {
|
||||
osc,
|
||||
duration
|
||||
time: DurationToSeconds(duration)
|
||||
}));
|
||||
}
|
||||
hyperChildren() {
|
||||
|
@ -8,7 +8,7 @@ import { WaveData } from './wave_data';
|
||||
|
||||
import { Oscillators, WaveSize, Resolution, Frequency, Assembler, WaveShape, CheckBox } from './input';
|
||||
|
||||
import { DurationInput, DurationSplit } from './duration_input';
|
||||
import { DurationInput, DurationToSeconds } from './duration_input';
|
||||
|
||||
const C4 = 4*12;
|
||||
|
||||
@ -32,24 +32,21 @@ function SampleDisplay(props) {
|
||||
|
||||
var { shift, freq } = props;
|
||||
|
||||
if (freq == 0) return [];
|
||||
|
||||
var freq2 = log2(freq);
|
||||
|
||||
var fspan = <span title="Frequency">{freq}</span>;
|
||||
|
||||
var fspann = freq == 1 ? <i>n</i> : <>({fspan} * <i>n</i>)</>;
|
||||
|
||||
var rv = [];
|
||||
|
||||
rv.push(
|
||||
<div>
|
||||
Sample<sub>n</sub> = RAM[ {fspann} >> {shift} ]
|
||||
Sample<sub>n</sub> = RAM[ ({fspan} * <i>n</i>) >> {shift} ]
|
||||
</div>
|
||||
);
|
||||
rv.push(
|
||||
<div>
|
||||
Sample<sub>n</sub> = RAM[ {fspann} / {1 << shift} ]
|
||||
Sample<sub>n</sub> = RAM[ ({fspan} * <i>n</i>) / {1 << shift} ]
|
||||
</div>
|
||||
);
|
||||
|
||||
@ -95,8 +92,7 @@ function NoteDisplay(props) {
|
||||
var best_res = 0;
|
||||
var best_freq = 0;
|
||||
for (var res = 0; res < 8; ++res) {
|
||||
const shift = (1 << calc_shift(res, wave));
|
||||
const tmp = Math.round(f * shift);
|
||||
var tmp = Math.round(f * (1 << calc_shift(res, wave)));
|
||||
if (tmp >= 0x10000) break;
|
||||
best_res = res;
|
||||
best_freq = tmp;
|
||||
@ -106,7 +102,6 @@ function NoteDisplay(props) {
|
||||
|
||||
return (
|
||||
<>
|
||||
<RateDisplay wave={0} osc={osc} freq={best_freq} res={best_res} />
|
||||
<div>Wave Size: 256</div>
|
||||
<div>Resolution: {best_res}</div>
|
||||
<div>Frequency: {best_freq}</div>
|
||||
@ -115,20 +110,6 @@ function NoteDisplay(props) {
|
||||
);
|
||||
}
|
||||
|
||||
function RateDisplay(props) {
|
||||
const { osc, wave, freq, res} = props;
|
||||
|
||||
const sr = calc_sr(osc);
|
||||
|
||||
const shift = (1 << calc_shift(res, wave));
|
||||
const size = 256 << wave;
|
||||
|
||||
const rate = sr / (size * shift / freq);
|
||||
|
||||
return <div>Rate: {rate.toFixed(2)} Hz</div>;
|
||||
}
|
||||
|
||||
|
||||
function ResampleDisplay(props) {
|
||||
|
||||
var { osc, size, freq } = props;
|
||||
@ -184,10 +165,8 @@ function HyperDisplay(props) {
|
||||
|
||||
|
||||
function TimerDisplay(props) {
|
||||
var {osc, duration } = props;
|
||||
var {osc, time } = props;
|
||||
|
||||
|
||||
const [time, units] = DurationSplit(duration);
|
||||
const sr = calc_sr(osc);
|
||||
|
||||
const cycles = time * sr;
|
||||
@ -203,7 +182,6 @@ function TimerDisplay(props) {
|
||||
|
||||
var best_res = 0;
|
||||
var best_freq = 0;
|
||||
var actual = 0;
|
||||
|
||||
best = []
|
||||
for (var res = 0; res < 8; ++res) {
|
||||
@ -211,7 +189,7 @@ function TimerDisplay(props) {
|
||||
var f = Math.round(shift * 256 / cycles);
|
||||
if (f >= 0x10000) continue; // break;
|
||||
|
||||
actual = Math.ceil(256 * shift / f);
|
||||
var actual = Math.ceil(256 * shift / f);
|
||||
|
||||
best_res = res;
|
||||
best_freq = f;
|
||||
@ -220,15 +198,8 @@ function TimerDisplay(props) {
|
||||
[best_res, best_freq] = simplify(best_res, best_freq);
|
||||
var best_shift = calc_shift(best_res, size);
|
||||
|
||||
switch(units) {
|
||||
case "s": break;
|
||||
case "ms": actual *= 1000; break;
|
||||
case "ticks": actual *= 60; break;
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<div>Time: { actual ? (actual / sr).toFixed(2) + " " + units : "N/A" }</div>
|
||||
<div>Resolution: {best_res ? best_res : "N/A"}</div>
|
||||
<div>Frequency: {best_freq ? best_freq : "N/A"}</div>
|
||||
<SampleDisplay freq={best_freq} shift={best_shift} />
|
||||
@ -367,8 +338,6 @@ export class Application extends preact.Component {
|
||||
<label>Frequency</label> <Frequency value={freq} onChange={this._freqChange} />
|
||||
</div>
|
||||
|
||||
<RateDisplay wave={wave} osc={osc} freq={freq} shift={shift} res={res} />
|
||||
|
||||
<SampleDisplay freq={freq} shift={shift} />
|
||||
</>
|
||||
);
|
||||
@ -448,7 +417,7 @@ export class Application extends preact.Component {
|
||||
<label>Duration</label> <DurationInput value={duration} onChange={this._durationChange} />
|
||||
</div>
|
||||
|
||||
<TimerDisplay osc={osc} duration={duration} />
|
||||
<TimerDisplay osc={osc} time={DurationToSeconds(duration)} />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
@ -13,18 +13,6 @@ function split_value(x) {
|
||||
return [ "", 0];
|
||||
}
|
||||
|
||||
export function DurationToUnits(x) {
|
||||
|
||||
let [ time, unit ] = split_value(x);
|
||||
switch (+unit) {
|
||||
case 0: "seconds"; // seconds;
|
||||
case 1: "milliseconds" ; // milliseconds;
|
||||
case 2: "ticks"; // ticks
|
||||
default: return "";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export function DurationToSeconds(x) {
|
||||
|
||||
let [ time, unit ] = split_value(x);
|
||||
@ -36,18 +24,6 @@ export function DurationToSeconds(x) {
|
||||
}
|
||||
}
|
||||
|
||||
export function DurationSplit(x) {
|
||||
|
||||
let [ time, unit ] = split_value(x);
|
||||
switch (+unit) {
|
||||
case 0: return [+time, "s"]; // seconds;
|
||||
case 1: return [+time / 1000, "ms"]; // milliseconds;
|
||||
case 2: return [+time / 60, "ticks"]; // ticks
|
||||
default: return [0, ""];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export class DurationInput extends preact.Component {
|
||||
|
||||
constructor(props) {
|
||||
|
Loading…
Reference in New Issue
Block a user