Harmony is an independent audio server system. It is capable of creating complex audio routing systems and also provides a variety of audio effects, outputs, and inputs out of the box. Please see its documentation for more details. In this section we briefly outline how the integration system
trial-harmony can help you bridge the gap with Trial.
First, you will want to inherit from
main subclass will take care of initializing and finalizing the audio server when the game is started up, and will also automatically interpret the audio-related settings. If you would like to customise how the server builds its pipeline or provide other customisations outside the settings, you can do so with
(defmethod org.shirakumo.fraf.trial.harmony:serveri-initargs append ((main main)) '(:effects ((mixed:biquad-filter :filter :lowpass :name :lowpass))))
harmony:make-simple-server for more information on accepted initargs.
Second, you will want to pre-load sound files. The
trial-harmony system provides assets and resources to encapsulate the Harmony objects you need to manage. To import sounds and simple music tracks, use the
org.shirakumo.fraf.trial.harmony:sound to define your assets. If you want to use Harmony's environments system to do horizontal mixing, define the environment using the
In order to play back a sound, just access its resource and play it back:
(org.shirakumo.fraf.harmony:play (// 'my-project 'sound))
Note that each asset generates exactly one
voice instance. You thus cannot play the same sound twice at the same time. Usually this is not an issue, as you can pass
:reset T to
play to restart the effect instead. In the rare cases where it is vital that the sound effect be played back multiple times simultaneously, you can either define the same sound as multiple assets, or use
close before playing it back.