{"version":3,"file":"sineTone.mjs","sources":["../../src/utils/sineTone.ts"],"sourcesContent":["import { Sound } from '../Sound';\nimport { WebAudioContext } from '../webaudio/WebAudioContext';\nimport { WebAudioMedia } from '../webaudio/WebAudioMedia';\n\n/**\n * Create a new sound for a sine wave-based tone.  **Only supported with WebAudio**\n * @memberof utils\n * @param hertz - Frequency of sound.\n * @param seconds - Duration of sound in seconds.\n * @return New sound.\n */\nfunction sineTone(hertz = 200, seconds = 1): Sound\n{\n    const sound = Sound.from({\n        singleInstance: true,\n    });\n\n    if (!(sound.media instanceof WebAudioMedia))\n    {\n        return sound;\n    }\n\n    const media = sound.media as WebAudioMedia;\n    const context = sound.context as WebAudioContext;\n\n    // set default value\n    const nChannels = 1;\n    const sampleRate = 48000;\n    const amplitude = 2;\n\n    // create the buffer\n    const buffer = context.audioContext.createBuffer(\n        nChannels,\n        seconds * sampleRate,\n        sampleRate,\n    );\n    const fArray = buffer.getChannelData(0);\n\n    // fill the buffer\n    for (let i = 0; i < fArray.length; i++)\n    {\n        const time = i / buffer.sampleRate;\n        const angle = hertz * time * 2 * Math.PI;\n\n        fArray[i] = Math.sin(angle) * amplitude;\n    }\n\n    // set the buffer\n    media.buffer = buffer;\n    sound.isLoaded = true;\n\n    return sound;\n}\n\nexport { sineTone };\n"],"names":[],"mappings":";;;AAWA,SAAS,QAAS,CAAA,KAAA,GAAQ,GAAK,EAAA,OAAA,GAAU,CACzC,EAAA;AACI,EAAM,MAAA,KAAA,GAAQ,MAAM,IAAK,CAAA;AAAA,IACrB,cAAgB,EAAA,IAAA;AAAA,GACnB,CAAA,CAAA;AAED,EAAI,IAAA,EAAE,KAAM,CAAA,KAAA,YAAiB,aAC7B,CAAA,EAAA;AACI,IAAO,OAAA,KAAA,CAAA;AAAA,GACX;AAEA,EAAA,MAAM,QAAQ,KAAM,CAAA,KAAA,CAAA;AACpB,EAAA,MAAM,UAAU,KAAM,CAAA,OAAA,CAAA;AAGtB,EAAA,MAAM,SAAY,GAAA,CAAA,CAAA;AAClB,EAAA,MAAM,UAAa,GAAA,IAAA,CAAA;AACnB,EAAA,MAAM,SAAY,GAAA,CAAA,CAAA;AAGlB,EAAM,MAAA,MAAA,GAAS,QAAQ,YAAa,CAAA,YAAA;AAAA,IAChC,SAAA;AAAA,IACA,OAAU,GAAA,UAAA;AAAA,IACV,UAAA;AAAA,GACJ,CAAA;AACA,EAAM,MAAA,MAAA,GAAS,MAAO,CAAA,cAAA,CAAe,CAAC,CAAA,CAAA;AAGtC,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,MAAA,CAAO,QAAQ,CACnC,EAAA,EAAA;AACI,IAAM,MAAA,IAAA,GAAO,IAAI,MAAO,CAAA,UAAA,CAAA;AACxB,IAAA,MAAM,KAAQ,GAAA,KAAA,GAAQ,IAAO,GAAA,CAAA,GAAI,IAAK,CAAA,EAAA,CAAA;AAEtC,IAAA,MAAA,CAAO,CAAC,CAAA,GAAI,IAAK,CAAA,GAAA,CAAI,KAAK,CAAI,GAAA,SAAA,CAAA;AAAA,GAClC;AAGA,EAAA,KAAA,CAAM,MAAS,GAAA,MAAA,CAAA;AACf,EAAA,KAAA,CAAM,QAAW,GAAA,IAAA,CAAA;AAEjB,EAAO,OAAA,KAAA,CAAA;AACX;;;;"}