I am still in the process of deciding whether to release AudioExplorer as open-source. The success of any open-source project depends entirely on the level of interest that the user/developer community shows in the software. This decision will be made based on feedback acquired during the public testing of AudioExplorer.
To learn more about open source software, visit www.opensource.org.
AudioExplorer is written using Microsoft's '.NET' technology. The following tables outline AudioExplorer's organization.
| Module Name | Type | Description |
|---|---|---|
| AEHelp | executable | AudioExplorer's Help application. |
| AudioControls | DLL | Graphical components for display or audio and frequency data. |
| AudioDialogs | DLL | AudioExplorer's dialogs and related controls. |
| AudioExplorer | executable | Main application, including child form classes. |
| AudioProjects | DLL | Classes for managing AudioExplorer objects - Projects, AudioFiles, Spectra, and NoteMaps.. |
| CommandHelp | DLL | Framework classes providing menu support, and context-sensitive tooltips and help. |
| Lib | DLL | Miscellaneous reusable classes, including support for memory-mapped files, dynamic mathematical function parsing/evaluation, and interoperability with Win32 File functions. |
| Lics | DLL | Application licensing |
| Midi | DLL | Classes representing MIDI objects - MIDI files, tracks, messages, and devices. |
| MidiControls | DLL | Graphical components and dialogs for display and manipulation of MIDI-related information. |
| MMSys | DLL | Interoperability with Windows' multimedia subsystem. |
| Music | DLL | Definitions of musical entities, such as chords, scales, and arpeggios. |
| Options | DLL | Interfaces and helper classes for managing global application configurations. |
| Toolbars | DLL | AudioExplorer toolbars. |
| UILib | DLL | Miscellaneous reusable user-interface components |
| WaveAnalytics | DLL | Classes implementing AudioExplorer's analytical functionality |
| WaveAudio | DLL | Classes implementing audio playback, record, file i/o, and access to audio sample data. |
|
Download source code for all modules
|
||
| Return to Module Summary
|
|
| AEHelp | executable |
| File | Description |
|---|---|
| App.ico | Application icon |
| AssemblyInfo.cs | .NET Assembly Information |
| AEHelp.cs | Creation and running of main Help window. |
|
download AEHelp module source code
|
|
|
Return to Module Summary
|
|
| DLL | |
| File | Description |
|---|---|
| ACEvents.cs | Event and interfaces used by several audio controls |
| AssemblyInfo.cs | .NET Assembly Information |
| AudioCursor.cs | An AudioCursor which indicates the current sample/time on a control displaying audio data. |
| FreqPanel.cs | A Control class specialized for displaying signal/frequency plots. |
| Graphics | Folder containing ProjectTree icons. |
| Menus.cs | A set of public helper class defining command constants to which this module's controls respond. |
| Menus.xml | XML definition of the menus used by the controls. |
| NoteMapPanel.cs | UI component to display note maps (high-resolution bitmaps showing time, note/pitch, and signal strength over the duration of a musical selection). |
| PianoPanel.cs | UI component to display frequency/signals on a piano keyboard. |
| PlotOptions.cs | Base option class for plot-type panels. |
| ProjectTree.cs | A TreeView class specialized to display and manipulate AudioExplorer project, audio file, spectrum, and notemap objects. |
| TimePanel.cs | UI component to display |
| WaveFrequencyGroup.cs | UI container component to manage the display of the WavePanel, FreqPanel, PianoPanel, and/or NoteMapPanel controls. |
| WavePanel.cs | UI component for the display and navigation of multi-channel audio waveforms. |
| WavePanelGroup.cs | UI container component for the WavePanel and associated controls. |
|
download AudioControls source code
|
|
|
Return to Module Summary
|
|
| DLL | |
| File | Description |
|---|---|
| MidiAssemblerOptionsDlg.cs | A three-page dialog managing all options related to the MidiAssembler. |
| NoteMapOptionDlg.cs | A stand-alone dialog for editing settings related to generation of NoteMaps. |
| OptionXmlDialog.cs | The main application configuration dialog, so named for its use of XML and a pair of interfaces (IXmlOption and IOptionXmlDlg) that allow easy snap-in of new configuration editors. |
| PianoPanelDlg.cs | A stand-alone dialog for customizing the PianoPanel display style. |
| SpectrumOptionDlg.cs | A stand-along dialog for configuring the Power Spectrum Analyzer. |
| UCAudioBase.cs | A UserControl base class implementing the common functionality of the Record and Playback user controls. Implements IOptionXmlDlg. |
| UCAudioForm.cs | UserControl for editing AudioForm display settings. Implements IOptionXmlDlg. |
| UCBase.cs | The base class for all UserControl components in this module, providing their common appearance. |
| UCFreqPanel.cs | UserControl for editing the FreqPanel display settings. Derived from UCPlotOptions. Implements IOptionXmlDlg. |
| UCMidiAssembler.cs | UserControl configuring the MidiAssembler. Implements IOptionXmlDlg. |
| UCNoteMap.cs | UserControl for defining NoteMap properties. Implements IOptionXmlDlg. |
| UCNoteMapPanel.cs | UserControl for customizing the NoteMapPanel appearance. Derived from UCPlotOptions. Implements IOptionXmlDlg. |
| UCNoteProcessor.cs | UserControl for configuring the NoteProcessor. Implements IOptionXmlDlg. |
| UCOvertoneProcessor.cs | UserControl for configuring the OvertoneProcessor. Implements IOptionXmlDlg. |
| UCPianoPanel.cs | UserControl for customizing the appearance of the PianoPanel. Implements IOptionXmlDlg. |
| UCPlay.cs | UserControl for configuring audio playback. Derived from UCAudioBase. Implements IOptionXmlDlg. |
| UCPlotOptions.cs | Base UserControl class implementing configuration of common plot options. |
| UCPresX.cs | UserControl for configuration of audio cache generation. Implements IOptionXmlDlg. |
| UCProjectDir.cs | UserControl for setting AudioExplorer project file locations. Implements IOptionXmlDlg. |
| UCRecord.cs | UserControl for configuring audio recording. Derived from UCAudioBase. Implements IOptionXmlDlg. |
| UCTimePanel.cs | UserControl for customizing the appearance of the TimeWindow. Implements IOptionXmlDlg. |
| UCTransformOptions.cs | UserControl for configuring the Power Spectrum Analyzer. Implements IOptionXmlDlg. |
| UCWavePanel.cs | UserControl for customizing the appearance of the WavePanel. Implements IOptionXmlDlg. |
| UCWaveTransform.cs | UserControl for configuring interactive analysis of audio samples. Implements IOptionXmlDlg. |
| AssemblyInfo.cs | .NET assembly information relevant to this assembly. |
| AudioProjectOptions.cs | A dialog for naming Audio Projects. |
| NewAudioObjectDlg.cs | A dialog for setting up batch generation of AudioExplorer data. |
| ObjPropertiesDlg.cs | A dialog for displaying text lists. |
| ProgressDialog.cs | A dialog providing feedback during lengthy operations. |
|
download AudioDialogs source code
|
|
| Return to Module Summary
|
|
| executable | |
| File | Description |
|---|---|
| App.ico | Application icon |
| AssemblyInfo.cs | .NET assembly information |
| AudioForm.cs | AudioForm MDI child form class, derived from BaseChild. AudioForm is AudioExplorer's primary audio window. |
| BaseChild.cs | Base class for all MDI child form classes. Provides common appearance and functionality, and essential form-related utility methods. |
| DriveSpacePanel.cs | A StatusBarPanel specialization to monitor and display available space for AudioExplorer data. |
| MainForm.cs | AudioExplorer's main, MDI-parent window. Also contains AudioExplorer's Main executable method. |
| Menus.cs | A set of public helper class defining command constants to which this module's windows respond. |
| Menus.xml | XML definition of the menus used by AudioExplorer windows. |
| MidiWindow.cs | The MidiWindow form class. Implements display, playback, and management of generated MIDI data. |
| NoteMapForm.cs | An MDI child window specialized for display of NoteMaps. |
| Options.cs | Various classes for managing and persisting application state. |
| RFFTW2dll.dll | A dynamic link library implementing (lightning!) fast fourier transforms. This DLL is compiled from free software provided by FFTW and is distributed under the terms of the GNU General Public License. |
| RTAudio.cs | A class managing real-time audio record and playback. |
| SpectrumDetails.cs | A form class for graphic display of audio signal-strength histograms. |
| SpectrumForm.cs | An MDI child form class for interactive display of AudioExplorer's spectra. |
| SplashForm.cs | The splash window displayed when AudioExplorer starts. |
| SplashScreen.gif | The graphic displayed in the SplashForm. |
| TimeWindow.cs | A form class for display of the current audio time. |
|
download AudioExplorer source code
|
|
| Return to Module Summary
|
|
| DLL | |
| File | Description |
|---|---|
| AssemblyInfo.cs | .NET assembly information |
| AudioFile.cs | A class derived from AudioObject which provides methods for accessing and managing AudioExplorer's AudioFile object. |
| AudioObject.cs | The base class for AudioProject, AudioFile, NoteMap, and Spectrum classes. Implements functionality common to all AudioExplorer objects. |
| AudioProject.cs | A class derived from AudioObject which provides methods for accessing and managing AudioExplorer's projects. |
| NoteMap.cs | A class derived from AudioObject which provides methods for accessing and managing the NoteMap objects. |
| Spectrum.cs | A class derived from AudioObject which provides methods for accessing and managing the Spectrum objects. |
| Task.cs | A class which implements multithreaded batch generation of AudioExplorer objects. |
|
download AudioProjects source code
|
|
| Return to Module Summary
|
|
| DLL | |
| File | Description |
|---|---|
| AssemblyInfo.cs | .NET assembly information |
| CHBaseDlg.cs | A Form-derived class implementing automatic display of tool-tips and access to context-sensitive help for all embedded controls. Used as a base class for dialogs. |
| CHBaseUC.cs | A UserControl-derived class implementing automatic display of tool-tips and access to context-sensitive help for all embedded controls. Used as a base class for user controls. |
| CmdHelp.cs | Helper class associates command ids with help text. |
| CmdHelp.xml | Database of command ids and help text. |
| CommandSource.cs | Definition of the ICommandSource and ICommandSink interfaces, and supporting delegates, events, and event argument classes. |
| ControlHelp.cs | A helper class providing context-sensitive help for any control embedded in a CHBaseDlg- or CHBaseUC-derived container. |
| ControlHelp.xml | A database associating control names and contexts with help text and help URLs. |
| HelpForm.cs | A Form-derived class implementing WebBrowser functionality for display of web-based help files. This is the basis of the AEHelp application. |
| XmlMenus.cs | Defines several classes derived from Menu, ContextMenu, and MenuItem which provide support for menu generation from XML resources and integration with the ICommandSource interface. |
|
Download CommandHelp source code
|
|
| Return to Module Summary
|
|
| DLL | |
| File | Description |
|---|---|
| AssemblyInfo.cs | .NET assembly information |
| Evaluator.cs | A fast mathematical expression parser featuring extensibility, support for symbolic substitution and array indexing. |
| FileMappedMemory.cs | A C# class using the Win32 FileMapping API and Interop Services to provide file-based virtual memory. |
| FileUtil.cs | Several classes for working with filenames. |
| Interfaces.cs | General-purpose interfaces, delegates, and event argument classes. |
| Math.cs | Math-related classes and static functions. Includes class Histogram for bucketting data into histograms. |
| Memory.cs | A class for accessing some of the useful Win32 memory functions. |
| StringList.cs | Classes for tokenizing strings and managing lists of strings. |
| Strings.cs | A few useful string functions. |
| Vector.cs | A C# mockery of the C++ vector<> template. |
| Win32File.cs | A class providing access to the full range of Win32 File functions. |
|
|
|
| Return to Module Summary
|
|
| DLL | |
| File | Description |
|---|---|
| AssemblyInfo.cs | .NET assembly information |
| Licensing.cs | LicenseProvider implementation for AudioExplorer |
|
|
|
| Return to Module Summary
|
|
| DLL | |
| File | Description |
|---|---|
| AssemblyInfo.cs | .NET assembly information |
| EventList.cs | A time-ordered list of MIDI events, providing event searching and lookup, and management of MIDI timing. Base class for MidiTrack. |
| Midi.cs | A set of utility classes defining MIDI constants and note names. |
| MidiBuffer.cs | Classes providing support for buffered multimedia i/o. |
| MidiChunk.cs | Classes providing i/o of header data in standard MIDI files. |
| MidiDevice.cs | Classes implementing MIDI recording and playback. |
| MidiEvt.cs | Classes encapsulating MIDI messages, including channel, meta, and sysex messages. |
| MidiFile.cs | A class implementing the standard MIDI file. |
| MidiTrack.cs | Classes encapsulating MIDI tracks and metatracks. |
| Timing.cs | Classes and structures for working with MIDI times, tempos, and time signatures. |
|
|
|
| Return to Module Summary
|
|
| DLL | |
| File | Description |
|---|---|
| AssemblyInfo.cs | .NET assembly information |
| ChannelMsgFilterDlg.cs | A dialog allowing selection of filtering criteria for MIDI channel messages. |
| MBTControl.cs | A UserControl for the display and setting of MIDI timing in measure:beat:tick format. |
| Menus.cs | A set of public helper class defining command constants to which this module's controls respond. |
| Menus.xml | XML definition of the menus used by the controls. |
| MidiListView.cs | A ListView-derived class for display of MIDI EventLists. |
| MidiNoteComboBox.cs | A ComboBox-derived class for selection of MIDI notes. |
| MidiNotePanel.cs | A piano-roll style display of MIDI messages supporting note editing and optimization of timing. |
| MidiNoteUpDown.cs | A DomainUpDown-derived class for selection of MIDI notes. |
| MNPControls.cs | A toolbar-style UserControl which interacts with the MidiNotePanel. |
| NoteEditDlg.cs | A dialog for editing MIDI note messages. |
| NoteTimingListView.cs | A ListView-derived class presenting note/timing statistics. |
| OptimizeProgressDlg.cs | A progress dialog displayed during lengthy optimization loops. |
| OptimizerDlg.cs | A dialog for configuring the timing optimizer. |
| OptimizerResultForm.cs | A Form-derived class displaying the results of a timing optimization. |
| ORFControls.cs | A toolbar-style UserControl which interacts with the OptimizerResultForm. |
|
Download MidiControls source code
|
|
| Return to Module Summary
|
|
| DLL | |
| File | Description |
|---|---|
| AssemblyInfo.cs | .NET assembly information |
| Errors.cs | Classes defining multimedia error constants, and exception classes. |
| MIDI.cs | Structures classes implementing interoperability with Windows multimedia midi functions. |
| MMIO.cs | Structures classes implementing interoperability with Windows multimedia mmio functions. |
| WAVE.cs | Structures classes implementing interoperability with Windows multimedia wave functions. |
|
|
|
| Return to Module Summary
|
|
| DLL | |
| File | Description |
|---|---|
| AssemblyInfo.cs | .NET assembly information |
| Music.cs | Definition of classes encapsulating properties of scales, "Keys", chords, and other musical entities. |
| NoteFreq.cs | Static classes for converting MIDI note numbers to frequencies, and vice versa. |
|
|
|
| Return to Module Summary
|
|
| DLL | |
| File | Description |
|---|---|
| AssemblyInfo.cs | .NET assembly information |
| Options.cs | Definition of the IXmlOption and IXmlDlgControl interfaces for persistence and editing of global application preferences. Definition of helper classes to support this framework. |
|
|
|
| Return to Module Summary
|
|
| DLL | |
| File | Description |
|---|---|
| AssemblyInfo.cs | .NET assembly information |
| FileOps.png | Graphics for file-related toolbar buttons. |
| Images.cs | A class which generates ImageList objects from single bitmap resources. |
| MidiBarImages.png | Images used in the MidiWindow toolbar. |
| MidiOptionBar.cs | A toolbar-style UserControl used in the MidiWindow. |
| ToolBars.xml | XML definitions of toolbars. |
| Transport32.png | 32-pixel images used in the TimeWindow. |
| TransportBar.cs | The XmlToolBar used in the TimeWindow. |
| WavePanel.png | Images for toolbar buttons related to the WavePanel. |
| XmlToolBar.cs | A ToolBar-derived class which can be created from an XML definition, implementing the ICommandSource interface. |
|
|
|
| Return to Module Summary
|
|
| DLL | |
| File | Description |
|---|---|
| AssemblyInfo.cs | .NET assembly information |
| Axes.cs | Class with static functions for calculating optimal tick intervals on linear and logarithmic axes. |
| BaseDialog.cs | Form-derived class customized to serve as a base class for dialogs. |
| CharsetTextBox.cs | A TextBox-derived class limiting entry to specific character sets, including filtering for numeric types. |
| ColorComboBox.cs | A ComboBox-derived class for selection of colors. |
| ColorTools.cs | A utility class providing color-related functions, such as "lightening", "darkening", or "contrasting". |
| ControlDragger.cs | A helper class which implements "dragging" of a control by tracking coordinate changes and drawing a tracking rectangle. |
| DataPlot.cs | A custom control class for plotting (X,Y) data using symbol- or line-styles. |
| FileListBox.cs | A ListBox-derived class specialized for display of file paths. |
| FolderBrowser.cs | Classes providing access to Window's SHBrowseForFolder function. |
| GrStringFormat.cs | A utility class bundling Graphics-related objects and methods for drawing strings. |
| HistPanel.cs | A custom control specialized to plot histograms. |
| LockButton.cs | A custom control "button" drawn in the shape of a padlock which toggles between locked and unlocked states. |
| MouseTracker.cs | A helper class which provides drag-selection and zooming functionality to an associated control. |
| ProgressBar.cs | A custom control serving as a progress indicator. |
| Win32GDI.cs | A class providing interoperability with GDI. |
|
|
|
| Return to Module Summary
|
|
| DLL | |
| File | Description |
|---|---|
| AssemblyInfo.cs | .NET assembly information |
| AudioActivity.cs | Definition of the IAudioActivity interface used in all of AudioExplorer's realtime audio functions, and two classes implementing this interface, Recorder and Player. In addition to their obvious record/playback functionality, these classes implement full spectral analysis of the incoming or outgoing audio stream, as required by the IAudioActivity interface. |
| FFT.cs | Classes for interoperability with RFFTW2dll, and classes to use this basic FFT functionality to support and perform power-spectrum analysis. |
| RTMidiAssembler.cs | The RTMidiAssembler class, implementing real-time MIDI generation from timed frequency spectra. |
| NoteMap.cs | A class for generating and managing NoteMaps, high-resolution maps of pitch vs. signal strength of the duration of a musical selection. |
| SpectralFile.cs | A class for generating, storing to disk, and accessing AudioExplorers "Spectrum" object. This object represents a collection of frequency spectra sampled at regular time intervals over the duration of a musical selection. |
| SpectrumAnalyzer.cs | A class which performs batch-style spectral analysis of data from an audio source. |
| TimedMusic.cs | A pair of classes which provide "time-stamped" frequency and MIDI data, allowing synchronization of all of AudioExplorer's displays with the real-time incoming or outgoing audio. |
| TransformQueue.cs | Essential utility classes for real-time audio analysis, including a circular buffer for efficient storage of transient audio data, and a class performing "just in time" analysis of this transient data. |
| WaveTransform.cs | Classes for configuring, describing, and generating frequency spectra from audio data. |
|
download WaveAnalytics source code
|
|
| Return to Module Summary
|
|
| DLL | |
| File | Description |
|---|---|
| AssemblyInfo.cs | .NET assembly information |
| Audio.cs | A static class providing general support for AudioExplorer's audio functions (e.g., tests for valid audio formats, methods for loading audio, etc.). |
| AudioInterfaces.cs | Delegates and interface related to audio, especially the IAudioFormat and IAudioSource interfaces used throughout AudioExplorer. |
| Tools.cs | General audio tools, e.g., a class for formatting audio times. |
| WaveBuffer.cs | Classes for managing the audio buffers used during multimedia operations. |
| WaveDevice.cs | Classes implementing audio recording, playback, and random access to audio files. |
| WaveFile.cs | Classes specialized for efficient access and streaming of WAV format audio files. |
| WaveHeader.cs | Classes encapsulating RIFF headers. |
| WavePresX.cs | Classes for generating and accessing audio cache files, statistical descriptions of audio waveforms which allow fast display at any zoom level. |
|
Download WaveAudio source code
|
|
| Return to Module Summary | |