LegoLeague/hub/sound.py

72 lines
2 KiB
Python

from typing import Callable, overload
"""
The sound module lets you control the hub speaker to play sound files and beeps.
"""
@overload
def volume() -> int:
pass
@overload
def volume(volume: int) -> None:
"""
Sets the volume of the speaker.
### Parameters
- volume - Volume between 0 (no sound) and 10 (maximum volume).
### Returns
- If no argument is given, this returns the current volume.
"""
pass
def beep(freq=1000, time=1000, waveform=0) -> None:
"""
Starts beeping with a given frequency, duration, and wave form.
### Keyword Arguments
- `freq` - Frequency of the beep in Hz (100 - 10000).
- `time` - Duration of the beep in milliseconds (0 - 32767).
- `waveform` - Wave form used for the beep. See constants for all possible values.
"""
pass
def play(filename: str, rate=16000) -> None:
"""
Starts playing a sound file.
The sound file must be raw 16 bit data at 16 kHz.
### Parameters
- `filename` - Absolute path to the sound file.
### Keyword Arguments
- `rate` - Playback speed in Hz.
### Raises
- `OSError (ENOENT)` - If the file does not exist.
"""
pass
def callback(self, function: Callable[[int], None]) -> None:
"""
Sets the callback function that is called when a sound finished playing or when it is interrupted.
The function must accept one argument, whose value indicates why the callback was called:
If the value is 0, the sound completed successfully.
If the value is 1, the sound was interrupted.
### Parameters
- `function` - Callable function that takes one argument. Choose None to disable the callback.
"""
pass
#These values are used by the beep() function.
SOUND_SIN = 0 #The beep is a smooth sine wave.
SOUND_SQUARE = 1 #The beep is a loud and raw square wave.
SOUND_TRIANGLE = 2 #The beep has a triangular wave form.
SOUND_SAWTOOTH = 3 #The beep has a sawtooth-shaped wave form.