70 lines
2.3 KiB
Markdown
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
|