export default function usePianoGenie()

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