Processing Sequence

EXPLANATION OF THIS SECTION

This section of the manual provides an overview of each of the major processing steps performed by jProductionCritic during its operation, in the sequence that they occur.

JPRODUCTIONCRITIC'S PROCESSING SEQUENCE

It should be noted that jProductionCritic outputs its status as processing occurs. The information below provides a more detailed overview of this processing:

  1. Parse the command line arguments.
    1. If the software is used directly from the command line, then these are provided directly by the user. If the software is used via its GUI, then the GUI generates command line arguments based on user actions in the GUI.
    2. The command line arguments are checked for validity. If they are not valid, then an error is generated and processing is terminated.
  2. Parse the configuration settings file.
    1. If the user specifies a particular configuration file path, then the file at that location is parsed. If the user does not, then a file at the default location is used.
    2. If no valid configuration file can be found, then one is generated with default settings (and the user is notified of this).
  3. Initialize each of the error checker algorithms.
    1. Each error checker is configured based on the settings parsed from the configuration settings file.
      1. Only error checkers that have been flagged for used in the configurations settings file will be prepared.
      2. If no error checkers have been flagged for use then execution is terminated and the user is notified.
    2. A check is performed to ensure that the specified settings for each error checker are valid. If not, then execution is terminated and the user is notified.
  4. Process audio files.
    1. The specified file or all files in the specified directory (depending on the user's selection) are accessed.
      1. Any files that are not valid compatible parsible audio files are ignored (although the user is notified that they cannot be parsed).
      2. An error is generated and execution is terminated if no compatible parsible audio files are found.
    2. Each parsible audio file is processed one-by-one.
      1. Audio samples are parsed from the file.
      2. Each error checker examines the file. Each error checker is applied to the file one-by-one.
        1. Any errors found by an error checker are added to a list of errors found so far for the file by that error checker.
        2. Once a given error checker has completed its examination of a file, then some, none or all of the errors it found are merged into single reports based on the error_report_merge_proximity_maximum configuration setting. Non-instantaneous errors that overlap with one another (in terms of the interval between their start and end times) as well as any pairs of errors that are within error_report_merge_proximity_maximum milliseconds of one another are merged. This helps to avoid an explosion of redundant reports (e.g. a separate clipping report every time a clipped peak or trough is encountered during an extended clipped signal).
      3. Metadata is collected from the file.
    3. If a problem occurs while processing an individual file, then the user is notified and execution continues to the next file.
  5. Prepare and output/save reports.
    1. Anywhere from one to all report types are generated, depending on the user's selections.

ACQUIRING MORE DETAILS ON THE PROCESSING SEQUENCE

More details on all aspects of jProductionCritic's operation are available in the jProductionCritic Javadocs and in the code itself. Readers exploring the code may wish to begin with the jProductionCritic class, which implements each of the major tasks performed by jProductionCritic, whether jProductionCritic is operated via its command line arguments or its GUI at runtime (operation is essentially the same either way, as the GUI essentially just generates artificial command line arguments based on the user's actions in the GUI). In particular, the jProductionCritic.performAllProcessingBasedOnCommandLineArguements method outlines all high-level operations performed during jProductionCritic analysis. The code structure is outlined in more detail in the section of the manual on jProductionCritic's class structure.

-top of page-