Files
generative.fm/piece-loader.js
2020-10-13 02:12:54 -05:00

28 lines
912 B
JavaScript

'use strict';
const DEFAULT_VISUALIZATION_TYPE = 'squareCut';
const pieceLoader = source => {
const pieceManifest = JSON.parse(source);
const output = `import image from '${pieceManifest.image}';
import activate from '${pieceManifest.makePiece}';
export default {
image,
activate,
title: '${pieceManifest.title}',
id: '${pieceManifest.artistId}-${pieceManifest.id}',
artist: '${pieceManifest.artistId}',
isRecordable: ${typeof pieceManifest.isRecordable !== 'boolean' ||
pieceManifest.isRecordable},
tags: [${pieceManifest.tags.map(tag => `"${tag}"`)}],
releaseDate: new Date('${pieceManifest.releaseDate}'),
visualizationType: '${pieceManifest.visualizationType ||
DEFAULT_VISUALIZATION_TYPE}',
sampleNames: [${pieceManifest.sampleNames.map(name => `"${name}"`)}]
}`;
return output;
};
module.exports = pieceLoader;