Friday, December 18, 2015

Soundscapes On The Emacspeak Audio Desktop

1 Executive Summary

Emacspeak module soundscape adds the ability to automatically switchSoundscapes based on the current buffer. A Soundscape can be any
continuously playing stream of audio; in practice, using nature sounds
that repeat softly in a pseudo-random manner appears to be
effective. Soundscapes are activated based on the currently activeEmacs Major Mode and as a consequence directly mirror the user's
current activity. The present implementation uses Python packageBoodler to generate soundscapes.

2 Usage

Note that package soundscape.el does not have any Emacspeak
dependencies. See the package documentation for details on installing
and configuring Boodler.

You can experiment with installed Boodler agents using commandsoundscape and soundscape-stop. You can enable and disableautomatic soundscapes using command soundscape-toggle. The
currently active default Soundscape theme can be inspected via commandsoundscape-display — this produces a buffer that lists the
currently defined /major-mode -> Soundscape mapping.

Package soundscape.el considers the inheritance relationship among
Emacs major-modes when computing the set of soundscapes to
activate.As an example, eww-mode inherits from special-mode — as
a consequence, two soundscapes (LightWind and BackgroundWaves)
become active when reading Web content.

3 Default Major-Mode->Soundscape (Mood) Mapping:

Here is a table showing the mapping of major-mmodes to Soundscape
moods at the time of writing. For readability, I have stripped out thepackage-name for these soundscapes.

4 Soundscape Research

I implemented package soundscape.el to create a platform that would
let me experiment with different tools that aid in
concentration. After using Soundscapes for about a week, I have also
found that it reduces some of the fatigue that results from having to
listen to synthetic text-to-speech for extended periods.
The true value (if any) of this package will be a function of how heavily
I find myself using it six months from now — as a metric, complete
success might mean that in mid-2016, I still have automatic
soundscapes turned on.
As I type this article in Emacs org-mode, I hear the sound of
water-drops falling softly in the background, and I take note
that I have not switched tasks for the entire time I have spent
writing this article.

Other success metrics — harder to measure — might include how
effective Soundscapes are in helping the user stay focused on a
given activity for extended periods of time. In an ever-connected
world buzzing with a constant stream of distractions ranging from
incoming email and instant-messages to a flood of twitter updates,
this is likely the most relevant metric.

Instantiating a plugin prompts for its arguments and displays the
instantiated plugin in a new buffer.

This plugin can then be applied to a running MPlayer media
stream by pressing a.

The effect can be deleted by pressing d.

Plugin parameters can be edited by pressing e with point on
the parameter to edit.

3 Interfacing With SoX

Module sox.el implements an Audio Workbench using SoX. Moduleladspa.el integrates with that module by allowing the addition ofladspa as a supported SoX effect. Adding a ladspa effect results
in a completion interface for picking one of the available Ladspa
plugin; once selected, that plugin then prompts for its parameters as
needed.