Using Sounds with LEGO™ Robots in Quorum

In this tutorial, we will talk about the different ways a robot can produce sound. In particular, we will discuss:

General Information About Sounds

The brick has a single speaker on its side, which all sounds are played out of. Quorum has two actions that are used for controlling the volume of the sounds:

GetVolume and SetVolume. Volume levels are represented as percentages of the maximum volume, and thus the range that volume actions work with is between 0 and 100.

With the Sound class, we are able to play tones, pre-defined beeps, and even audio clips. These sounds can be used to indicate that a robot is doing something, has reached a certain part in the program, or to simply get the attention of others.

Playing Tones

Tones are sounds played at a certain frequency, measured in hertz (Hz). For humans, the audible range for these tones is from around 20 Hz to 20,000 Hz where lower frequencies generate lower pitch sounds and higher frequencies generate higher pitch sounds. An example of how to play a tone in a program is as follows:

use Libraries.Robots.Lego.Sound

Sound sound
sound:PlayTone(440, 200)     //plays a tone corresponding to 440 Hz for 200 milliseconds
From the comment in the example, we can see that the PlayTone action takes two parameters: the frequency of the tone we want to play and the amount of time, in milliseconds, that we want it to play for.

Playing Pre-Defined Beeps

Quorum has a set of actions to play different types of beeps. The different actions are as follows:

The Beep and BeepTwice actions do what you might think: beep and beep twice, respectively. The BeepSequenceUp plays four tones in quick succession, with each tone being a higher frequency than the last. On the other hand, BeepSequenceDown plays the same tones in reverse. The buzz action plays a lower frequency tone than any of the others for a short amount of time.

Playing Audio Clips

Custom audio clips can be played through the Sound class's PlayAudio action. The types of sound files that can be played are limited to .wav files and must be in mono format (as opposed to stereo). The easiest way to put a sound on the robot is to physically pull the SD-card out of the robot and place it into a card reader in the computer. If your computer does not have an SD card reader, you may need to purchase one.

On the SD card, there are two partitions, or structures for storing files, one being named FAT32 and the other named EXT4. In our case, the EXT4 partition is where Quorum programs live. We want to transfer our files into the same folder as the Quorum files, which is in the folder /home/lejos/programs. In order to read EXT4, you need to either use Linux or a program to allow you to read that partition format. More information on that can be found at the links below for Mac or PC:

Once you have the file on the robot, the following code will allow the robot to play it:

use Libraries.Robots.Lego.Sound
use Libraries.System.File

File audioFile
Sound sound

audioFile:SetPath("sound.wav")
sound:PlayAudio(audioFile)

Additional Information

For more information on the Sound class, see the Sound class documentation.

Next Tutorial

In the next tutorial, we will discuss Screen, which describes how to use lego robots screen.