in src/hooks/use-coconet-model.ts [20:51]
export default function useCoconetModel(
load: boolean,
url = "https://storage.googleapis.com/magentadata/js/checkpoints/coconet/bach"
): mm.Coconet | undefined {
const [model, setModel] = useState<mm.Coconet>();
useEffect(() => {
if (!load) return;
const promise = Promise.all([
import("@tensorflow/tfjs-backend-webgl"),
import("@tensorflow/tfjs-backend-cpu"),
import("@magenta/music/esm/coconet"),
])
.then(([, , mmc]) => {
const m = new mmc.Coconet(url);
return m.initialize().then(() => m);
})
.then((m) => {
setModel(m);
return m;
});
return () => {
promise.then((m) => {
m.dispose();
});
};
}, [url, load]);
return model;
}