cs381/as1/README.md

2.3 KiB

Building and Running

Clone the repository, navigate to the root of the project, and initialize the submodules:

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:

cd as1
mkdir -p build
cmake ..

Compile the code using make:

make

This should create an executable named as1 in the build directory. You can run the executable with the following command:

./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: