UNPKG

woolball-client

Version:

Client-side library for Woolball enabling secure browser resource sharing for distributed AI task processing

65 lines (64 loc) 2.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.musicGeneration = void 0; let musicRNN = null; let musicVAE = null; async function generateWithMusicRNN(sequence, steps = 64, temperature = 1.0) { const mm = await import('@magenta/music'); if (!musicRNN) { musicRNN = new mm.MusicRNN('https://storage.googleapis.com/magentadata/js/checkpoints/music_rnn/basic_rnn'); await musicRNN.initialize(); } try { const result = await musicRNN.continueSequence(sequence, steps, temperature); const player = new mm.Player(); return { generatedSequence: result, play: () => player.start(result), stop: () => player.stop(), midi: mm.sequenceProtoToMidi(result) }; } catch (error) { throw error; } } async function generateWithMusicVAE(numOutputs = 1, temperature = 1.0, modelType = 'mel_4bar') { const mm = await import('@magenta/music'); if (!musicVAE) { musicVAE = new mm.MusicVAE(`https://storage.googleapis.com/magentadata/js/checkpoints/music_vae/${modelType}`); await musicVAE.initialize(); } try { const samples = await musicVAE.sample(numOutputs, temperature); const player = new mm.Player(); return { generatedSequences: samples, play: (index = 0) => player.start(samples[index]), stop: () => player.stop(), midis: samples.map((sample) => mm.sequenceProtoToMidi(sample)) }; } catch (error) { throw error; } } async function musicGeneration(data) { const { input, model = 'music-rnn', temperature = 1.0, steps = 64, numOutputs = 1, modelType = 'mel_4bar', ...options } = data; try { const parsedInput = typeof input === 'string' ? JSON.parse(input) : input; if (model === 'music-rnn') { return await generateWithMusicRNN(parsedInput.sequence, steps, temperature); } else if (model === 'music-vae') { return await generateWithMusicVAE(numOutputs, temperature, modelType); } else { throw new Error(`Modelo não suportado: ${model}. Use 'music-rnn' ou 'music-vae'.`); } } catch (error) { throw error; } } exports.musicGeneration = musicGeneration;