u-he-preset-randomizer
Version:
Create random u-he synth presets through randomization and merging of your existing presets.
52 lines • 1.89 kB
JavaScript
/**
* @file Preset library filtering utilities.
* Provides functions to filter presets by category, author, and favorites.
*/
import chalk from 'chalk';
export function narrowDownByCategory(presetLibrary, category) {
const filteredPresets = presetLibrary.presets.filter((el) => {
if (!el.categories.length) {
return false;
}
for (const ownCategory of el.categories) {
if (ownCategory.startsWith(category)) {
return true;
}
}
return false;
});
return filteredPresets;
}
export function narrowDownByAuthor(presetLibrary, author) {
const filteredPresets = presetLibrary.presets.filter((el) => {
const authorMeta = el.meta.find((meta) => meta.key === 'Author');
return authorMeta?.value === author;
});
return filteredPresets;
}
export function narrowDownByFavoritesFile(presetLibrary, favorites) {
const favList = Array.isArray(favorites) ? favorites : [favorites];
const favPresets = [];
const filteredPresets = [];
for (const favoriteFilePath of favList) {
const favoriteFile = presetLibrary.favorites.find((el) => el.fileName === favoriteFilePath);
if (favoriteFile) {
favPresets.push(...favoriteFile.presets);
}
else {
console.error(chalk.red(`Error: Could not find favorites file: ${favoriteFilePath}`));
return []; // Return empty array instead of all presets
}
}
for (const preset of presetLibrary.presets) {
for (const fav of favPresets) {
if (preset.filePath.toLowerCase() ===
`${fav.path.toLowerCase()}/${fav.name.toLowerCase()}.h2p`) {
filteredPresets.push(preset);
break;
}
}
}
return filteredPresets;
}
//# sourceMappingURL=libraryFilters.js.map