Banner showing base of Eiffel tower

Github

Download version 1.4.8: Windows or Linux

Multimedia Library: Laabhair Audio Analysis Framework

This library has 13 classes.

ECF: laabhair.ecf

Source code: directory list

Status: No longer maintained

The Laabhair* audio analysis framework was developed at the Digital Media Centre at the Dublin Institute of Technology to do audio analysis with Eiffel in real-time, presenting graphical audio representations using an Adobe Flash player GUI.

(*Laabhair is the Gaelic for talk.)

Benefits for various developer audiences

Eiffel Programmers

  1. Easy access to the advanced sound analysis capabilities of Praat and conversely gives Praat programmers easy access to the advanced engineering capabilities of Eiffel. Praat script is an elegant little language with an ADA like syntax that does for sound analysis what PL/SQL does for database querying. The level of Eiffel required to make use of the framework is very minimal. The essence of a Laabhair application can be understood from a single Eiffel class.
  2. Easy access to the advanced presentation capabilities of Flash and conversely gives Flash programmers easy access to the advanced engineering capabilities of Eiffel. The most significant part of this framework is an elegantly simple XML-orientated network-RPC protocol allowing Eiffel to make asynchronous calls to ActionScript procedures in a Flash application. Unlike SOAP, Laabhair RPC messages have a very transparent syntax that is self-explanatory. Communication in the other direction is through parameterless commands representing Flash button clicks.

Praat programmers

Easy access to the advanced presentation capabilities of Flash and conversely gives Flash programmers easy access to the advanced sound analysis capabilities of Praat.

Structure of the Laabhair framework

The framework is used to develop both an Eiffel sound analyis program and a Flash presentation program which communicate over a network socket. The analyzer has a small GUI consisting of a status light and a sound level meter and a minimize and close caption bar button. The analyzer window situates itself in the top right hand corner. The presentation application is launched in fullscreen mode by the analyzer. The analyzer window is set to be "always on top" so it is not obscured by the Flash application. A button on the Flash GUI is used to stop and start the analyzer taking input from the mic. Another button closes the application.

The sound analysis program implements an application specific Praat analyzer which is fed by a continuous stream of small sound clips streamed from audio input. (Typically of 100 millisecs duration) The analyzer class contains an embedded Praat script which is run for each sound clip sample. The analyzer does some calculation on the results (in Eiffel) before calling (asynchronously) a Flash presentation procedure with the results.

The framework allows editing of application configuration values in a dialog activated from a drop down menu. Each time the analyzer is activated any edit changes are propagated to registered listeners. Out of the box the configuration edit dialog allows you to change the following parameters:

All of the configurable values can also be set from the command line at startup.

Related libraries in Eiffel-Loop

Directory: library/multimedia/laabhair

[ . ]

. /UI/Flash

. /UI/WEL

[ . ]

LB_APPLICATION

Lb application

LB_AUDIO_CLIP_ANALYZER

Consumes audio clips for analysis and posts results as XML remote procedure call messages

LB_BASIC_APP_CONFIGURATION

Basic Laabhair user defined application configuration

LB_CONSTANTS

Lb constants

LB_SHARED_CONFIGURATION

Lb shared configuration

UI/Flash

LB_FLASH_APPLICATION_PROXY

Proxy to the Flash object defined by the interface: com.laabhair.Application

LB_MICROPHONE_FLASH_UI_LISTENER

Lb microphone flash ui listener

UI/WEL

LB_AUDIO_INPUT_WINDOW

Lb audio input window

LB_AUDIO_INPUT_WINDOW_THREAD_PROXY

Proxy object to (asynchronously) call procedures of LB_AUDIO_INPUT_WINDOW from an external thread (non GUI thread)

LB_BASIC_CONFIG_EDIT_DIALOG

Lb basic config edit dialog

LB_CONSOLE_MANAGER_DIALOG

Lb console manager dialog

LB_MAIN_WINDOW

Lb main window

LB_WEL_WINDOW_IDS

Generated by h2e from the file D:\Articulate!\Programming\eiffel\soundbow\soundbow.rc.