import { useEffect, useRef, useState } from "react";
import { MembraneSynth, Offline, Player } from "tone";

interface Synthhh {
  kick?: Player;
}

const sound: Synthhh = {};

Offline(() => {
  new MembraneSynth().toDestination().triggerAttackRelease("C2", "32n");
}, 5).then((buffer) => {
  sound.kick = new Player(buffer).toDestination();
});

export const useSound = () => {
  const [counter, setCounter] = useState(0);

  const synthRef = useRef(sound);

  useEffect(() => {
    synthRef.current.kick?.start();
  }, [counter]);

  const setCounterHandler = () => {
    setCounter((v) => v + 1);
  };

  return [setCounterHandler];
};