// Path: src/tools/containers/CircularArrayList.java
// public class CircularArrayList<E> extends ArrayList<E> {
// 
//     /**
//      * Overriding of the get method
//      * @param index Index for the access
//      * @return Corresponding value
//      */
//     public E get(int index) {
//         while (index < 0)
//             index += size();
//         index %= size();
//         return super.get(index);
//     }
// }
// 
// Path: src/main/options/ExecutionParameters.java
// public class ExecutionParameters {
//     /**
//      * Specify if the verbose mode is activated
//      */
//     public static boolean verbose = false;
// 
//     /**
//      * Specify if we train the program (if we fill and save the Markov chains)
//      */
//     public static boolean train = false;
// 
//     /**
//      * Specify the seed for generation
//      */
//     public static int seed = 3657263;
// 
//     /**
//      * Specify the path to the training set (for writing or reading)
//      */
//     public static Path LSTMTrainingSetPath = Paths.get("assets/abc");
// 
//     /**
//      * Specify the path to the trained data (created after training and used for generation)
//      */
//     public static Path trainedLSTMPath = Paths.get("assets/training/trained-lstm");
// }


import tools.containers.CircularArrayList;
import jm.constants.Pitches;
import main.options.ExecutionParameters;
import java.util.ArrayList;

        double max = 0.0;
        int degree = 0;

        // Find the degree with the best matching percentage
        for (int i = 0; i < percentage.length; ++i) {
            if (percentage[i] > max) {
                max = percentage[i];
                degree = i + 1;
            }
        }

        boolean seventhChord = false;
        double seventhPercentage = 0.0;

        // Determine if the chord degree is a seventh chord
        for (int i = 0; i < chord.size(); ++i) {
            if (degree > 0 && chord.get(i) % 12 == chords_.get(degree - 1)[3] % 12)
                ++seventhPercentage;
        }
        seventhPercentage /= chord.size();

        if (seventhPercentage >= 0.05)
            seventhChord = true;

        // If the matching percentage is not sufficient, return a 0 degree to specify that no degree was found
        if (max < 0.5)
            return new ChordDegree(0, false, barFractionDen);

        // Log the chord and the detected degree
// Path: src/tools/containers/CircularArrayList.java
// public class CircularArrayList<E> extends ArrayList<E> {
// 
//     /**
//      * Overriding of the get method
//      * @param index Index for the access
//      * @return Corresponding value
//      */
//     public E get(int index) {
//         while (index < 0)
//             index += size();
//         index %= size();
//         return super.get(index);
//     }
// }
// 
// Path: src/main/options/ExecutionParameters.java
// public class ExecutionParameters {
//     /**
//      * Specify if the verbose mode is activated
//      */
//     public static boolean verbose = false;
// 
//     /**
//      * Specify if we train the program (if we fill and save the Markov chains)
//      */
//     public static boolean train = false;
// 
//     /**
//      * Specify the seed for generation
//      */
//     public static int seed = 3657263;
// 
//     /**
//      * Specify the path to the training set (for writing or reading)
//      */
//     public static Path LSTMTrainingSetPath = Paths.get("assets/abc");
// 
//     /**
//      * Specify the path to the trained data (created after training and used for generation)
//      */
//     public static Path trainedLSTMPath = Paths.get("assets/training/trained-lstm");
// }


// Path: src/analysis/harmonic/ChordDegreeComputer.java
import tools.containers.CircularArrayList;
import jm.constants.Pitches;
import main.options.ExecutionParameters;
import java.util.ArrayList;


        double max = 0.0;
        int degree = 0;

        // Find the degree with the best matching percentage
        for (int i = 0; i < percentage.length; ++i) {
            if (percentage[i] > max) {
                max = percentage[i];
                degree = i + 1;
            }
        }

        boolean seventhChord = false;
        double seventhPercentage = 0.0;

        // Determine if the chord degree is a seventh chord
        for (int i = 0; i < chord.size(); ++i) {
            if (degree > 0 && chord.get(i) % 12 == chords_.get(degree - 1)[3] % 12)
                ++seventhPercentage;
        }
        seventhPercentage /= chord.size();

        if (seventhPercentage >= 0.05)
            seventhChord = true;

        // If the matching percentage is not sufficient, return a 0 degree to specify that no degree was found
        if (max < 0.5)
            return new ChordDegree(0, false, barFractionDen);

        // Log the chord and the detected degree
        if (ExecutionParameters.verbose) {