Enabling Sound in Pharo Smalltalk

sebnozzi

Sebastian Nozzi

Posted on September 30, 2018

Enabling Sound in Pharo Smalltalk

In this post I will show you how to enable sound playback in Pharo Smalltalk, which is not included by default.


The Pharo-VM is capable of playing sounds, but the classes to do so are not included in the image by default. You need to load the "PharoSound" package first.

There are two ways of doing this:

  1. Interactively, through the "Catalog Browser" or
  2. Programmatically, through code

Let's explore both ways.

Interactively

For the interactive variant, bring up a "World" menu by clicking anywhere on an empty space.

Then, under "Tools", select "Catalog Browser". Like this:

Opening the "Catalog Browser"

In the Catalog Browser, enter "sound" in the filter and press enter:

Searching for "sound" in the packages

Right-click on "Pharo Sound", and select "Install stable version" like this:

Installing stable package version

Since it has only be tested with Pharo 5, the system will warn you that it has not been tested with your current Pharo version. Accept the warning with "Yes" as it should work anyways with latest versions.

Accepting the warning

(Disclaimer: this was tested under Pharo 6.1/OSX)

Programmatically

The same done through the Catalog Browser can also be achieved directly by evaluating code. Evaluate this in a Playground window:

Metacello new
    smalltalkhubUser: 'Pharo' project: 'MetaRepoForPharo50';
    configuration: 'PharoSound';
    version: #stable;
    load.
Enter fullscreen mode Exit fullscreen mode

And that's it. Pharo now knows how to play sounds.

Making sure it works

To make sure it works you can open a Playground window, and try out some things ...

To play a basic sound, do the following:

SampledSound beep.
Enter fullscreen mode Exit fullscreen mode

To play a major chord using a synthesized clarinet sound, do this:

clarinet := FMSound clarinet.
(AbstractSound majorChordOn: clarinet from: #c4) play.
Enter fullscreen mode Exit fullscreen mode

To open a mini virtual-piano you can evaluate this:

PianoKeyboardMorph new openInWorld.
Enter fullscreen mode Exit fullscreen mode

You can load sounds from Wave-files (or AIFF) and play them like this:

sampledSound := (SampledSound fromWaveFileNamed: '/path/to/file.wav').
sampledSound play.
Enter fullscreen mode Exit fullscreen mode

How to learn what to do with sounds?

Explore the "AbstractSound" class and its subclasses. Start by the class-side. You will find many interesting things there. Smalltalk is best learnt by exploring.

Finally, I leave you with a fugue of J.S. Bach:

AbstractSound stereoBachFugue play
Enter fullscreen mode Exit fullscreen mode

Have fun with Smalltalk!

💖 💪 🙅 🚩
sebnozzi
Sebastian Nozzi

Posted on September 30, 2018

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Enabling Sound in Pharo Smalltalk
smalltalk Enabling Sound in Pharo Smalltalk

September 30, 2018