BUG SoundMangler Planning Meeting 11/15/97

Our goal is to enable programmers and end-users to filter live and recorded audio without requiring intricate knowledge of the BeOS audio streams.

-Chip Paul

Attendance:

Name:E-mail:
Bryan Cribbsbdcribbs@uiuc.edu
Mike Khalilikhalili@uiuc.edu
Vikram Kulkarnivkulkarn@uiuc.edu
Jason Lutherjluther@uiuc.edu
Chip Paulr-paul@uiuc.edu
Charlie Powepowe@uiuc.edu
Matt Wronkiewiczwronkiew@uiuc.edu

User Interface Design

The user interface of SoundMangler consists of a menu hierarchy, two list boxes, a vew for configuring sound preferences, and two buttons. The menu bar contains a file menu, an edit menu, and a help menu. The items in these menus are listed below:

File
New
Open
Save
Save As....
Close
Reload Add-Ons
Quit
Edit
Cut
Copy
Paste
Clear
Select All
 
 
Help
About SoundMangler
Using SoundMangler
Add-On Help
 
 
 
 

The first list on the main view displays the available filters which can be applied to the audio stream. The second list displays only the filters which have been applied. Filters can be dragged from the first list to the second to apply the filter. Filters can be dragged out of the second list to remove it from the stream. If a filter is selected in the second list, its configuration screen is brought up in the config box on the right side of the window. There are two buttons on the bottom of the window. The first opens the Sound Preferences Control Panel. The second is a two-state button which turns the filters on and off.

Add-On API

Audio filter add-ons are required to do several things:

  • Mangle (filter) audio
  • Spawn a help window
  • Display a control view
  • Initialize itself
  • Save preferences to a stream
  • Read preferences from a stream

On start-up, the application searches for add-ons. Those it finds are put in the first list view. Each of the add-ons are initialized. The filter is a subclass of the Filter class, defined as:

class Filter { Public: Filter(); Initialize(); Mangle(); ... };

An add-on must supply a function which returns a filter object. This function is defined below, but may be modified if implementation requires otherwise.

Filter* MakeNewFilter () { return new MyFilter; }

Where MyFilter is a subclass of the Filter class defined earlier, defined and created in the add-on. When the application searches for add-ons and creates this filter, it must search for the symbol called MakeNewFilter.

Several questions about the add-on api are addressed below::

Question: What is passed to the filter object on initialization?

Answer: The size of the BView for the configuration screen is passed in.

Question: How is the view handled in the application?

Answer: The add-on returns a subclass of BView which maintains its own controls.

Directory Structure

The directory structure of the completed project is detailed below:

SoundMangler/ SoundMangler Docs/ add-ons/ foo1/ foo2/ SoundMangler/ add-ons/ Samples/ Developers/ Docs/ etc...

Job Breakdown

Vikram Filter Class Bryan GUI Jason Coordinating Add-Ons Matt Draggable List Jason Coordinating Documentation Guts Chip Filtering/Audio Thread Jason Add-On Interface Mike Load/Save All About Box All Documentation All Icon