in src/hooks/use-piano-genie.ts [25:54]
export default function usePianoGenie(load = true): mm.PianoGenie | undefined {
const [genie, setGenie] = useState<mm.PianoGenie>();
useEffect(() => {
if (!load) return;
const promise = Promise.all([
import("@magenta/music/esm/piano_genie"),
import("@tensorflow/tfjs"),
])
.then(([mmg, tf]) => {
tf.disableDeprecationWarnings();
const genie = new mmg.PianoGenie(checkpoint);
return genie.initialize().then(() => genie);
})
.then((genie) => {
genie.next(0, temperature);
genie.resetState();
setGenie(genie);
return genie;
});
return () => {
promise.then((genie) => {
genie.dispose();
});
};
}, [load]);
return genie;
}