export default function useCoconetModel()

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;
}