JA
games/satisfying-bounce / src / Audio / Warm.php · commit 8bdd6e4
<?phpnamespace App\Audio;/** * The voices each scene is going to play, to make in the background while it starts (Recorder::warm()): a voice is generated in PHP, * a few milliseconds each, so it is better done in the first second than in the middle of a bounce. Made by tools/warm-notes.sh from * a run of every scene; a note that is not here is simply made when it is first played. */final class Warm{    /** @var array<string, list<array{0: string, 1: float, 2: float, 3: float}>> */    private const NOTES = [        \App\Scene\GapCircleScene::class => [['pluck', 329.628, 0.45, 0.3], ['pluck', 349.228, 0.45, 0.3], ['bell', 1046.502, 1.0, 0.2], ['bell', 1318.51, 1.0, 0.2], ['bell', 1760.0, 1.0, 0.2], ['pluck', 391.995, 0.45, 0.3], ['pluck', 293.665, 0.45, 0.3], ['pluck', 261.626, 0.45, 0.3]],        \App\Scene\MultiplyScene::class => [['pluck', 659.255, 0.4, 0.26], ['pluck', 622.254, 0.4, 0.26], ['pluck', 493.883, 0.4, 0.26], ['pluck', 587.33, 0.4, 0.26], ['pluck', 440.0, 0.4, 0.26], ['pluck', 329.628, 0.4, 0.26], ['pluck', 523.251, 0.4, 0.26], ['pluck', 261.626, 0.4, 0.26], ['pluck', 415.305, 0.4, 0.26]],        \App\Scene\ConcentricScene::class => [['pluck', 261.626, 0.35, 0.26], ['pluck', 293.665, 0.35, 0.26], ['bell', 659.255, 0.9, 0.3], ['pluck', 329.628, 0.35, 0.26], ['pluck', 391.995, 0.35, 0.26], ['bell', 783.991, 0.9, 0.3], ['pluck', 440.0, 0.35, 0.26], ['pluck', 523.251, 0.35, 0.26], ['bell', 880.0, 0.9, 0.3], ['pluck', 587.33, 0.35, 0.26], ['pluck', 659.255, 0.35, 0.26], ['bell', 1046.502, 0.9, 0.3], ['pluck', 783.991, 0.35, 0.26], ['pluck', 880.0, 0.35, 0.26], ['bell', 1174.659, 0.9, 0.3], ['bell', 1318.51, 0.9, 0.3], ['bell', 1567.982, 0.9, 0.3], ['bell', 1760.0, 0.9, 0.3]],        \App\Scene\MarbleScene::class => [['marimba', 1174.659, 0.5, 0.2215516272938462], ['marimba', 880.0, 0.5, 0.24861569006414996], ['marimba', 659.255, 0.5, 0.2538693980932382], ['marimba', 523.251, 0.5, 0.26115350068339194], ['marimba', 391.995, 0.5, 0.2612706390542958], ['marimba', 293.665, 0.5, 0.2660249409457074]],        \App\Scene\ZoomRingsScene::class => [['bell', 1046.502, 1.0, 0.26], ['bell', 1318.51, 1.0, 0.18], ['bell', 1760.0, 1.0, 0.26], ['marimba', 587.33, 0.45, 0.24], ['marimba', 659.255, 0.45, 0.24], ['bell', 2349.318, 1.0, 0.18], ['marimba', 783.991, 0.45, 0.24], ['marimba', 880.0, 0.45, 0.24], ['marimba', 1046.502, 0.45, 0.24], ['marimba', 1174.659, 0.45, 0.24], ['bell', 783.991, 1.0, 0.26], ['marimba', 391.995, 0.45, 0.24], ['marimba', 440.0, 0.45, 0.24], ['marimba', 523.251, 0.45, 0.24]],        \App\Scene\StairsScene::class => [['marimba', 987.767, 0.7, 0.3], ['marimba', 880.0, 0.7, 0.3], ['marimba', 783.991, 0.7, 0.3], ['marimba', 739.989, 0.7, 0.3], ['marimba', 659.255, 0.7, 0.3], ['marimba', 587.33, 0.7, 0.3], ['marimba', 523.251, 0.7, 0.3], ['marimba', 493.883, 0.7, 0.3], ['marimba', 440.0, 0.7, 0.3], ['marimba', 391.995, 0.7, 0.3], ['marimba', 369.994, 0.7, 0.3], ['marimba', 329.628, 0.7, 0.3], ['marimba', 293.665, 0.7, 0.3], ['marimba', 1046.502, 0.7, 0.3]],        \App\Scene\TunnelScene::class => [['marimba', 523.251, 0.5, 0.3], ['marimba', 698.456, 0.5, 0.3], ['marimba', 880.0, 0.5, 0.3], ['marimba', 1046.502, 0.5, 0.3], ['marimba', 587.33, 0.5, 0.3], ['marimba', 783.991, 0.5, 0.3]],        \App\Scene\SpiralScene::class => [['bell', 329.628, 0.9, 0.22], ['bell', 932.328, 0.9, 0.22], ['bell', 369.994, 0.9, 0.22], ['bell', 1046.502, 0.9, 0.22], ['bell', 415.305, 0.9, 0.22], ['bell', 1174.659, 0.9, 0.22], ['bell', 466.164, 0.9, 0.22], ['bell', 1318.51, 0.9, 0.22]],        \App\Scene\WaveGridScene::class => [['marimba', 329.628, 0.8, 0.3], ['marimba', 440.0, 0.8, 0.3], ['marimba', 523.251, 0.8, 0.3], ['marimba', 659.255, 0.8, 0.3], ['marimba', 493.883, 0.8, 0.3], ['marimba', 349.228, 0.8, 0.3]],        \App\Scene\DotRippleScene::class => [['bell', 523.251, 1.0, 0.26], ['bell', 659.255, 1.0, 0.26], ['bell', 783.991, 1.0, 0.26], ['bell', 587.33, 1.0, 0.26], ['bell', 739.989, 1.0, 0.26], ['bell', 880.0, 1.0, 0.26]],        \App\Scene\DominoScene::class => [['marimba', 195.998, 0.5, 0.26], ['marimba', 220.0, 0.5, 0.26], ['marimba', 246.942, 0.5, 0.26], ['marimba', 293.665, 0.5, 0.26], ['marimba', 329.628, 0.5, 0.26], ['marimba', 391.995, 0.5, 0.26], ['marimba', 440.0, 0.5, 0.26], ['marimba', 493.883, 0.5, 0.26], ['marimba', 587.33, 0.5, 0.26], ['marimba', 659.255, 0.5, 0.26], ['marimba', 783.991, 0.5, 0.26], ['marimba', 880.0, 0.5, 0.26], ['marimba', 987.767, 0.5, 0.26], ['marimba', 1174.659, 0.5, 0.26], ['marimba', 1318.51, 0.5, 0.26], ['marimba', 1567.982, 0.5, 0.26], ['marimba', 1760.0, 0.5, 0.26], ['marimba', 1975.533, 0.5, 0.26], ['marimba', 2349.318, 0.5, 0.26], ['sine', 391.995, 0.45, 0.13], ['sine', 440.0, 0.45, 0.13], ['sine', 493.883, 0.45, 0.13], ['sine', 587.33, 0.45, 0.13], ['sine', 659.255, 0.45, 0.13], ['sine', 783.991, 0.45, 0.13], ['sine', 880.0, 0.45, 0.13], ['sine', 987.767, 0.45, 0.13], ['sine', 1174.659, 0.45, 0.13], ['sine', 1318.51, 0.45, 0.13], ['sine', 1567.982, 0.45, 0.13], ['sine', 1760.0, 0.45, 0.13], ['sine', 1975.533, 0.45, 0.13], ['sine', 2349.318, 0.45, 0.13], ['sine', 2637.02, 0.45, 0.13], ['sine', 3135.963, 0.45, 0.13], ['sine', 3520.0, 0.45, 0.13], ['sine', 3951.066, 0.45, 0.13], ['sine', 4698.636, 0.45, 0.13]],        \App\Scene\CatBounceScene::class => [['meow', 523.25, 0.65, 0.3], ['meow', 392.0, 0.55, 0.3], ['meow', 659.25, 0.75, 0.3], ['meow', 739.679, 0.75, 0.3], ['meow', 783.99, 0.75, 0.2], ['meow', 783.99, 0.8500000000000001, 0.3], ['meow', 879.637, 0.8500000000000001, 0.3], ['meow', 436.1, 0.34, 0.2], ['meow', 493.92, 0.55, 0.3], ['meow', 987.827, 0.8500000000000001, 0.3], ['meow', 697.751, 0.8500000000000001, 0.3], ['meow', 490.0, 0.34, 0.2], ['meow', 586.733, 0.75, 0.3], ['meow', 439.824, 0.55, 0.3], ['meow', 587.087, 0.65, 0.3], ['meow', 830.655, 0.75, 0.3], ['meow', 617.4, 0.34, 0.2], ['meow', 733.416, 0.34, 0.2], ['meow', 824.063, 0.34, 0.2], ['meow', 549.78, 0.34, 0.2], ['meow', 348.88, 0.55, 0.3], ['meow', 924.598, 0.34, 0.2], ['meow', 659.295, 0.65, 0.3], ['meow', 1038.319, 0.34, 0.2], ['meow', 654.063, 0.34, 0.2], ['meow', 582.116, 0.34, 0.2], ['meow', 733.858, 0.34, 0.2], ['meow', 465.693, 0.65, 0.3]],        \App\Scene\RainPondScene::class => [['drop', 523.251, 0.9, 0.2609782533170453], ['drop', 587.33, 0.9, 0.22470711756936007], ['drop', 440.0, 0.9, 0.25566660928136353], ['drop', 659.255, 0.9, 0.23759780024885926], ['drop', 783.991, 0.9, 0.2751229754976211], ['drop', 391.995, 0.9, 0.26698647714870655]],        \App\Scene\PendulumScene::class => [['marimba', 246.942, 0.8, 0.12], ['marimba', 293.665, 0.8, 0.12], ['marimba', 329.628, 0.8, 0.12], ['marimba', 391.995, 0.8, 0.12], ['marimba', 440.0, 0.8, 0.12], ['marimba', 493.883, 0.8, 0.12], ['marimba', 587.33, 0.8, 0.12], ['marimba', 659.255, 0.8, 0.12], ['marimba', 783.991, 0.8, 0.12], ['marimba', 880.0, 0.8, 0.12], ['marimba', 987.767, 0.8, 0.12], ['marimba', 1174.659, 0.8, 0.12]],        \App\Scene\PlinkoScene::class => [['marimba', 587.33, 0.4, 0.22], ['marimba', 659.255, 0.4, 0.22], ['marimba', 783.991, 0.4, 0.22], ['bell', 880.0, 1.0, 0.2], ['marimba', 523.251, 0.4, 0.22], ['marimba', 880.0, 0.4, 0.22], ['marimba', 391.995, 0.4, 0.22], ['bell', 440.0, 1.0, 0.2], ['bell', 783.991, 1.0, 0.2], ['bell', 1046.502, 1.0, 0.2], ['marimba', 1174.659, 0.4, 0.22], ['bell', 1318.51, 1.0, 0.2], ['marimba', 440.0, 0.4, 0.22], ['marimba', 1046.502, 0.4, 0.22], ['bell', 1174.659, 1.0, 0.2], ['bell', 659.255, 1.0, 0.2], ['bell', 329.628, 1.0, 0.2], ['bell', 3520.0, 1.0, 0.2], ['bell', 391.995, 1.0, 0.2], ['marimba', 1318.51, 0.4, 0.22], ['bell', 2349.318, 1.0, 0.2], ['bell', 587.33, 1.0, 0.2], ['bell', 3135.963, 1.0, 0.2], ['bell', 293.665, 1.0, 0.2], ['bell', 2093.005, 1.0, 0.2], ['bell', 1760.0, 1.0, 0.2], ['bell', 523.251, 1.0, 0.2], ['bell', 2637.02, 1.0, 0.2], ['bell', 1567.982, 1.0, 0.2]],    ];    /** @return list<array{0: string, 1: float, 2: float, 3: float}> wave, frequency, length, volume */    public static function notes(string $sceneClass): array    {        return self::NOTES[$sceneClass] ?? [];    }}