#!/usr/bin/env python3
"""Genera clic-interruptor.wav: el único sonido de marca de Creators Latam.
Es la función clic() de la mezcla de las demos, sin cambios: un golpe seco de ruido (se apaga en 1,2 ms) y dos tonos,
de 2300 Hz y 900 Hz, que se apagan en 6 y 12 ms. Dura 50 ms y su pico queda a -20 dBFS, que es el nivel con el que entra en la mezcla.
Uso:  python3 generar-clic.py     (necesita numpy; escribe clic-interruptor.wav en esta carpeta)"""
import wave
import numpy as np

SR = 48000


def clic():   # golpe seco corto + resonancia breve; pico -20 dBFS
    t = np.arange(int(0.05 * SR)) / SR; rng = np.random.default_rng(1)
    y = rng.standard_normal(len(t)) * np.exp(-t / 0.0012) * 0.6 + np.sin(2 * np.pi * 2300 * t) * np.exp(-t / 0.006) * 0.5 + np.sin(2 * np.pi * 900 * t) * np.exp(-t / 0.012) * 0.4
    return (y / np.abs(y).max() * 0.1).astype(np.float32)


pcm = np.clip(np.round(clic() * 32767), -32768, 32767).astype('<i2')
with wave.open('clic-interruptor.wav', 'wb') as w:
    w.setnchannels(1); w.setsampwidth(2); w.setframerate(SR); w.writeframes(pcm.tobytes())
print('listo: clic-interruptor.wav')
