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:
- Interactively, through the "Catalog Browser" or
- Programmatically, through code
Let's explore both ways.
For the interactive variant, bring up a "World" menu by clicking anywhere on an empty space.
Then, under "Tools", select "Catalog Browser". Like this:
In the Catalog Browser, enter "sound" in the filter and press enter:
Right-click on "Pharo Sound", and select "Install stable version" like this:
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.
(Disclaimer: this was tested under Pharo 6.1/OSX)
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.
And that's it. Pharo now knows how to play sounds.
To make sure it works you can open a Playground window, and try out some things ...
To play a basic sound, do the following:
To play a major chord using a synthesized clarinet sound, do this:
clarinet := FMSound clarinet. (AbstractSound majorChordOn: clarinet from: #c4) play.
To open a mini virtual-piano you can evaluate this:
PianoKeyboardMorph new openInWorld.
You can load sounds from Wave-files (or AIFF) and play them like this:
sampledSound := (SampledSound fromWaveFileNamed: '/path/to/file.wav'). sampledSound play.
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
Have fun with Smalltalk!