mirror of
https://github.com/captbaritone/webamp.git
synced 2026-07-22 09:37:17 +00:00
use preset pack meta to load all keys initially
This commit is contained in:
parent
76f60e14a5
commit
c0b004bb47
4 changed files with 53 additions and 21 deletions
|
|
@ -28,7 +28,7 @@ class PresetOverlay extends React.Component {
|
|||
this.setState({
|
||||
presetIdx: Math.min(
|
||||
this.state.presetIdx + 1,
|
||||
Object.keys(this.props.presets).length - 1
|
||||
this.props.presetKeys.length - 1
|
||||
)
|
||||
});
|
||||
e.stopPropagation();
|
||||
|
|
@ -44,7 +44,7 @@ class PresetOverlay extends React.Component {
|
|||
}
|
||||
}
|
||||
render() {
|
||||
if (!this.props.presets) {
|
||||
if (!this.props.presetKeys) {
|
||||
return (
|
||||
<div
|
||||
style={{
|
||||
|
|
@ -61,8 +61,7 @@ class PresetOverlay extends React.Component {
|
|||
}
|
||||
|
||||
// display highlighted preset in the middle if possible
|
||||
const presetKeys = Object.keys(this.props.presets);
|
||||
const numPresets = presetKeys.length;
|
||||
const numPresets = this.props.presetKeys.length;
|
||||
let presetListLen = Math.floor(this.props.height / 20);
|
||||
presetListLen = Math.min(Math.max(presetListLen, 3), numPresets);
|
||||
presetListLen = presetListLen % 2 ? presetListLen : presetListLen - 1;
|
||||
|
|
@ -73,7 +72,7 @@ class PresetOverlay extends React.Component {
|
|||
startIdx = Math.max(endIdx - presetListLen, 0);
|
||||
endIdx = Math.min(startIdx + presetListLen, numPresets);
|
||||
}
|
||||
const presets = presetKeys.slice(startIdx, endIdx);
|
||||
const presets = this.props.presetKeys.slice(startIdx, endIdx);
|
||||
const presetElms = presets.map((presetName, i) => {
|
||||
let color;
|
||||
if (i + startIdx === this.props.currentPreset) {
|
||||
|
|
|
|||
|
|
@ -22,14 +22,22 @@ class MilkdropWindow extends React.Component {
|
|||
}
|
||||
componentDidMount() {
|
||||
require.ensure(
|
||||
["butterchurn", "butterchurn-presets/lib/butterchurnPresetsMinimal.min"],
|
||||
[
|
||||
"butterchurn",
|
||||
"butterchurn-presets/lib/butterchurnPresetsMinimal.min",
|
||||
"butterchurn-presets/lib/butterchurnPresetPackMeta.min"
|
||||
],
|
||||
require => {
|
||||
const analyserNode = this.props.analyser;
|
||||
const butterchurn = require("butterchurn");
|
||||
const butterchurnPresets = require("butterchurn-presets/lib/butterchurnPresetsMinimal.min");
|
||||
this.presets = butterchurnPresets.getPresets();
|
||||
this.presetKeys = Object.keys(this.presets);
|
||||
const presetIdx = Math.floor(Math.random() * this.presetKeys.length);
|
||||
const butterchurnMinimalPresets = require("butterchurn-presets/lib/butterchurnPresetsMinimal.min");
|
||||
const presetPackMeta = require("butterchurn-presets/lib/butterchurnPresetPackMeta.min");
|
||||
this.presets = butterchurnMinimalPresets.getPresets();
|
||||
this.minmalPresetKeys = Object.keys(this.presets);
|
||||
this.presetKeys = presetPackMeta.getMainPresetMeta().presets;
|
||||
const presetKey = this.minmalPresetKeys[
|
||||
Math.floor(Math.random() * this.minmalPresetKeys.length)
|
||||
];
|
||||
|
||||
this.visualizer = butterchurn.createVisualizer(
|
||||
analyserNode.context,
|
||||
|
|
@ -43,7 +51,7 @@ class MilkdropWindow extends React.Component {
|
|||
this._canvasNode.width = this.props.width;
|
||||
this._canvasNode.height = this.props.height;
|
||||
this.visualizer.connectAudio(analyserNode);
|
||||
this.visualizer.loadPreset(this.presets[this.presetKeys[presetIdx]], 0);
|
||||
this.visualizer.loadPreset(this.presets[presetKey], 0);
|
||||
// Kick off the animation loop
|
||||
const loop = () => {
|
||||
if (this.props.status === "PLAYING") {
|
||||
|
|
@ -53,7 +61,7 @@ class MilkdropWindow extends React.Component {
|
|||
};
|
||||
loop();
|
||||
|
||||
this.presetHistory = [presetIdx];
|
||||
this.presetHistory = [this.presetKeys.indexOf(presetKey)];
|
||||
this.presetRandomize = true;
|
||||
this.presetCycle = true;
|
||||
this._restartCycling();
|
||||
|
|
@ -154,7 +162,23 @@ class MilkdropWindow extends React.Component {
|
|||
break;
|
||||
}
|
||||
}
|
||||
_nextPreset(blendTime) {
|
||||
async _loadMainPresetPack() {
|
||||
return require.ensure(
|
||||
["butterchurn-presets"],
|
||||
require => {
|
||||
const butterchurnPresets = require("butterchurn-presets");
|
||||
this.presets = Object.assign(
|
||||
this.presets,
|
||||
butterchurnPresets.getPresets()
|
||||
);
|
||||
},
|
||||
e => {
|
||||
console.error("Error loading Butterchurn Presets", e);
|
||||
},
|
||||
"butterchurn-presets"
|
||||
);
|
||||
}
|
||||
async _nextPreset(blendTime) {
|
||||
// The visualizer may not have initialized yet.
|
||||
if (this.visualizer != null) {
|
||||
let presetIdx;
|
||||
|
|
@ -164,7 +188,12 @@ class MilkdropWindow extends React.Component {
|
|||
const prevPresetIdx = this.presetHistory[this.presetHistory.length - 1];
|
||||
presetIdx = (prevPresetIdx + 1) % this.presetKeys.length;
|
||||
}
|
||||
const preset = this.presets[this.presetKeys[presetIdx]];
|
||||
let preset = this.presets[this.presetKeys[presetIdx]];
|
||||
if (!preset) {
|
||||
await this._loadMainPresetPack();
|
||||
preset = this.presets[this.presetKeys[presetIdx]];
|
||||
}
|
||||
|
||||
this.presetHistory.push(presetIdx);
|
||||
this.visualizer.loadPreset(preset, blendTime);
|
||||
this._restartCycling();
|
||||
|
|
@ -183,8 +212,12 @@ class MilkdropWindow extends React.Component {
|
|||
this.setState({ currentPreset: prevPreset });
|
||||
}
|
||||
}
|
||||
selectPreset(presetIdx) {
|
||||
const preset = this.presets[this.presetKeys[presetIdx]];
|
||||
async selectPreset(presetIdx) {
|
||||
let preset = this.presets[this.presetKeys[presetIdx]];
|
||||
if (!preset) {
|
||||
await this._loadMainPresetPack();
|
||||
preset = this.presets[this.presetKeys[presetIdx]];
|
||||
}
|
||||
this.presetHistory.push(presetIdx);
|
||||
this.visualizer.loadPreset(preset, 0);
|
||||
this._restartCycling();
|
||||
|
|
@ -222,7 +255,7 @@ class MilkdropWindow extends React.Component {
|
|||
<PresetOverlay
|
||||
width={width}
|
||||
height={height}
|
||||
presets={this.presets}
|
||||
presetKeys={this.presetKeys}
|
||||
currentPreset={this.state.currentPreset}
|
||||
onFocusedKeyDown={listener => this.props.onFocusedKeyDown(listener)}
|
||||
selectPreset={idx => this.selectPreset(idx)}
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@
|
|||
"babel-preset-react": "^6.24.1",
|
||||
"babel-runtime": "^6.26.0",
|
||||
"butterchurn": "^2.4.3",
|
||||
"butterchurn-presets": "^2.4.4",
|
||||
"butterchurn-presets": "^2.4.5",
|
||||
"canvas-mock": "0.0.0",
|
||||
"cardinal-spline-js": "^2.3.6",
|
||||
"classnames": "^2.2.5",
|
||||
|
|
|
|||
|
|
@ -1269,9 +1269,9 @@ builtin-status-codes@^3.0.0:
|
|||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
|
||||
|
||||
butterchurn-presets@^2.4.4:
|
||||
version "2.4.4"
|
||||
resolved "https://registry.yarnpkg.com/butterchurn-presets/-/butterchurn-presets-2.4.4.tgz#23764b47e9d30c29caf95d974a92002f6f29c057"
|
||||
butterchurn-presets@^2.4.5:
|
||||
version "2.4.5"
|
||||
resolved "https://registry.yarnpkg.com/butterchurn-presets/-/butterchurn-presets-2.4.5.tgz#5e05f2c57e941ff2d24f655b0ea842ca1ff4787a"
|
||||
dependencies:
|
||||
babel-runtime "^6.26.0"
|
||||
ecma-proposal-math-extensions "0.0.2"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue