Input interfaces
Input data come into the system through the input interface and in this stage user is facilitated to input the desired music file in common format .WAV (Waveform Audio File). There exists a file chooser in the system to select the input music file. Input .WAV file may contain stereo or mono music track. The input file size is not limited, but it is assumed user will input a general length music file. User is not allowed to input multiple files into the system at the same time.
Data that come into the system via input interface reach this module on the first place. The input to this unit is a byte array of PCM data. Output would be processed data with performed with segmentation, windowing applied and noise is removed to a certain degree.
Voice Remover Module
This module sits between the preprocessor module and the Onset Detector module in the pipeline. Input to the module is the preprocessed data and output is the PCM data with values changed, so that the centered voice parts are removed. It uses some of the metadata that is extracted during the reading phase of the WAV file. This module is a simple one and process data with one pass. The data which is input to the system can skip this module if the user prefers.
Onset detector Module
This module comes after the WAV file preprocessor module (or optionally after voice remover module) in the pipeline, and before the frequency estimator module and instrument classifier. The task of onset detector is to define the boundaries of the notes looking at the whole wave pattern represented by PCM data. For this, it uses the Meta information of the WAV file that is kept while reading it. Marking of onsets are done based on the time-line because it is common to all the modules. Then other modules can understand where the marked onsets are without sharing additional information. This makes this module loosely coupled with the other modules. Also it makes the processing of data easy at the later stages in the pipeline.
MIDI File Creator Module
At the end of the wave file analysis process MIDI files are created by the Miyaesi System. The user can check out the accuracy of the notation generated by playing these MIDI files. And the MIDI files can be saved to be used in the future.
MIDI (Musical Instrument Digital Interface) is an industry-standard protocol that enables electronic musical instruments to communicate and synchronize with each other. MIDI is used in a wide range of devices such as synthesizers, drum machines, computers and other electronic equipment like MIDI controllers, sound cards and samplers. MIDI differs from analog devices because MIDI does not transmit an audio signal. It sends event messages with data about
· musical notation,
· pitch and intensity,
· Control signals for parameters such as
o Volume
o Vibrato
o Panning
o Cues
· Clock signals to set tempo.
Java Sound API can be used for controlling audio playback, audio capture, MIDI synthesis, and basic MIDI sequencing. In our system Java Sound API is used to create MIDI files and playback MIDI files created after Wave file analysis.
Instrument Classifier Module
Instrument Identifier comes after the onset detector module and before the notes editor module within the pipeline. This module directly uses the onsets which are outputted by the onset detector module and processes each note separately. The main task of this module is identifying the instrument which is played within each note. The classification is based on spatial and temporal features of the instrument. After extracting the spatial and temporal features, the feature vector is send to a Neural Network which is trained for predicting the playing instrument. The identified instrument details are finally sent to the Notes Editor Module.
Notes Editor Module
This component exists right after the instrument classifier and the frequency estimator. Both outputs of previous two modules are inputted here. The main task of the component is providing facilitates for the user to edit the detected notes and instruments if he is not happy with it. This module is hence semi-automatic and optional. The output is the changed data by the user, from which he needs to generate the sheet and the MIDI file. This component uses IO modules which are utility modules .
Notation Sheet Generator Module
This module comes after the MIDI file creator. It takes the output of MIDI file creator in the as its input. This component uses the MIDI data and generates the notation sheet. User can see the generated notation sheet in a Jpanel.
Output interfaces
There are two main outputs which come through the output interfaces of this system. Final outcome of the system is the notation sheet generated which is printable. It is the output of Notation sheet generator module. This notation sheet displays time signature and key signature also. If the generated sheet’s length is more, the user can scroll and view the sheet. And this notation sheet can be saved as an image. Also user is facilitated to playback the music file along with the sheet. In addition to that MIDI file is other outcome of the system which can be saved to disk. This output comes from the MIDI file creator module.
There are many utility modules that support the processing of data stage after stage as described in previous sections. The following modules are reused throughout the system architecture.
· Print Utilities Module
· Sound IO module containing low level operations on PCM data
· Custom file filter modules and table modules that supports the GUI
· Modules that support data writing to the disk
These modules stay separately to the pipeline architecure and share information with modules in the pipeline where necessary. Some of them operate on the results of modules and some of them operate when inputs are received by the modules. There are few occasions that they help to process the data in the middle of main function of a module as well.