cs381/as1/README.md

70 lines
2.3 KiB
Markdown

# Building and Running
Clone the repository, navigate to the root of the project, and initialize the
submodules:
```sh
git clone https://github.com/humanoidsandvichdispenser/cs381.git
cd cs381
git submodule update --init --recursive
```
Navigate to the `as1` directory, create a build directory, and run CMake to
generate the build files:
```sh
cd as1
mkdir -p build
cd build
cmake ..
```
Compile the code using `make`:
```sh
make
```
This should create an executable named `as1` in the `build` directory. You can
run the executable with the following command:
```sh
./as1
```
# Instructions on how to use the program
The program will display a window with three audio sliders: one for sound
effects, one for music, and one for dialogue. Each slider can be adjusted by
clicking and dragging the slider handle, allowing you to control the volume of
each audio group independently.
The ping button at the bottom of the window will play a ping sound effect when
clicked.
# High-level Audio Information
A speaker produces audio by using a magnet to vibrate a diaphragm, which
creates sound waves in the air. The rate of this vibration controls the
frequency, which we perceive as pitch. The depth of the vibration controls the
amplitude, which we perceive as volume. In digital audio, sound is represented
as a series of samples that denote the amplitude of the sound wave at specific
points in time. Most computers have built-in audio devices that can convert
these digital samples into electrical signals to drive the speaker's magnet and
produce sound.
The `raylib::AudioDevice` class is necessary because it provides access to the
system's audio hardware interface so that the program can feed audio data (as
PCM samples) to the audio device for playback. Although this is abstracted away
from the user, it is important for the program to have this access in order to
produce sound output.
# Extra Credit
I have implemented the following extra credit features:
- A button to toggle between light and dark window backgrounds
- Custom audio from the internet. Here are the sources for the audio files used in the program:
- Ping sound effect: https://soundbuttonsworld.com/sound-button/among-us-emergency-meeting-1642465321284
- Background music: https://github.com/ShaleGame/ShaleGame/blob/main/Assets/Music/ice-theme-sparse.mp3