EXPLANATION OF THIS SECTION
This section provides an overview of jSymbolic's Java class architecture.
OVERVIEW OF JSYMBOLIC'S CLASS STRUCTURE
jSymbolic is divided into ten main packages: jsymbolic, jsymbolic.api, jsymbolic.api.deprecated, jsymbolic.commandline, jsymbolic.configuration, jsymbolic.configuration.txtimplementation, jsymbolic.features, jsymbolic.featureutils, jsymbolic.gui, and jsymbolic.processing.
More details are available in the jSymbolic Javadocs and in the source code itself, both of which may be downloaded from the jMIR web page. The reader may also wish to review the Processing Sequence section of the manual in order to obtain an overview of how the system operates. The Extending the Software section also includes information on how to extend jSymbolic.
CLASSES IN THE jsymbolic PACKAGE
- Main: Runs the command line argument parsing and catches any high-level exceptions.
CLASSES IN THE jsymbolic.api PACKAGE
- jSymbolicProcessor: Contains methods providing easy programmatic access to jSymbolic's API.
CLASSES IN THE jsymbolic.api.deprecated PACKAGE
- jSymbolicData: A dperecated class. Objects of this class can contain useful information produced by jSymbolic feature extractions, and are returned to users of the jSymbpolic protrammatic API.
- jSymbolicProcessorDeprecated: A dperecated class. Contains methods providing programmatic access to jSymbolic's API.
CLASSES IN THE jsymbolic.commandline PACKAGE
More details on jSymbolic's command ine interface can be found in the section of the manual on this topic.
- CommandLineSwitchEnum: An enum that contains all possible command line switches for jSymbolic. Command line error processing and validation are performed here. This class uses the strategy pattern to be easily extensible for the addition of future switches.
- CommandLineUtilities: A general command line utilities class for common methods and data.
CLASSES IN THE jsymbolic.configuration PACKAGE
- ConfigFileHeaderEnum: An enum specifying all the headers (i.e. sections) required by the jSymbolic configuration file.
- ConfigurationFileData: A general storage for all the data extracted from the specified configuration file.
- ConfigurationFileValidator: An abstract class that suggests the functions for configuration file validation and implements the validation sequence and error handling using the template method pattern. Therefore, on the use of a new configuration file, only the implementation of these methods would need to be reimplemented in sub-class of this class and the current architecture would handle the execution. Validation can be filtered by which headers should be in the configuration file.
- ConfigurationFileWriter: An abstract class that suggests functions for configuration file writing. Again, the template method pattern is used to perform the actual writing and error handling, but this class needs only be subclassed and re-implemented in order to write out a new configuration file format. Writing can be filtered by which headers to write out.
- ConfigurationInputFiles: Convenience class to hold all valid and invalid configuration files. To be used with the ConfigurationFileData class.
- ConfigurationOptionState: Convenience class to hold the state of the options from the configuration file. To be used with the ConfigurationFileData class.
- ConfigurationOutputFiles: Convenience class to hold all output file paths from the configuration file. To be used with the ConfigurationFileData class.
- OptionsEnum: Used for consistency of option names that can be used in jSymbolic.
- OutputEnum: Used for consistency of output file path names used in configuration files.
CLASSES IN THE jsymbolic.configuration.txtimplementation PACKAGE
- ConfigurationFileDelimiterEnum: Convenience class related to text associated with configuration settings files.
- ConfigurationFileExtensionEnum: Convenience class related to text associated with configuration settings files
- ConfigurationFileValidatorTxtImpl: An implementation of the ConfigurationFileValidator abstract class. It assumes that the format of the configuration file is the same as the one described on the Configuration Settings File page. It implements all of the validation functionality as described for each header on the configuration settings file page of this manual.
- ConfigurationFileWriterTxtImpl: An implementation of the ConfigurationFileWriter abstract class. It generates a configuration file as specified in the configuration settings file page of this manual given the appropriate ConfigurationFileData. This includes generating the txt format for writing out the configuration settings file options, features, input files and output files.
- ConfigurationOption: Convenience class related to text associated with configuration settings files.
CLASSES IN THE jsymbolic.features PACKAGE
All jSymbolic features are constained in this package. Each feature is implemented as a single class. Information on implementing new features can be found on this on the Extending the Software section of this manual.
For the sake of brevity, the individual feature descriptions are not included below. However, a brief description of the two classes which feature classes can extend is included here. More details on individual jSymbolic features can be found in the Feature Explanations section of this manual.
CLASSES IN THE jsymbolic.featureutils PACKAGE
- ChordTypeEnum: An enumerator that can be used to identify the type of chord a set of pitch classes represents. Each chord type is associated with a specific numerical code.
- CollectedNoteInfo: An object of this class holds information on the pitch, start, end, track and channel of notes parsed from a MIDI stream (including Channel 10 unpitched notes). Information on each note is stored in a separate NoteInfo object, and these are made accessible based on temporal location as specified by the MIDI tick on which a note started.
- FeatureExtractorAccess: This class collects all implemented MIDIFeatureExtractor classes (including MEIFeatureExtractor extractors), orders them to match the specifications of the jSymbolic manual, and indicates which ones are set to be extracted and saved by default. This allows for consistent access to implemented features, regardless of whether the jSymbolic GUI, command line interface, API of configuration file is being used.
- MEIFeatureExtractor: An abstract class used as a template for features to be extracted specifically from MEI files. It must subclassed and implemented by any MEI-specific feature.
- MIDIFeatureExtractor: An abstract class used as a template for features to be extracted from MIDI files (or other file types after conversion to MIDI). It must subclassed and implemented by any feature.
- NoteInfo: An object of this class holds information about a single note that has been parsed from a MIDI stream (including Channel 10 unpitched notes).
CLASSES IN THE jsymbolic.gui PACKAGE
- ExtractionConfigurationsPanel: A GUI panel that allows the user to specify all feature extraction and configuration file settings other than the particular symbolic files from which features are to be extracted (this is set in the MusicFileSelectorPanel) and the particular features that are to be extracted and saved from them (this is set in the FeatureSelectorPanel). The user may use buttons on this panel to initiate feature extraction and saving, to save the settings currently entered on the GUI in a configuration file, or to load a new GUI based on the contents of a configuration file.
- FeatureSelectorPanel: A JPanel containing a table containing one row for each implemented feature, and whose first column contains check boxes allowing users to select which features to save during feature extraction. This feature table also allows users to view additional metadata about each feature, and still further metadata can be seen for a feature (including its description and feature dependencies) by double clicking on its row. Buttons are included for auto-selecting all features, no features or just the default features.
- FeatureSelectorTableModel: The table model used by the features_table JTable in FeatureSelectorPanel to list all features that jSymbolic can extract, metadata about each such features, and whether each feature should be extracted and saved during the next feature extraction. Provides methods to fill the table row by row. Makes all columns except the first non-editable. The first column is filled with check boxes indicating whether the feature in the corresponding row should be saved, and this class also includes a method for changing which of these check boxes are selected.
- MusicFileSelectorPanel: A JPanel containing a table listing all files from which features are to be extracted. The first column indicates the name of each file, and the second indicates its file path. Double clicking on a given row provides additional metadata about its associated file. Buttons are included for adding or removing files from the table, as well as for sonifying them. The table may be sorted by clicking on either of the column headings.
- OuterFrame: A JFrame holding the components of the jSymbolic Feature Extractor GUI, including the MusicFileSelectorPanel (for selecting symbolic music files to extract features from), the FeatureSelectorPanel (for choosing the features to extract), the ExtractionConfigurationsPanel (for loading and saving configuration files, for setting feature extraction settings and paths, and for initiating feature extractions. This JFrame also holds two text areas that can be written to (via the status_print_stream and error_print_stream fields). Finally, this JFrame includes a menu that allows the user to display the on-line manual and an about dialog box.
- SymbolicMusicFile: A class for holding a reference to a symbolic music file and MIDI data associated with (or generated from) it. This is typically a MIDI file or an MEI file.
- SymbolicMusicFilesTableModel: The table model used by the symbolic_music_files_table JTable in MusicFileSelectorPanel to list all symbolic music files from which features are to be extracted. The file path for each such file is listed in its own row, with one column for the file name and one for the file path. Provides methods to fill the table row by row and to delete everything in it. Makes all cells non-editable.
CLASSES IN THE jsymbolic.processing PACKAGE
This is a general-purpose package used to establish consistency with respect to the processing performed by the varioius components of the jSymbolic software (i.e. the GUI, command line interface and API).
- AceXmlConverter: Class relating to methods and objects for converting ACE XML Feature Value files to other formats.
- FeatureExtractionJobProcessor: Static methods for performing outer layer feature extraction jobs.
- MIDIFeatureProcessor: This class is used to pre-process and extract features from MIDI data.
- MIDIIntermediateRepresentations: Objects of this class take in the path of a MIDI file when they are constructed and automatically parse the file. The fields are then filled with a number of different representations of the MIDI file and statistics about it. These fields can then be accessed by feature objects.
- MIDIReporter: A class for preparing reports on the contents of a MIDI or MEI file, or on groups of such files, including detailed formatted reports on the MIDI messages in each file, intraconsistency reports on single files and interconsistency reports comparing multiple files. This processing is not directly related to feature extraction; it is instead a tool for helping to avoid dataset bias and aid testing and debugging during feature development.
- MusicFilter: A file filter to check if either the midi or mei extensions are given when validating input files by their extensions.
- SymbolicMusicFileUtilities: Holds static methods for validating and parsing MIDI and MEI files. Many of these methods in effect check to see if files are valid MIDI or MEI as part of their processing. If they are valid, they are parsed into a MIDI sequence (MEI files are converted to MIDI as part of this processing). If they are not valid, errors are logged in provided error logs and Exceptions are thrown.
- UserFeedbackGenerator: A holder class for static methods for printing various kinds of formatted messages during processing to specified PrintStreams, primarily related to jSymbolic status updates and to errors.
OTHER JMIR JAVA PACKAGES USED BY JSYMBOLIC
- ACE: A metalearning tool. jSymbolic uses it to save ACE XML files.
- UtilityClasses: A set of utility classes providing a variety of general-purpose functionality. jSymbolic uses it to perform miscellaneous tasks, especially those relating to parsing audio files.
- jMei2Midi: Conversion software that converts MEI data to MIDI data. This includes an MEI pipeline which can extract and preserve MEI-specific features that would be lost in the conversion to MIDI. The software can be found at the jMei2Midi page as a Maven project.
-top of page-