Add README.md
parent
fc51985e04
commit
b942283c9d
|
|
@ -0,0 +1,68 @@
|
||||||
|
# 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
|
||||||
|
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
|
||||||
Loading…
Reference in New Issue