├── .gitignore ├── bin └── cr │ ├── Event.class │ ├── Note.class │ ├── Song.class │ ├── Span.class │ ├── CRMain.class │ ├── SongUtil.class │ ├── SpanLabel.class │ ├── WordLabel.class │ ├── IFeatureType.class │ ├── SongEvaluator.class │ ├── SongNetwork.class │ ├── CRMain$Simplify.class │ ├── SongEvaluator$Statistics.class │ ├── WordWeakSemiCRFFeatureManager.class │ ├── WordWeakSemiCRFNetworkCompiler.class │ ├── WordWeakSemiCRFFeatureManager$Argument.class │ ├── WordWeakSemiCRFFeatureManager$Weight.class │ ├── WordWeakSemiCRFNetworkCompiler$NodeType.class │ └── WordWeakSemiCRFFeatureManager$FeatureType.class ├── lib ├── xom-1.2.10.jar ├── commons-lang3-3.5.jar └── statnlp-core-2015.1-SNAPSHOT.jar ├── sample_output_files ├── Tue Jul 31 13:56:06 EDT 2018 Fold 1.model ├── Tue Jul 31 13:56:06 EDT 2018 Fold 1.model.txt ├── feature_count2.txt ├── feature_count9.txt └── feature_count6.txt ├── src └── cr │ ├── IFeatureType.java │ ├── SongNetwork.java │ ├── SpanLabel.java │ ├── Event.java │ ├── WordLabel.java │ ├── Note.java │ ├── Span.java │ ├── Song.java │ ├── WordWeakSemiCRFNetworkCompiler.java │ ├── SongEvaluator.java │ ├── SongUtil.java │ └── CRMain.java ├── folds ├── test1.txt ├── test10.txt ├── test2.txt ├── test3.txt ├── test4.txt ├── test5.txt ├── test6.txt ├── test7.txt ├── test8.txt ├── test9.txt ├── train1.txt ├── train10.txt ├── train2.txt ├── train3.txt ├── train4.txt ├── train5.txt ├── train6.txt ├── train7.txt ├── train8.txt └── train9.txt ├── fold_gen ├── all_songs.txt └── fold_gen.py ├── bach_dataset_chords.txt ├── run-folds.sh ├── README.md └── musicxml_parser └── musicxml_parser.py /.gitignore: -------------------------------------------------------------------------------- 1 | *.DS_Store 2 | -------------------------------------------------------------------------------- /bin/cr/Event.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/bin/cr/Event.class -------------------------------------------------------------------------------- /bin/cr/Note.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/bin/cr/Note.class -------------------------------------------------------------------------------- /bin/cr/Song.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/bin/cr/Song.class -------------------------------------------------------------------------------- /bin/cr/Span.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/bin/cr/Span.class -------------------------------------------------------------------------------- /lib/xom-1.2.10.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/lib/xom-1.2.10.jar -------------------------------------------------------------------------------- /bin/cr/CRMain.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/bin/cr/CRMain.class -------------------------------------------------------------------------------- /bin/cr/SongUtil.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/bin/cr/SongUtil.class -------------------------------------------------------------------------------- /bin/cr/SpanLabel.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/bin/cr/SpanLabel.class -------------------------------------------------------------------------------- /bin/cr/WordLabel.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/bin/cr/WordLabel.class -------------------------------------------------------------------------------- /bin/cr/IFeatureType.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/bin/cr/IFeatureType.class -------------------------------------------------------------------------------- /bin/cr/SongEvaluator.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/bin/cr/SongEvaluator.class -------------------------------------------------------------------------------- /bin/cr/SongNetwork.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/bin/cr/SongNetwork.class -------------------------------------------------------------------------------- /lib/commons-lang3-3.5.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/lib/commons-lang3-3.5.jar -------------------------------------------------------------------------------- /bin/cr/CRMain$Simplify.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/bin/cr/CRMain$Simplify.class -------------------------------------------------------------------------------- /lib/statnlp-core-2015.1-SNAPSHOT.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/lib/statnlp-core-2015.1-SNAPSHOT.jar -------------------------------------------------------------------------------- /bin/cr/SongEvaluator$Statistics.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/bin/cr/SongEvaluator$Statistics.class -------------------------------------------------------------------------------- /bin/cr/WordWeakSemiCRFFeatureManager.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/bin/cr/WordWeakSemiCRFFeatureManager.class -------------------------------------------------------------------------------- /bin/cr/WordWeakSemiCRFNetworkCompiler.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/bin/cr/WordWeakSemiCRFNetworkCompiler.class -------------------------------------------------------------------------------- /bin/cr/WordWeakSemiCRFFeatureManager$Argument.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/bin/cr/WordWeakSemiCRFFeatureManager$Argument.class -------------------------------------------------------------------------------- /bin/cr/WordWeakSemiCRFFeatureManager$Weight.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/bin/cr/WordWeakSemiCRFFeatureManager$Weight.class -------------------------------------------------------------------------------- /bin/cr/WordWeakSemiCRFNetworkCompiler$NodeType.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/bin/cr/WordWeakSemiCRFNetworkCompiler$NodeType.class -------------------------------------------------------------------------------- /bin/cr/WordWeakSemiCRFFeatureManager$FeatureType.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/bin/cr/WordWeakSemiCRFFeatureManager$FeatureType.class -------------------------------------------------------------------------------- /sample_output_files/Tue Jul 31 13:56:06 EDT 2018 Fold 1.model: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kristenmasada/chord_recognition_semi_crf/HEAD/sample_output_files/Tue Jul 31 13:56:06 EDT 2018 Fold 1.model -------------------------------------------------------------------------------- /src/cr/IFeatureType.java: -------------------------------------------------------------------------------- 1 | package cr; 2 | 3 | /** 4 | * Interface to FeatureType in FeatureManager
5 | * Each feature can be disabled/enabled 6 | * @author Aldrian Obaja 7 | * 8 | */ 9 | 10 | public interface IFeatureType { 11 | public void enable(); 12 | public void disable(); 13 | public boolean enabled(); 14 | } 15 | -------------------------------------------------------------------------------- /folds/test1.txt: -------------------------------------------------------------------------------- 1 | /home/razvan/bunescu/ChordRecognition/bach/003306b_annotated_events.xml 2 | /home/razvan/bunescu/ChordRecognition/bach/013705channotated_events.xml 3 | /home/razvan/bunescu/ChordRecognition/bach/002806b_annotated_events.xml 4 | /home/razvan/bunescu/ChordRecognition/bach/005708b_annotated_events.xml 5 | /home/razvan/bunescu/ChordRecognition/bach/003109b_annotated_events.xml 6 | /home/razvan/bunescu/ChordRecognition/bach/001606b_annotated_events.xml 7 | -------------------------------------------------------------------------------- /folds/test10.txt: -------------------------------------------------------------------------------- 1 | /home/razvan/bunescu/ChordRecognition/bach/003608b2annotated_events.xml 2 | /home/razvan/bunescu/ChordRecognition/bach/003907b_annotated_events.xml 3 | /home/razvan/bunescu/ChordRecognition/bach/000206b_annotated_events.xml 4 | /home/razvan/bunescu/ChordRecognition/bach/014806bvannotated_events.xml 5 | /home/razvan/bunescu/ChordRecognition/bach/014403b_annotated_events.xml 6 | /home/razvan/bunescu/ChordRecognition/bach/013906b_annotated_events.xml 7 | -------------------------------------------------------------------------------- /folds/test2.txt: -------------------------------------------------------------------------------- 1 | /home/razvan/bunescu/ChordRecognition/bach/014608b_annotated_events.xml 2 | /home/razvan/bunescu/ChordRecognition/bach/000408b_annotated_events.xml 3 | /home/razvan/bunescu/ChordRecognition/bach/014406b_annotated_events.xml 4 | /home/razvan/bunescu/ChordRecognition/bach/012306b_annotated_events.xml 5 | /home/razvan/bunescu/ChordRecognition/bach/000707b_annotated_events.xml 6 | /home/razvan/bunescu/ChordRecognition/bach/015403b_annotated_events.xml 7 | -------------------------------------------------------------------------------- /folds/test3.txt: -------------------------------------------------------------------------------- 1 | /home/razvan/bunescu/ChordRecognition/bach/003006b_annotated_events.xml 2 | /home/razvan/bunescu/ChordRecognition/bach/015305b_annotated_events.xml 3 | /home/razvan/bunescu/ChordRecognition/bach/002908channotated_events.xml 4 | /home/razvan/bunescu/ChordRecognition/bach/014505b_annotated_events.xml 5 | /home/razvan/bunescu/ChordRecognition/bach/003806b_annotated_events.xml 6 | /home/razvan/bunescu/ChordRecognition/bach/000907b_annotated_events.xml 7 | -------------------------------------------------------------------------------- /folds/test4.txt: -------------------------------------------------------------------------------- 1 | /home/razvan/bunescu/ChordRecognition/bach/003907bvannotated_events.xml 2 | /home/razvan/bunescu/ChordRecognition/bach/001207b_annotated_events.xml 3 | /home/razvan/bunescu/ChordRecognition/bach/000507b_annotated_events.xml 4 | /home/razvan/bunescu/ChordRecognition/bach/001805b_annotated_events.xml 5 | /home/razvan/bunescu/ChordRecognition/bach/004006b_annotated_events.xml 6 | /home/razvan/bunescu/ChordRecognition/bach/015309b_annotated_events.xml 7 | -------------------------------------------------------------------------------- /folds/test5.txt: -------------------------------------------------------------------------------- 1 | /home/razvan/bunescu/ChordRecognition/bach/002506b_annotated_events.xml 2 | /home/razvan/bunescu/ChordRecognition/bach/001306b_annotated_events.xml 3 | /home/razvan/bunescu/ChordRecognition/bach/004008b_annotated_events.xml 4 | /home/razvan/bunescu/ChordRecognition/bach/015505b_annotated_events.xml 5 | /home/razvan/bunescu/ChordRecognition/bach/014007b_annotated_events.xml 6 | /home/razvan/bunescu/ChordRecognition/bach/000306b_annotated_events.xml 7 | -------------------------------------------------------------------------------- /folds/test6.txt: -------------------------------------------------------------------------------- 1 | /home/razvan/bunescu/ChordRecognition/bach/015105b_annotated_events.xml 2 | /home/razvan/bunescu/ChordRecognition/bach/012206b_annotated_events.xml 3 | /home/razvan/bunescu/ChordRecognition/bach/015301b_annotated_events.xml 4 | /home/razvan/bunescu/ChordRecognition/bach/001907channotated_events.xml 5 | /home/razvan/bunescu/ChordRecognition/bach/014500baannotated_events.xml 6 | /home/razvan/bunescu/ChordRecognition/bach/012106b_annotated_events.xml 7 | -------------------------------------------------------------------------------- /folds/test7.txt: -------------------------------------------------------------------------------- 1 | /home/razvan/bunescu/ChordRecognition/bach/000106b_annotated_events.xml 2 | /home/razvan/bunescu/ChordRecognition/bach/012606bvannotated_events.xml 3 | /home/razvan/bunescu/ChordRecognition/bach/015408b_annotated_events.xml 4 | /home/razvan/bunescu/ChordRecognition/bach/012705b_annotated_events.xml 5 | /home/razvan/bunescu/ChordRecognition/bach/012506b_annotated_events.xml 6 | /home/razvan/bunescu/ChordRecognition/bach/001707b_annotated_events.xml 7 | -------------------------------------------------------------------------------- /folds/test8.txt: -------------------------------------------------------------------------------- 1 | /home/razvan/bunescu/ChordRecognition/bach/012406b_annotated_events.xml 2 | /home/razvan/bunescu/ChordRecognition/bach/012606b_annotated_events.xml 3 | /home/razvan/bunescu/ChordRecognition/bach/013506b_annotated_events.xml 4 | /home/razvan/bunescu/ChordRecognition/bach/012805b_annotated_events.xml 5 | /home/razvan/bunescu/ChordRecognition/bach/012006b_annotated_events.xml 6 | /home/razvan/bunescu/ChordRecognition/bach/000606b_annotated_events.xml 7 | -------------------------------------------------------------------------------- /folds/test9.txt: -------------------------------------------------------------------------------- 1 | /home/razvan/bunescu/ChordRecognition/bach/001106b_annotated_events.xml 2 | /home/razvan/bunescu/ChordRecognition/bach/002406bsannotated_events.xml 3 | /home/razvan/bunescu/ChordRecognition/bach/014806b_annotated_events.xml 4 | /home/razvan/bunescu/ChordRecognition/bach/001007b_annotated_events.xml 5 | /home/razvan/bunescu/ChordRecognition/bach/003206b_annotated_events.xml 6 | /home/razvan/bunescu/ChordRecognition/bach/014505bvannotated_events.xml 7 | -------------------------------------------------------------------------------- /fold_gen/all_songs.txt: -------------------------------------------------------------------------------- 1 | 003306b_ 2 | 013705ch 3 | 002806b_ 4 | 005708b_ 5 | 003109b_ 6 | 001606b_ 7 | 014608b_ 8 | 000408b_ 9 | 014406b_ 10 | 012306b_ 11 | 000707b_ 12 | 015403b_ 13 | 003006b_ 14 | 015305b_ 15 | 002908ch 16 | 014505b_ 17 | 003806b_ 18 | 000907b_ 19 | 003907bv 20 | 001207b_ 21 | 000507b_ 22 | 001805b_ 23 | 004006b_ 24 | 015309b_ 25 | 002506b_ 26 | 001306b_ 27 | 004008b_ 28 | 015505b_ 29 | 014007b_ 30 | 000306b_ 31 | 015105b_ 32 | 012206b_ 33 | 015301b_ 34 | 001907ch 35 | 014500ba 36 | 012106b_ 37 | 000106b_ 38 | 012606bv 39 | 015408b_ 40 | 012705b_ 41 | 012506b_ 42 | 001707b_ 43 | 012406b_ 44 | 012606b_ 45 | 013506b_ 46 | 012805b_ 47 | 012006b_ 48 | 000606b_ 49 | 001106b_ 50 | 002406bs 51 | 014806b_ 52 | 001007b_ 53 | 003206b_ 54 | 014505bv 55 | 003608b2 56 | 003907b_ 57 | 000206b_ 58 | 014806bv 59 | 014403b_ 60 | 013906b_ -------------------------------------------------------------------------------- /bach_dataset_chords.txt: -------------------------------------------------------------------------------- 1 | Bb:maj7 2 | F:maj7 3 | F:maj6 4 | Bb:min6 5 | F:maj4 6 | F#:min 7 | F:min7 8 | F:min6 9 | E:maj4 10 | C#:dim 11 | Eb:maj7 12 | E:maj7 13 | E:min7 14 | Bb:min 15 | G:min 16 | E:min6 17 | Bb:maj 18 | B:maj 19 | F:dim 20 | B:min 21 | G#:min 22 | D#:min 23 | Eb:maj 24 | G:maj 25 | D#:dim6 26 | D#:dim7 27 | C:dim6 28 | F:dim7 29 | A:maj 30 | C:dim7 31 | A:min 32 | Gb:maj7 33 | Db:maj7 34 | E:dim 35 | Db:maj4 36 | C#:min7 37 | C:maj7 38 | C:min6 39 | Gb:maj4 40 | C:min7 41 | C#:min 42 | D:min 43 | E:maj 44 | C:maj4 45 | D:dim7 46 | Bb:dim 47 | C:maj6 48 | G:dim 49 | B:maj4 50 | C:maj 51 | F:maj 52 | F#:dim 53 | C:min 54 | B:min6 55 | B:min7 56 | G#:dim7 57 | B:maj7 58 | A:dim 59 | F#:dim7 60 | B:dim7 61 | F:min 62 | B:dim 63 | Db:maj 64 | F#:min7 65 | Ab:maj 66 | A:min7 67 | C#:dim7 68 | A:min6 69 | F#:min6 70 | C#:dim6 71 | G:min7 72 | D:min6 73 | A:min4 74 | D:min7 75 | E:min 76 | A:maj7 77 | A:maj6 78 | G:maj7 79 | A:maj4 80 | D:maj4 81 | D:maj 82 | D:maj7 83 | G:min6 84 | G#:dim 85 | D:maj6 86 | G:maj4 87 | Gb:maj 88 | D#:dim 89 | Bb:dim7 90 | G:maj6 -------------------------------------------------------------------------------- /src/cr/SongNetwork.java: -------------------------------------------------------------------------------- 1 | package cr; 2 | 3 | import com.statnlp.commons.types.Instance; 4 | import com.statnlp.hybridnetworks.LocalNetworkParam; 5 | import com.statnlp.hybridnetworks.TableLookupNetwork; 6 | 7 | /** 8 | * The data structure to represent SMS messages with their annotations as networks/graphs
9 | * A network represents the model view of the problem.
10 | * Compare with {@link SMSNPInstance}, which is the real-world view of the problem
11 | * This is based on StatNLP framework for CRF on acyclic graphs 12 | * @author Aldrian Obaja 13 | * 14 | */ 15 | public class SongNetwork extends TableLookupNetwork { 16 | 17 | private static final long serialVersionUID = -8384557055081197941L; 18 | public int numNodes = -1; 19 | 20 | public SongNetwork() {} 21 | 22 | public SongNetwork(int networkId, Instance inst, LocalNetworkParam param) { 23 | super(networkId, inst, param); 24 | } 25 | 26 | public SongNetwork(int networkId, Instance inst, long[] nodes, int[][][] children, LocalNetworkParam param, int numNodes) { 27 | super(networkId, inst, nodes, children, param); 28 | this.numNodes = numNodes; 29 | } 30 | 31 | public int countNodes(){ 32 | if(numNodes < 0){ 33 | return super.countNodes(); 34 | } 35 | return numNodes; 36 | } 37 | 38 | public void remove(int k){} 39 | 40 | public boolean isRemoved(int k){ 41 | return false; 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /fold_gen/fold_gen.py: -------------------------------------------------------------------------------- 1 | # creates 10 folds for training/testing from 60 Bach chorales 2 | 3 | import sys 4 | 5 | # open file with names of Bach chorale files 6 | file = 'all_songs.txt' # our folds = "our_folds/all_songs.txt" 7 | # their folds = "breve_folds/all_songs.txt" 8 | folds_folder = '../folds' # output folder for folds (e.g. 'our_folds', 'breve_folds') 9 | datapath = sys.argv[1] # datapath to ChordRecognition repo 10 | # datapath = '/Users/kristenmasada/Documents/ChordRecognition/source/masada/fold_gen/' 11 | with open(file, 'r') as chorales: 12 | chorale_names = chorales.read().splitlines() 13 | chorale_names = [c + "annotated_events.xml" for c in chorale_names] 14 | 15 | # create 10 folds 16 | for i in range(0, 60, 6): 17 | 18 | # create training file 19 | with open(folds_folder + '/train' + str(int((i / 6) + 1)) + '.txt', 'w') as training_fold: 20 | for chorale_name in (chorale_names[0:i] + chorale_names[i+6:60]): 21 | chorale_name_with_path = datapath + 'bach/' + chorale_name 22 | training_fold.write("%s\n" % chorale_name_with_path) 23 | 24 | # create testing file 25 | with open(folds_folder + '/test' + str(int((i / 6) + 1)) + '.txt', 'w') as testing_fold: 26 | for chorale_name in chorale_names[i:i+6]: 27 | chorale_name_with_path = datapath + 'bach/' + chorale_name 28 | testing_fold.write("%s\n" % chorale_name_with_path) 29 | -------------------------------------------------------------------------------- /run-folds.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # first argument - number of folds 4 | # second argument - number of folds per iteration 5 | # third argument - starting fold 6 | # fourth argument - chords path 7 | 8 | JAVA=java 9 | CLASSPATH=bin:lib/statnlp-core-2015.1-SNAPSHOT.jar:lib/xom-1.2.10.jar:lib/commons-lang3-3.5.jar 10 | CURRENTDIRECTORYPATH=${PWD##*/}/ 11 | FOLDSPATH=folds/ 12 | STARTINGFOLD=$1 13 | NUMFOLDS=$2 14 | NUMFOLDSPERIT=$3 15 | CHORDSPATH=$4 16 | 17 | # count features 18 | for fold in $(seq $STARTINGFOLD $NUMFOLDS); 19 | do 20 | echo $fold 21 | nice $JAVA -Xmx250000m -classpath $CLASSPATH cr.CRMain -currentDirectoryPath $CURRENTDIRECTORYPATH -foldsPath $FOLDSPATH -foldNum $fold -simplify generic_added_notes -writeModelText -normalizeEnharmonics -countFeatures -useAllChords -useAllChordsPath $CHORDSPATH &> output-c-${fold}.txt 22 | done 23 | 24 | # run folds 25 | for fold in $(seq $STARTINGFOLD $NUMFOLDS); 26 | do 27 | echo "Started fold $fold" 28 | nice $JAVA -Xmx250000m -classpath $CLASSPATH cr.CRMain -currentDirectoryPath $CURRENTDIRECTORYPATH -foldsPath $FOLDSPATH -foldNum $fold -simplify generic_added_notes -writeModelText -normalizeEnharmonics -useAllChords -useAllChordsPath $CHORDSPATH &> output-e-${fold}.txt & 29 | echo "$fold % $NUMFOLDSPERIT" | bc 30 | if [ `echo "$fold % $NUMFOLDSPERIT" | bc` -eq 0 ] 31 | then 32 | wait 33 | echo "Fold set finished" 34 | fi 35 | done 36 | 37 | echo "$NUMFOLDS % $NUMFOLDSPERIT" | bc 38 | if [ `echo "$NUMFOLDS % $NUMFOLDSPERIT" | bc` -ne 0 ] 39 | then 40 | wait 41 | echo "Fold set finished" 42 | fi 43 | 44 | exit 0 45 | 46 | 47 | -------------------------------------------------------------------------------- /src/cr/SpanLabel.java: -------------------------------------------------------------------------------- 1 | package cr; 2 | 3 | import java.io.Serializable; 4 | import java.util.HashMap; 5 | import java.util.Map; 6 | 7 | public class SpanLabel implements Comparable, Serializable { 8 | 9 | private static final long serialVersionUID = -4455671752828268868L; 10 | // private static final long serialVersionUID = -2821034438335023157L; ? 11 | public static final Map LABELS = new HashMap(); 12 | public static final Map LABELS_INDEX = new HashMap(); 13 | 14 | public static SpanLabel get(String form){ 15 | if(!LABELS.containsKey(form)){ 16 | SpanLabel label = new SpanLabel(form, LABELS.size()); 17 | LABELS.put(form, label); 18 | LABELS_INDEX.put(label.id, label); 19 | } 20 | return LABELS.get(form); 21 | } 22 | 23 | public static SpanLabel get(int id){ 24 | return LABELS_INDEX.get(id); 25 | } 26 | 27 | public String form; 28 | public int id; 29 | 30 | private SpanLabel(String form, int id) { 31 | this.form = form; 32 | this.id = id; 33 | } 34 | 35 | @Override 36 | public int hashCode() { 37 | return form.hashCode(); 38 | } 39 | 40 | @Override 41 | public boolean equals(Object obj) { 42 | if (this == obj) 43 | return true; 44 | if (obj == null) 45 | return false; 46 | if (!(obj instanceof SpanLabel)) 47 | return false; 48 | SpanLabel other = (SpanLabel) obj; 49 | if (form == null) { 50 | if (other.form != null) 51 | return false; 52 | } else if (!form.equals(other.form)) 53 | return false; 54 | return true; 55 | } 56 | 57 | public String toString(){ 58 | return String.format("%s (id: %d)", form, id); 59 | } 60 | 61 | @Override 62 | public int compareTo(SpanLabel o) { 63 | return Integer.compare(id, o.id); 64 | } 65 | 66 | public static int compare(SpanLabel o1, SpanLabel o2){ 67 | if(o1 == null){ 68 | if(o2 == null) return 0; 69 | else return -1; 70 | } else { 71 | if(o2 == null) return 1; 72 | else return o1.compareTo(o2); 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /src/cr/Event.java: -------------------------------------------------------------------------------- 1 | package cr; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | import nu.xom.Element; 7 | import nu.xom.Elements; 8 | 9 | public class Event { 10 | 11 | // Should I include a serialVersionUID? 12 | 13 | public double onset; // onset of event (measured in quarter length) 14 | public double duration; // duration of event (measured in quarter length) 15 | public int measureNumber; // number of measure that event occurs in 16 | public double accent; // accent of event (based on Music21's beatStrength() method) 17 | public List notes; // list of notes within event 18 | 19 | public Event() { 20 | notes = new ArrayList(); 21 | } 22 | 23 | public Event(double onset, double duration, int measureNumber, double accent, List notes) { 24 | this.onset = onset; 25 | this.duration = duration; 26 | this.measureNumber = measureNumber; 27 | this.accent = accent; 28 | this.notes = notes; 29 | } 30 | 31 | public static Event parseXML(Element element, Event previousEvent) { 32 | Event event = new Event(); 33 | 34 | event.onset = Double.parseDouble(element.getFirstChildElement("onset").getValue()); 35 | event.duration = Double.parseDouble(element.getFirstChildElement("duration").getValue()); 36 | event.measureNumber = Integer.parseInt(element.getFirstChildElement("measureNumber").getValue()); 37 | event.accent = Double.parseDouble(element.getFirstChildElement("accent").getValue()); 38 | 39 | Elements notes = element.getFirstChildElement("notes").getChildElements(); 40 | for (int i = 0; i < notes.size(); i++) { 41 | event.notes.add(Note.parseXML(notes.get(i), previousEvent)); 42 | } 43 | 44 | // System.out.println(event.toString()); 45 | 46 | return event; 47 | } 48 | 49 | public String toString() { 50 | String text = new String("Event:\n" 51 | + "- Onset: " + this.onset + "\n" 52 | + "- Duration: " + this.duration + "\n" 53 | + "- Measure Number: " + this.measureNumber + "\n" 54 | + "- Accent: " + this.accent + "\n" 55 | + "- Notes:\n"); 56 | for (Note note : notes) { 57 | text += note.toString(); 58 | } 59 | return text; 60 | } 61 | } -------------------------------------------------------------------------------- /src/cr/WordLabel.java: -------------------------------------------------------------------------------- 1 | package cr; 2 | 3 | import java.io.Serializable; 4 | import java.util.HashMap; 5 | import java.util.Map; 6 | 7 | /** 8 | * The class representing a label for a word/token
9 | * This class stores singleton objects, which can be retrieved by its ID or name. 10 | * @author Aldrian Obaja 11 | * 12 | */ 13 | public class WordLabel implements Comparable, Serializable{ 14 | 15 | private static final long serialVersionUID = 3941855494601533166L; 16 | public static final Map LABELS = new HashMap(); 17 | public static final Map LABELS_INDEX = new HashMap(); 18 | 19 | public static WordLabel get(String form){ 20 | if(!LABELS.containsKey(form)){ 21 | WordLabel label = new WordLabel(form, LABELS.size()); 22 | LABELS.put(form, label); 23 | LABELS_INDEX.put(label.id, label); 24 | } 25 | return LABELS.get(form); 26 | } 27 | 28 | public static WordLabel get(int id){ 29 | return LABELS_INDEX.get(id); 30 | } 31 | 32 | public String form; 33 | public int id; 34 | 35 | private WordLabel(String form, int id) { 36 | this.form = form; 37 | this.id = id; 38 | } 39 | 40 | @Override 41 | public int hashCode() { 42 | return form.hashCode(); 43 | } 44 | 45 | @Override 46 | public boolean equals(Object obj) { 47 | if (this == obj) 48 | return true; 49 | if (obj == null) 50 | return false; 51 | if (!(obj instanceof WordLabel)) 52 | return false; 53 | WordLabel other = (WordLabel) obj; 54 | if (form == null) { 55 | if (other.form != null) 56 | return false; 57 | } else if (!form.equals(other.form)) 58 | return false; 59 | return true; 60 | } 61 | 62 | public String toString(){ 63 | return String.format("%s (id: %d)", form, id); 64 | } 65 | 66 | @Override 67 | public int compareTo(WordLabel o) { 68 | return Integer.compare(id, o.id); 69 | } 70 | 71 | public static int compare(WordLabel o1, WordLabel o2){ 72 | if(o1 == null){ 73 | if(o2 == null) return 0; 74 | else return -1; 75 | } else { 76 | if(o2 == null) return 1; 77 | else return o1.compareTo(o2); 78 | } 79 | } 80 | } 81 | 82 | -------------------------------------------------------------------------------- /src/cr/Note.java: -------------------------------------------------------------------------------- 1 | package cr; 2 | 3 | import nu.xom.Element; 4 | 5 | public class Note { 6 | 7 | // Should I include a serialVersionUID? 8 | 9 | public String pitch; 10 | public double duration; 11 | public boolean fromPrevious; 12 | public double accent; // accent of event (based on Music21's beatStrength() method) 13 | public double onset; 14 | 15 | public Note() { 16 | pitch = ""; 17 | } 18 | 19 | public Note(Note oldNote) { 20 | this.pitch = oldNote.pitch; 21 | this.duration = oldNote.duration; 22 | this.fromPrevious = oldNote.fromPrevious; 23 | this.accent = oldNote.accent; 24 | this.onset = oldNote.onset; 25 | } 26 | 27 | public Note(String pitch, double duration, Boolean fromPrevious, double accent, double onset) { 28 | this.pitch = pitch; 29 | this.duration = duration; 30 | this.fromPrevious = fromPrevious; 31 | this.accent = accent; 32 | this.onset = onset; 33 | } 34 | 35 | public static Note parseXML(Element element, Event previousEvent) { 36 | Note note = new Note(); 37 | 38 | note.pitch = element.getFirstChildElement("pitch").getValue(); 39 | note.duration = Double.parseDouble(element.getFirstChildElement("duration").getValue()); 40 | note.fromPrevious = element.getFirstChildElement("fromPrevious").getValue().equals("True") ? true : false; 41 | note.accent = Double.parseDouble(element.getFirstChildElement("accent").getValue()); 42 | if(!note.fromPrevious) { 43 | note.onset = Double.parseDouble(element.getFirstChildElement("onset").getValue()); 44 | } 45 | else { 46 | for(Note previousNote : previousEvent.notes) { 47 | if(note.pitch.equals(previousNote.pitch)) { 48 | note.onset = previousNote.onset; 49 | } 50 | } 51 | } 52 | return note; 53 | } 54 | 55 | private static boolean doubleEquals(double num1, double num2) { 56 | double epsilon = 0.0000001d; 57 | return (Math.abs(num1 - num2) < epsilon); 58 | } 59 | 60 | @Override 61 | public boolean equals(Object note) { 62 | if(note == null) { 63 | return false; 64 | } 65 | else if(getClass() != note.getClass()) { 66 | return false; 67 | } 68 | final Note compNote = (Note) note; 69 | if((pitch == compNote.pitch) && doubleEquals(duration, compNote.duration) && (fromPrevious == compNote.fromPrevious) && doubleEquals(accent, compNote.accent) && doubleEquals(onset, compNote.onset)) { 70 | return true; 71 | } 72 | return false; 73 | } 74 | 75 | public String toString() { 76 | return new String("-- Note:\n" 77 | + "--- Pitch: " + this.pitch + "\n" 78 | + "--- Duration: " + this.duration + "\n" 79 | + "--- From Previous: " + this.fromPrevious + "\n" 80 | + "--- Accent: " + this.accent + "\n" 81 | + "--- Onset: " + this.onset + "\n" 82 | + ""); 83 | } 84 | } -------------------------------------------------------------------------------- /src/cr/Span.java: -------------------------------------------------------------------------------- 1 | package cr; 2 | 3 | import java.io.IOException; 4 | import java.io.Serializable; 5 | 6 | import cr.CRMain.Simplify; 7 | import static cr.SongUtil.simplifyLabel; 8 | import static cr.SongUtil.normalizeEnharmonicChords; 9 | import nu.xom.Element; 10 | 11 | public class Span implements Comparable, Serializable{ 12 | 13 | // private static final long serialVersionUID = 1849557517361796614L; ?! 14 | public SpanLabel label; 15 | public double onset; 16 | public double offset; 17 | public int start; 18 | public int stop; 19 | 20 | public Span() { 21 | 22 | } 23 | 24 | public Span(double onset, double offset, int start, int stop, SpanLabel label) { 25 | this.onset = onset; 26 | this.offset = offset; 27 | this.start = start; 28 | this.stop = stop; 29 | this.label = label; 30 | } 31 | 32 | public static Span parseXML(Element element, Simplify simplification, boolean normalizeEnharmonics) throws IOException { 33 | Span span = new Span(); 34 | 35 | span.label = SpanLabel.get(normalizeEnharmonicChords(simplifyLabel(element.getFirstChildElement("chordLabel").getValue().trim(), simplification), normalizeEnharmonics)); 36 | span.onset = Double.parseDouble(element.getFirstChildElement("onset").getValue()); 37 | span.offset = Double.parseDouble(element.getFirstChildElement("offset").getValue()); 38 | span.start = Integer.parseInt(element.getFirstChildElement("eventStart").getValue()); 39 | span.stop = Integer.parseInt(element.getFirstChildElement("eventStop").getValue()); 40 | 41 | // System.out.println(span.toString()); 42 | 43 | return span; 44 | } 45 | 46 | public boolean equals(Object o){ 47 | if(o instanceof Span){ 48 | Span s = (Span)o; 49 | // if(onset != s.onset) return false; 50 | // if(offset != s.offset) return false; 51 | if(start != s.start) return false; 52 | if(stop != s.stop) return false; 53 | return label.equals(s.label); 54 | } 55 | return false; 56 | } 57 | 58 | @Override 59 | public int compareTo(Span o) { 60 | if(onset < o.onset) return -1; 61 | if(onset > o.onset) return 1; 62 | if(offset < o.onset) return -1; 63 | if(offset > o.offset) return 1; 64 | if (start < o.start) return -1; 65 | if (stop > o.stop) return 1; 66 | if(label == null){ 67 | if(o.label == null){ 68 | return 0; 69 | } 70 | return -1; 71 | } else { 72 | if(o.label == null){ 73 | return 1; 74 | } 75 | return label.compareTo(o.label); 76 | } 77 | } 78 | 79 | public String toString(){ 80 | String text = new String("Segment:\n" 81 | + "- Label: " + this.label.toString() + "\n" 82 | + "- Onset: " + this.onset + "\n" 83 | + "- Offset: " + this.offset + "\n" 84 | + "- Event Start: " + this.start + "\n" 85 | + "- Event Stop: " + this.stop + "\n"); 86 | return text; 87 | } 88 | 89 | } 90 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ChordRecognition 2 | #### Kristen Masada and Razvan Bunescu 3 | 4 | This repository contains code for our semi-CRF system detailed in "[Chord Recognition in Symbolic Music using semi-Markov Conditional Random Fields](https://kristenmasada.github.io/publications/ismir17/ismir17.pdf)". The code here can be used to run semi-CRF on the BaCh dataset using [Radicioni and Esposito](https://pdfs.semanticscholar.org/3fe9/2031e8093b00b4b39ed0fc2bdb323b8dffb6.pdf)'s original 10 folds. 5 | 6 | # Instructions: 7 | 1. Generate fold files for your machine: `rm folds/*`, `cd fold_gen`, then `python3 fold_gen.py ` (for example, `python3 fold_gen.py /home/km942412/ChordRecognition/`). 8 | 2. Run folds: `cd ..`, then `./run-folds.sh breve_chords_in_dataset.txt &`. For example, if I want to run folds 1 through 10, with 3 folds running at a time, using all of the chords that appear in the BaCh dataset as possible labels, `./run-folds.sh 1 10 3 bach_dataset_chords.txt > run_folds_output.txt &`. This will generate feature_count files (which contain the name of each feature and a count of how many times it appears in the training data), output-c files (initial output files generated when counting the number of features in the training data), and output-e files (the output files that will contain the test results for each fold). It will also generate model.txt files (which contain the weights learned for each feature), .model files (the saved model trained on a given fold set), and .log files (which contain general output information similar to the output-e files). The feature_count, output-c, and output-e files generated by running BaCh on the fold set given in `folds/` are provided in `sample_output_files/`. A sample model.txt file, .model file, and .log file is also provided for one fold. 9 | NOTE: Our system can require a decent amount of memory per fold. We originally ran our experiments on a computer with 250GB of memory, which allowed us to run three folds at once using the fold set provided. 10 | 11 | 12 | # Running the system on another dataset: 13 | * You will need to convert musicXML files to our XML format to use them with our system. We created a script to do this, which I have included in `musicxml_parser/`. You will need to install [LXML](http://lxml.de/installation.html) and [music21](http://web.mit.edu/music21/doc/installing/index.html) to use it. After installing both of these, `cd musicxml_parser` and run `python3 musicxml_parser.py `. The converted song will appear in the same location as the original XML file inputted to the script. 14 | * Make sure to change the capacity size of the network graph in WordWeakSemiCRFNetworkCompiler.java on line 39, as this graph is affected by the length of the training songs. I usually determine this number by trial and error. The size that it is set to right now works well for most songs of medium length. 15 | * If the system is running too slowly, this might be caused by the semi-CRF using a maximum segment length that is too long. Try making maxSegmentLength a smaller number (line 87 of CRMain.java). 16 | * Also make sure that the labels in your dataset use the same kind of labels mentioned in our paper (3 possible modes, 4 possible added notes, and 12 possible root notes). Our system can be modified to use other chord labels, but this will also affect how the features are encoded. 17 | -------------------------------------------------------------------------------- /folds/train1.txt: -------------------------------------------------------------------------------- 1 | /home/razvan/bunescu/ChordRecognition/bach/014608b_annotated_events.xml 2 | /home/razvan/bunescu/ChordRecognition/bach/000408b_annotated_events.xml 3 | /home/razvan/bunescu/ChordRecognition/bach/014406b_annotated_events.xml 4 | /home/razvan/bunescu/ChordRecognition/bach/012306b_annotated_events.xml 5 | /home/razvan/bunescu/ChordRecognition/bach/000707b_annotated_events.xml 6 | /home/razvan/bunescu/ChordRecognition/bach/015403b_annotated_events.xml 7 | /home/razvan/bunescu/ChordRecognition/bach/003006b_annotated_events.xml 8 | /home/razvan/bunescu/ChordRecognition/bach/015305b_annotated_events.xml 9 | /home/razvan/bunescu/ChordRecognition/bach/002908channotated_events.xml 10 | /home/razvan/bunescu/ChordRecognition/bach/014505b_annotated_events.xml 11 | /home/razvan/bunescu/ChordRecognition/bach/003806b_annotated_events.xml 12 | /home/razvan/bunescu/ChordRecognition/bach/000907b_annotated_events.xml 13 | /home/razvan/bunescu/ChordRecognition/bach/003907bvannotated_events.xml 14 | /home/razvan/bunescu/ChordRecognition/bach/001207b_annotated_events.xml 15 | /home/razvan/bunescu/ChordRecognition/bach/000507b_annotated_events.xml 16 | /home/razvan/bunescu/ChordRecognition/bach/001805b_annotated_events.xml 17 | /home/razvan/bunescu/ChordRecognition/bach/004006b_annotated_events.xml 18 | /home/razvan/bunescu/ChordRecognition/bach/015309b_annotated_events.xml 19 | /home/razvan/bunescu/ChordRecognition/bach/002506b_annotated_events.xml 20 | /home/razvan/bunescu/ChordRecognition/bach/001306b_annotated_events.xml 21 | /home/razvan/bunescu/ChordRecognition/bach/004008b_annotated_events.xml 22 | /home/razvan/bunescu/ChordRecognition/bach/015505b_annotated_events.xml 23 | /home/razvan/bunescu/ChordRecognition/bach/014007b_annotated_events.xml 24 | /home/razvan/bunescu/ChordRecognition/bach/000306b_annotated_events.xml 25 | /home/razvan/bunescu/ChordRecognition/bach/015105b_annotated_events.xml 26 | /home/razvan/bunescu/ChordRecognition/bach/012206b_annotated_events.xml 27 | /home/razvan/bunescu/ChordRecognition/bach/015301b_annotated_events.xml 28 | /home/razvan/bunescu/ChordRecognition/bach/001907channotated_events.xml 29 | /home/razvan/bunescu/ChordRecognition/bach/014500baannotated_events.xml 30 | /home/razvan/bunescu/ChordRecognition/bach/012106b_annotated_events.xml 31 | /home/razvan/bunescu/ChordRecognition/bach/000106b_annotated_events.xml 32 | /home/razvan/bunescu/ChordRecognition/bach/012606bvannotated_events.xml 33 | /home/razvan/bunescu/ChordRecognition/bach/015408b_annotated_events.xml 34 | /home/razvan/bunescu/ChordRecognition/bach/012705b_annotated_events.xml 35 | /home/razvan/bunescu/ChordRecognition/bach/012506b_annotated_events.xml 36 | /home/razvan/bunescu/ChordRecognition/bach/001707b_annotated_events.xml 37 | /home/razvan/bunescu/ChordRecognition/bach/012406b_annotated_events.xml 38 | /home/razvan/bunescu/ChordRecognition/bach/012606b_annotated_events.xml 39 | /home/razvan/bunescu/ChordRecognition/bach/013506b_annotated_events.xml 40 | /home/razvan/bunescu/ChordRecognition/bach/012805b_annotated_events.xml 41 | /home/razvan/bunescu/ChordRecognition/bach/012006b_annotated_events.xml 42 | /home/razvan/bunescu/ChordRecognition/bach/000606b_annotated_events.xml 43 | /home/razvan/bunescu/ChordRecognition/bach/001106b_annotated_events.xml 44 | /home/razvan/bunescu/ChordRecognition/bach/002406bsannotated_events.xml 45 | /home/razvan/bunescu/ChordRecognition/bach/014806b_annotated_events.xml 46 | /home/razvan/bunescu/ChordRecognition/bach/001007b_annotated_events.xml 47 | /home/razvan/bunescu/ChordRecognition/bach/003206b_annotated_events.xml 48 | /home/razvan/bunescu/ChordRecognition/bach/014505bvannotated_events.xml 49 | /home/razvan/bunescu/ChordRecognition/bach/003608b2annotated_events.xml 50 | /home/razvan/bunescu/ChordRecognition/bach/003907b_annotated_events.xml 51 | /home/razvan/bunescu/ChordRecognition/bach/000206b_annotated_events.xml 52 | /home/razvan/bunescu/ChordRecognition/bach/014806bvannotated_events.xml 53 | /home/razvan/bunescu/ChordRecognition/bach/014403b_annotated_events.xml 54 | /home/razvan/bunescu/ChordRecognition/bach/013906b_annotated_events.xml 55 | -------------------------------------------------------------------------------- /folds/train10.txt: -------------------------------------------------------------------------------- 1 | /home/razvan/bunescu/ChordRecognition/bach/003306b_annotated_events.xml 2 | /home/razvan/bunescu/ChordRecognition/bach/013705channotated_events.xml 3 | /home/razvan/bunescu/ChordRecognition/bach/002806b_annotated_events.xml 4 | /home/razvan/bunescu/ChordRecognition/bach/005708b_annotated_events.xml 5 | /home/razvan/bunescu/ChordRecognition/bach/003109b_annotated_events.xml 6 | /home/razvan/bunescu/ChordRecognition/bach/001606b_annotated_events.xml 7 | /home/razvan/bunescu/ChordRecognition/bach/014608b_annotated_events.xml 8 | /home/razvan/bunescu/ChordRecognition/bach/000408b_annotated_events.xml 9 | /home/razvan/bunescu/ChordRecognition/bach/014406b_annotated_events.xml 10 | /home/razvan/bunescu/ChordRecognition/bach/012306b_annotated_events.xml 11 | /home/razvan/bunescu/ChordRecognition/bach/000707b_annotated_events.xml 12 | /home/razvan/bunescu/ChordRecognition/bach/015403b_annotated_events.xml 13 | /home/razvan/bunescu/ChordRecognition/bach/003006b_annotated_events.xml 14 | /home/razvan/bunescu/ChordRecognition/bach/015305b_annotated_events.xml 15 | /home/razvan/bunescu/ChordRecognition/bach/002908channotated_events.xml 16 | /home/razvan/bunescu/ChordRecognition/bach/014505b_annotated_events.xml 17 | /home/razvan/bunescu/ChordRecognition/bach/003806b_annotated_events.xml 18 | /home/razvan/bunescu/ChordRecognition/bach/000907b_annotated_events.xml 19 | /home/razvan/bunescu/ChordRecognition/bach/003907bvannotated_events.xml 20 | /home/razvan/bunescu/ChordRecognition/bach/001207b_annotated_events.xml 21 | /home/razvan/bunescu/ChordRecognition/bach/000507b_annotated_events.xml 22 | /home/razvan/bunescu/ChordRecognition/bach/001805b_annotated_events.xml 23 | /home/razvan/bunescu/ChordRecognition/bach/004006b_annotated_events.xml 24 | /home/razvan/bunescu/ChordRecognition/bach/015309b_annotated_events.xml 25 | /home/razvan/bunescu/ChordRecognition/bach/002506b_annotated_events.xml 26 | /home/razvan/bunescu/ChordRecognition/bach/001306b_annotated_events.xml 27 | /home/razvan/bunescu/ChordRecognition/bach/004008b_annotated_events.xml 28 | /home/razvan/bunescu/ChordRecognition/bach/015505b_annotated_events.xml 29 | /home/razvan/bunescu/ChordRecognition/bach/014007b_annotated_events.xml 30 | /home/razvan/bunescu/ChordRecognition/bach/000306b_annotated_events.xml 31 | /home/razvan/bunescu/ChordRecognition/bach/015105b_annotated_events.xml 32 | /home/razvan/bunescu/ChordRecognition/bach/012206b_annotated_events.xml 33 | /home/razvan/bunescu/ChordRecognition/bach/015301b_annotated_events.xml 34 | /home/razvan/bunescu/ChordRecognition/bach/001907channotated_events.xml 35 | /home/razvan/bunescu/ChordRecognition/bach/014500baannotated_events.xml 36 | /home/razvan/bunescu/ChordRecognition/bach/012106b_annotated_events.xml 37 | /home/razvan/bunescu/ChordRecognition/bach/000106b_annotated_events.xml 38 | /home/razvan/bunescu/ChordRecognition/bach/012606bvannotated_events.xml 39 | /home/razvan/bunescu/ChordRecognition/bach/015408b_annotated_events.xml 40 | /home/razvan/bunescu/ChordRecognition/bach/012705b_annotated_events.xml 41 | /home/razvan/bunescu/ChordRecognition/bach/012506b_annotated_events.xml 42 | /home/razvan/bunescu/ChordRecognition/bach/001707b_annotated_events.xml 43 | /home/razvan/bunescu/ChordRecognition/bach/012406b_annotated_events.xml 44 | /home/razvan/bunescu/ChordRecognition/bach/012606b_annotated_events.xml 45 | /home/razvan/bunescu/ChordRecognition/bach/013506b_annotated_events.xml 46 | /home/razvan/bunescu/ChordRecognition/bach/012805b_annotated_events.xml 47 | /home/razvan/bunescu/ChordRecognition/bach/012006b_annotated_events.xml 48 | /home/razvan/bunescu/ChordRecognition/bach/000606b_annotated_events.xml 49 | /home/razvan/bunescu/ChordRecognition/bach/001106b_annotated_events.xml 50 | /home/razvan/bunescu/ChordRecognition/bach/002406bsannotated_events.xml 51 | /home/razvan/bunescu/ChordRecognition/bach/014806b_annotated_events.xml 52 | /home/razvan/bunescu/ChordRecognition/bach/001007b_annotated_events.xml 53 | /home/razvan/bunescu/ChordRecognition/bach/003206b_annotated_events.xml 54 | /home/razvan/bunescu/ChordRecognition/bach/014505bvannotated_events.xml 55 | -------------------------------------------------------------------------------- /folds/train2.txt: -------------------------------------------------------------------------------- 1 | /home/razvan/bunescu/ChordRecognition/bach/003306b_annotated_events.xml 2 | /home/razvan/bunescu/ChordRecognition/bach/013705channotated_events.xml 3 | /home/razvan/bunescu/ChordRecognition/bach/002806b_annotated_events.xml 4 | /home/razvan/bunescu/ChordRecognition/bach/005708b_annotated_events.xml 5 | /home/razvan/bunescu/ChordRecognition/bach/003109b_annotated_events.xml 6 | /home/razvan/bunescu/ChordRecognition/bach/001606b_annotated_events.xml 7 | /home/razvan/bunescu/ChordRecognition/bach/003006b_annotated_events.xml 8 | /home/razvan/bunescu/ChordRecognition/bach/015305b_annotated_events.xml 9 | /home/razvan/bunescu/ChordRecognition/bach/002908channotated_events.xml 10 | /home/razvan/bunescu/ChordRecognition/bach/014505b_annotated_events.xml 11 | /home/razvan/bunescu/ChordRecognition/bach/003806b_annotated_events.xml 12 | /home/razvan/bunescu/ChordRecognition/bach/000907b_annotated_events.xml 13 | /home/razvan/bunescu/ChordRecognition/bach/003907bvannotated_events.xml 14 | /home/razvan/bunescu/ChordRecognition/bach/001207b_annotated_events.xml 15 | /home/razvan/bunescu/ChordRecognition/bach/000507b_annotated_events.xml 16 | /home/razvan/bunescu/ChordRecognition/bach/001805b_annotated_events.xml 17 | /home/razvan/bunescu/ChordRecognition/bach/004006b_annotated_events.xml 18 | /home/razvan/bunescu/ChordRecognition/bach/015309b_annotated_events.xml 19 | /home/razvan/bunescu/ChordRecognition/bach/002506b_annotated_events.xml 20 | /home/razvan/bunescu/ChordRecognition/bach/001306b_annotated_events.xml 21 | /home/razvan/bunescu/ChordRecognition/bach/004008b_annotated_events.xml 22 | /home/razvan/bunescu/ChordRecognition/bach/015505b_annotated_events.xml 23 | /home/razvan/bunescu/ChordRecognition/bach/014007b_annotated_events.xml 24 | /home/razvan/bunescu/ChordRecognition/bach/000306b_annotated_events.xml 25 | /home/razvan/bunescu/ChordRecognition/bach/015105b_annotated_events.xml 26 | /home/razvan/bunescu/ChordRecognition/bach/012206b_annotated_events.xml 27 | /home/razvan/bunescu/ChordRecognition/bach/015301b_annotated_events.xml 28 | /home/razvan/bunescu/ChordRecognition/bach/001907channotated_events.xml 29 | /home/razvan/bunescu/ChordRecognition/bach/014500baannotated_events.xml 30 | /home/razvan/bunescu/ChordRecognition/bach/012106b_annotated_events.xml 31 | /home/razvan/bunescu/ChordRecognition/bach/000106b_annotated_events.xml 32 | /home/razvan/bunescu/ChordRecognition/bach/012606bvannotated_events.xml 33 | /home/razvan/bunescu/ChordRecognition/bach/015408b_annotated_events.xml 34 | /home/razvan/bunescu/ChordRecognition/bach/012705b_annotated_events.xml 35 | /home/razvan/bunescu/ChordRecognition/bach/012506b_annotated_events.xml 36 | /home/razvan/bunescu/ChordRecognition/bach/001707b_annotated_events.xml 37 | /home/razvan/bunescu/ChordRecognition/bach/012406b_annotated_events.xml 38 | /home/razvan/bunescu/ChordRecognition/bach/012606b_annotated_events.xml 39 | /home/razvan/bunescu/ChordRecognition/bach/013506b_annotated_events.xml 40 | /home/razvan/bunescu/ChordRecognition/bach/012805b_annotated_events.xml 41 | /home/razvan/bunescu/ChordRecognition/bach/012006b_annotated_events.xml 42 | /home/razvan/bunescu/ChordRecognition/bach/000606b_annotated_events.xml 43 | /home/razvan/bunescu/ChordRecognition/bach/001106b_annotated_events.xml 44 | /home/razvan/bunescu/ChordRecognition/bach/002406bsannotated_events.xml 45 | /home/razvan/bunescu/ChordRecognition/bach/014806b_annotated_events.xml 46 | /home/razvan/bunescu/ChordRecognition/bach/001007b_annotated_events.xml 47 | /home/razvan/bunescu/ChordRecognition/bach/003206b_annotated_events.xml 48 | /home/razvan/bunescu/ChordRecognition/bach/014505bvannotated_events.xml 49 | /home/razvan/bunescu/ChordRecognition/bach/003608b2annotated_events.xml 50 | /home/razvan/bunescu/ChordRecognition/bach/003907b_annotated_events.xml 51 | /home/razvan/bunescu/ChordRecognition/bach/000206b_annotated_events.xml 52 | /home/razvan/bunescu/ChordRecognition/bach/014806bvannotated_events.xml 53 | /home/razvan/bunescu/ChordRecognition/bach/014403b_annotated_events.xml 54 | /home/razvan/bunescu/ChordRecognition/bach/013906b_annotated_events.xml 55 | -------------------------------------------------------------------------------- /folds/train3.txt: -------------------------------------------------------------------------------- 1 | /home/razvan/bunescu/ChordRecognition/bach/003306b_annotated_events.xml 2 | /home/razvan/bunescu/ChordRecognition/bach/013705channotated_events.xml 3 | /home/razvan/bunescu/ChordRecognition/bach/002806b_annotated_events.xml 4 | /home/razvan/bunescu/ChordRecognition/bach/005708b_annotated_events.xml 5 | /home/razvan/bunescu/ChordRecognition/bach/003109b_annotated_events.xml 6 | /home/razvan/bunescu/ChordRecognition/bach/001606b_annotated_events.xml 7 | /home/razvan/bunescu/ChordRecognition/bach/014608b_annotated_events.xml 8 | /home/razvan/bunescu/ChordRecognition/bach/000408b_annotated_events.xml 9 | /home/razvan/bunescu/ChordRecognition/bach/014406b_annotated_events.xml 10 | /home/razvan/bunescu/ChordRecognition/bach/012306b_annotated_events.xml 11 | /home/razvan/bunescu/ChordRecognition/bach/000707b_annotated_events.xml 12 | /home/razvan/bunescu/ChordRecognition/bach/015403b_annotated_events.xml 13 | /home/razvan/bunescu/ChordRecognition/bach/003907bvannotated_events.xml 14 | /home/razvan/bunescu/ChordRecognition/bach/001207b_annotated_events.xml 15 | /home/razvan/bunescu/ChordRecognition/bach/000507b_annotated_events.xml 16 | /home/razvan/bunescu/ChordRecognition/bach/001805b_annotated_events.xml 17 | /home/razvan/bunescu/ChordRecognition/bach/004006b_annotated_events.xml 18 | /home/razvan/bunescu/ChordRecognition/bach/015309b_annotated_events.xml 19 | /home/razvan/bunescu/ChordRecognition/bach/002506b_annotated_events.xml 20 | /home/razvan/bunescu/ChordRecognition/bach/001306b_annotated_events.xml 21 | /home/razvan/bunescu/ChordRecognition/bach/004008b_annotated_events.xml 22 | /home/razvan/bunescu/ChordRecognition/bach/015505b_annotated_events.xml 23 | /home/razvan/bunescu/ChordRecognition/bach/014007b_annotated_events.xml 24 | /home/razvan/bunescu/ChordRecognition/bach/000306b_annotated_events.xml 25 | /home/razvan/bunescu/ChordRecognition/bach/015105b_annotated_events.xml 26 | /home/razvan/bunescu/ChordRecognition/bach/012206b_annotated_events.xml 27 | /home/razvan/bunescu/ChordRecognition/bach/015301b_annotated_events.xml 28 | /home/razvan/bunescu/ChordRecognition/bach/001907channotated_events.xml 29 | /home/razvan/bunescu/ChordRecognition/bach/014500baannotated_events.xml 30 | /home/razvan/bunescu/ChordRecognition/bach/012106b_annotated_events.xml 31 | /home/razvan/bunescu/ChordRecognition/bach/000106b_annotated_events.xml 32 | /home/razvan/bunescu/ChordRecognition/bach/012606bvannotated_events.xml 33 | /home/razvan/bunescu/ChordRecognition/bach/015408b_annotated_events.xml 34 | /home/razvan/bunescu/ChordRecognition/bach/012705b_annotated_events.xml 35 | /home/razvan/bunescu/ChordRecognition/bach/012506b_annotated_events.xml 36 | /home/razvan/bunescu/ChordRecognition/bach/001707b_annotated_events.xml 37 | /home/razvan/bunescu/ChordRecognition/bach/012406b_annotated_events.xml 38 | /home/razvan/bunescu/ChordRecognition/bach/012606b_annotated_events.xml 39 | /home/razvan/bunescu/ChordRecognition/bach/013506b_annotated_events.xml 40 | /home/razvan/bunescu/ChordRecognition/bach/012805b_annotated_events.xml 41 | /home/razvan/bunescu/ChordRecognition/bach/012006b_annotated_events.xml 42 | /home/razvan/bunescu/ChordRecognition/bach/000606b_annotated_events.xml 43 | /home/razvan/bunescu/ChordRecognition/bach/001106b_annotated_events.xml 44 | /home/razvan/bunescu/ChordRecognition/bach/002406bsannotated_events.xml 45 | /home/razvan/bunescu/ChordRecognition/bach/014806b_annotated_events.xml 46 | /home/razvan/bunescu/ChordRecognition/bach/001007b_annotated_events.xml 47 | /home/razvan/bunescu/ChordRecognition/bach/003206b_annotated_events.xml 48 | /home/razvan/bunescu/ChordRecognition/bach/014505bvannotated_events.xml 49 | /home/razvan/bunescu/ChordRecognition/bach/003608b2annotated_events.xml 50 | /home/razvan/bunescu/ChordRecognition/bach/003907b_annotated_events.xml 51 | /home/razvan/bunescu/ChordRecognition/bach/000206b_annotated_events.xml 52 | /home/razvan/bunescu/ChordRecognition/bach/014806bvannotated_events.xml 53 | /home/razvan/bunescu/ChordRecognition/bach/014403b_annotated_events.xml 54 | /home/razvan/bunescu/ChordRecognition/bach/013906b_annotated_events.xml 55 | -------------------------------------------------------------------------------- /folds/train4.txt: -------------------------------------------------------------------------------- 1 | /home/razvan/bunescu/ChordRecognition/bach/003306b_annotated_events.xml 2 | /home/razvan/bunescu/ChordRecognition/bach/013705channotated_events.xml 3 | /home/razvan/bunescu/ChordRecognition/bach/002806b_annotated_events.xml 4 | /home/razvan/bunescu/ChordRecognition/bach/005708b_annotated_events.xml 5 | /home/razvan/bunescu/ChordRecognition/bach/003109b_annotated_events.xml 6 | /home/razvan/bunescu/ChordRecognition/bach/001606b_annotated_events.xml 7 | /home/razvan/bunescu/ChordRecognition/bach/014608b_annotated_events.xml 8 | /home/razvan/bunescu/ChordRecognition/bach/000408b_annotated_events.xml 9 | /home/razvan/bunescu/ChordRecognition/bach/014406b_annotated_events.xml 10 | /home/razvan/bunescu/ChordRecognition/bach/012306b_annotated_events.xml 11 | /home/razvan/bunescu/ChordRecognition/bach/000707b_annotated_events.xml 12 | /home/razvan/bunescu/ChordRecognition/bach/015403b_annotated_events.xml 13 | /home/razvan/bunescu/ChordRecognition/bach/003006b_annotated_events.xml 14 | /home/razvan/bunescu/ChordRecognition/bach/015305b_annotated_events.xml 15 | /home/razvan/bunescu/ChordRecognition/bach/002908channotated_events.xml 16 | /home/razvan/bunescu/ChordRecognition/bach/014505b_annotated_events.xml 17 | /home/razvan/bunescu/ChordRecognition/bach/003806b_annotated_events.xml 18 | /home/razvan/bunescu/ChordRecognition/bach/000907b_annotated_events.xml 19 | /home/razvan/bunescu/ChordRecognition/bach/002506b_annotated_events.xml 20 | /home/razvan/bunescu/ChordRecognition/bach/001306b_annotated_events.xml 21 | /home/razvan/bunescu/ChordRecognition/bach/004008b_annotated_events.xml 22 | /home/razvan/bunescu/ChordRecognition/bach/015505b_annotated_events.xml 23 | /home/razvan/bunescu/ChordRecognition/bach/014007b_annotated_events.xml 24 | /home/razvan/bunescu/ChordRecognition/bach/000306b_annotated_events.xml 25 | /home/razvan/bunescu/ChordRecognition/bach/015105b_annotated_events.xml 26 | /home/razvan/bunescu/ChordRecognition/bach/012206b_annotated_events.xml 27 | /home/razvan/bunescu/ChordRecognition/bach/015301b_annotated_events.xml 28 | /home/razvan/bunescu/ChordRecognition/bach/001907channotated_events.xml 29 | /home/razvan/bunescu/ChordRecognition/bach/014500baannotated_events.xml 30 | /home/razvan/bunescu/ChordRecognition/bach/012106b_annotated_events.xml 31 | /home/razvan/bunescu/ChordRecognition/bach/000106b_annotated_events.xml 32 | /home/razvan/bunescu/ChordRecognition/bach/012606bvannotated_events.xml 33 | /home/razvan/bunescu/ChordRecognition/bach/015408b_annotated_events.xml 34 | /home/razvan/bunescu/ChordRecognition/bach/012705b_annotated_events.xml 35 | /home/razvan/bunescu/ChordRecognition/bach/012506b_annotated_events.xml 36 | /home/razvan/bunescu/ChordRecognition/bach/001707b_annotated_events.xml 37 | /home/razvan/bunescu/ChordRecognition/bach/012406b_annotated_events.xml 38 | /home/razvan/bunescu/ChordRecognition/bach/012606b_annotated_events.xml 39 | /home/razvan/bunescu/ChordRecognition/bach/013506b_annotated_events.xml 40 | /home/razvan/bunescu/ChordRecognition/bach/012805b_annotated_events.xml 41 | /home/razvan/bunescu/ChordRecognition/bach/012006b_annotated_events.xml 42 | /home/razvan/bunescu/ChordRecognition/bach/000606b_annotated_events.xml 43 | /home/razvan/bunescu/ChordRecognition/bach/001106b_annotated_events.xml 44 | /home/razvan/bunescu/ChordRecognition/bach/002406bsannotated_events.xml 45 | /home/razvan/bunescu/ChordRecognition/bach/014806b_annotated_events.xml 46 | /home/razvan/bunescu/ChordRecognition/bach/001007b_annotated_events.xml 47 | /home/razvan/bunescu/ChordRecognition/bach/003206b_annotated_events.xml 48 | /home/razvan/bunescu/ChordRecognition/bach/014505bvannotated_events.xml 49 | /home/razvan/bunescu/ChordRecognition/bach/003608b2annotated_events.xml 50 | /home/razvan/bunescu/ChordRecognition/bach/003907b_annotated_events.xml 51 | /home/razvan/bunescu/ChordRecognition/bach/000206b_annotated_events.xml 52 | /home/razvan/bunescu/ChordRecognition/bach/014806bvannotated_events.xml 53 | /home/razvan/bunescu/ChordRecognition/bach/014403b_annotated_events.xml 54 | /home/razvan/bunescu/ChordRecognition/bach/013906b_annotated_events.xml 55 | -------------------------------------------------------------------------------- /folds/train5.txt: -------------------------------------------------------------------------------- 1 | /home/razvan/bunescu/ChordRecognition/bach/003306b_annotated_events.xml 2 | /home/razvan/bunescu/ChordRecognition/bach/013705channotated_events.xml 3 | /home/razvan/bunescu/ChordRecognition/bach/002806b_annotated_events.xml 4 | /home/razvan/bunescu/ChordRecognition/bach/005708b_annotated_events.xml 5 | /home/razvan/bunescu/ChordRecognition/bach/003109b_annotated_events.xml 6 | /home/razvan/bunescu/ChordRecognition/bach/001606b_annotated_events.xml 7 | /home/razvan/bunescu/ChordRecognition/bach/014608b_annotated_events.xml 8 | /home/razvan/bunescu/ChordRecognition/bach/000408b_annotated_events.xml 9 | /home/razvan/bunescu/ChordRecognition/bach/014406b_annotated_events.xml 10 | /home/razvan/bunescu/ChordRecognition/bach/012306b_annotated_events.xml 11 | /home/razvan/bunescu/ChordRecognition/bach/000707b_annotated_events.xml 12 | /home/razvan/bunescu/ChordRecognition/bach/015403b_annotated_events.xml 13 | /home/razvan/bunescu/ChordRecognition/bach/003006b_annotated_events.xml 14 | /home/razvan/bunescu/ChordRecognition/bach/015305b_annotated_events.xml 15 | /home/razvan/bunescu/ChordRecognition/bach/002908channotated_events.xml 16 | /home/razvan/bunescu/ChordRecognition/bach/014505b_annotated_events.xml 17 | /home/razvan/bunescu/ChordRecognition/bach/003806b_annotated_events.xml 18 | /home/razvan/bunescu/ChordRecognition/bach/000907b_annotated_events.xml 19 | /home/razvan/bunescu/ChordRecognition/bach/003907bvannotated_events.xml 20 | /home/razvan/bunescu/ChordRecognition/bach/001207b_annotated_events.xml 21 | /home/razvan/bunescu/ChordRecognition/bach/000507b_annotated_events.xml 22 | /home/razvan/bunescu/ChordRecognition/bach/001805b_annotated_events.xml 23 | /home/razvan/bunescu/ChordRecognition/bach/004006b_annotated_events.xml 24 | /home/razvan/bunescu/ChordRecognition/bach/015309b_annotated_events.xml 25 | /home/razvan/bunescu/ChordRecognition/bach/015105b_annotated_events.xml 26 | /home/razvan/bunescu/ChordRecognition/bach/012206b_annotated_events.xml 27 | /home/razvan/bunescu/ChordRecognition/bach/015301b_annotated_events.xml 28 | /home/razvan/bunescu/ChordRecognition/bach/001907channotated_events.xml 29 | /home/razvan/bunescu/ChordRecognition/bach/014500baannotated_events.xml 30 | /home/razvan/bunescu/ChordRecognition/bach/012106b_annotated_events.xml 31 | /home/razvan/bunescu/ChordRecognition/bach/000106b_annotated_events.xml 32 | /home/razvan/bunescu/ChordRecognition/bach/012606bvannotated_events.xml 33 | /home/razvan/bunescu/ChordRecognition/bach/015408b_annotated_events.xml 34 | /home/razvan/bunescu/ChordRecognition/bach/012705b_annotated_events.xml 35 | /home/razvan/bunescu/ChordRecognition/bach/012506b_annotated_events.xml 36 | /home/razvan/bunescu/ChordRecognition/bach/001707b_annotated_events.xml 37 | /home/razvan/bunescu/ChordRecognition/bach/012406b_annotated_events.xml 38 | /home/razvan/bunescu/ChordRecognition/bach/012606b_annotated_events.xml 39 | /home/razvan/bunescu/ChordRecognition/bach/013506b_annotated_events.xml 40 | /home/razvan/bunescu/ChordRecognition/bach/012805b_annotated_events.xml 41 | /home/razvan/bunescu/ChordRecognition/bach/012006b_annotated_events.xml 42 | /home/razvan/bunescu/ChordRecognition/bach/000606b_annotated_events.xml 43 | /home/razvan/bunescu/ChordRecognition/bach/001106b_annotated_events.xml 44 | /home/razvan/bunescu/ChordRecognition/bach/002406bsannotated_events.xml 45 | /home/razvan/bunescu/ChordRecognition/bach/014806b_annotated_events.xml 46 | /home/razvan/bunescu/ChordRecognition/bach/001007b_annotated_events.xml 47 | /home/razvan/bunescu/ChordRecognition/bach/003206b_annotated_events.xml 48 | /home/razvan/bunescu/ChordRecognition/bach/014505bvannotated_events.xml 49 | /home/razvan/bunescu/ChordRecognition/bach/003608b2annotated_events.xml 50 | /home/razvan/bunescu/ChordRecognition/bach/003907b_annotated_events.xml 51 | /home/razvan/bunescu/ChordRecognition/bach/000206b_annotated_events.xml 52 | /home/razvan/bunescu/ChordRecognition/bach/014806bvannotated_events.xml 53 | /home/razvan/bunescu/ChordRecognition/bach/014403b_annotated_events.xml 54 | /home/razvan/bunescu/ChordRecognition/bach/013906b_annotated_events.xml 55 | -------------------------------------------------------------------------------- /folds/train6.txt: -------------------------------------------------------------------------------- 1 | /home/razvan/bunescu/ChordRecognition/bach/003306b_annotated_events.xml 2 | /home/razvan/bunescu/ChordRecognition/bach/013705channotated_events.xml 3 | /home/razvan/bunescu/ChordRecognition/bach/002806b_annotated_events.xml 4 | /home/razvan/bunescu/ChordRecognition/bach/005708b_annotated_events.xml 5 | /home/razvan/bunescu/ChordRecognition/bach/003109b_annotated_events.xml 6 | /home/razvan/bunescu/ChordRecognition/bach/001606b_annotated_events.xml 7 | /home/razvan/bunescu/ChordRecognition/bach/014608b_annotated_events.xml 8 | /home/razvan/bunescu/ChordRecognition/bach/000408b_annotated_events.xml 9 | /home/razvan/bunescu/ChordRecognition/bach/014406b_annotated_events.xml 10 | /home/razvan/bunescu/ChordRecognition/bach/012306b_annotated_events.xml 11 | /home/razvan/bunescu/ChordRecognition/bach/000707b_annotated_events.xml 12 | /home/razvan/bunescu/ChordRecognition/bach/015403b_annotated_events.xml 13 | /home/razvan/bunescu/ChordRecognition/bach/003006b_annotated_events.xml 14 | /home/razvan/bunescu/ChordRecognition/bach/015305b_annotated_events.xml 15 | /home/razvan/bunescu/ChordRecognition/bach/002908channotated_events.xml 16 | /home/razvan/bunescu/ChordRecognition/bach/014505b_annotated_events.xml 17 | /home/razvan/bunescu/ChordRecognition/bach/003806b_annotated_events.xml 18 | /home/razvan/bunescu/ChordRecognition/bach/000907b_annotated_events.xml 19 | /home/razvan/bunescu/ChordRecognition/bach/003907bvannotated_events.xml 20 | /home/razvan/bunescu/ChordRecognition/bach/001207b_annotated_events.xml 21 | /home/razvan/bunescu/ChordRecognition/bach/000507b_annotated_events.xml 22 | /home/razvan/bunescu/ChordRecognition/bach/001805b_annotated_events.xml 23 | /home/razvan/bunescu/ChordRecognition/bach/004006b_annotated_events.xml 24 | /home/razvan/bunescu/ChordRecognition/bach/015309b_annotated_events.xml 25 | /home/razvan/bunescu/ChordRecognition/bach/002506b_annotated_events.xml 26 | /home/razvan/bunescu/ChordRecognition/bach/001306b_annotated_events.xml 27 | /home/razvan/bunescu/ChordRecognition/bach/004008b_annotated_events.xml 28 | /home/razvan/bunescu/ChordRecognition/bach/015505b_annotated_events.xml 29 | /home/razvan/bunescu/ChordRecognition/bach/014007b_annotated_events.xml 30 | /home/razvan/bunescu/ChordRecognition/bach/000306b_annotated_events.xml 31 | /home/razvan/bunescu/ChordRecognition/bach/000106b_annotated_events.xml 32 | /home/razvan/bunescu/ChordRecognition/bach/012606bvannotated_events.xml 33 | /home/razvan/bunescu/ChordRecognition/bach/015408b_annotated_events.xml 34 | /home/razvan/bunescu/ChordRecognition/bach/012705b_annotated_events.xml 35 | /home/razvan/bunescu/ChordRecognition/bach/012506b_annotated_events.xml 36 | /home/razvan/bunescu/ChordRecognition/bach/001707b_annotated_events.xml 37 | /home/razvan/bunescu/ChordRecognition/bach/012406b_annotated_events.xml 38 | /home/razvan/bunescu/ChordRecognition/bach/012606b_annotated_events.xml 39 | /home/razvan/bunescu/ChordRecognition/bach/013506b_annotated_events.xml 40 | /home/razvan/bunescu/ChordRecognition/bach/012805b_annotated_events.xml 41 | /home/razvan/bunescu/ChordRecognition/bach/012006b_annotated_events.xml 42 | /home/razvan/bunescu/ChordRecognition/bach/000606b_annotated_events.xml 43 | /home/razvan/bunescu/ChordRecognition/bach/001106b_annotated_events.xml 44 | /home/razvan/bunescu/ChordRecognition/bach/002406bsannotated_events.xml 45 | /home/razvan/bunescu/ChordRecognition/bach/014806b_annotated_events.xml 46 | /home/razvan/bunescu/ChordRecognition/bach/001007b_annotated_events.xml 47 | /home/razvan/bunescu/ChordRecognition/bach/003206b_annotated_events.xml 48 | /home/razvan/bunescu/ChordRecognition/bach/014505bvannotated_events.xml 49 | /home/razvan/bunescu/ChordRecognition/bach/003608b2annotated_events.xml 50 | /home/razvan/bunescu/ChordRecognition/bach/003907b_annotated_events.xml 51 | /home/razvan/bunescu/ChordRecognition/bach/000206b_annotated_events.xml 52 | /home/razvan/bunescu/ChordRecognition/bach/014806bvannotated_events.xml 53 | /home/razvan/bunescu/ChordRecognition/bach/014403b_annotated_events.xml 54 | /home/razvan/bunescu/ChordRecognition/bach/013906b_annotated_events.xml 55 | -------------------------------------------------------------------------------- /folds/train7.txt: -------------------------------------------------------------------------------- 1 | /home/razvan/bunescu/ChordRecognition/bach/003306b_annotated_events.xml 2 | /home/razvan/bunescu/ChordRecognition/bach/013705channotated_events.xml 3 | /home/razvan/bunescu/ChordRecognition/bach/002806b_annotated_events.xml 4 | /home/razvan/bunescu/ChordRecognition/bach/005708b_annotated_events.xml 5 | /home/razvan/bunescu/ChordRecognition/bach/003109b_annotated_events.xml 6 | /home/razvan/bunescu/ChordRecognition/bach/001606b_annotated_events.xml 7 | /home/razvan/bunescu/ChordRecognition/bach/014608b_annotated_events.xml 8 | /home/razvan/bunescu/ChordRecognition/bach/000408b_annotated_events.xml 9 | /home/razvan/bunescu/ChordRecognition/bach/014406b_annotated_events.xml 10 | /home/razvan/bunescu/ChordRecognition/bach/012306b_annotated_events.xml 11 | /home/razvan/bunescu/ChordRecognition/bach/000707b_annotated_events.xml 12 | /home/razvan/bunescu/ChordRecognition/bach/015403b_annotated_events.xml 13 | /home/razvan/bunescu/ChordRecognition/bach/003006b_annotated_events.xml 14 | /home/razvan/bunescu/ChordRecognition/bach/015305b_annotated_events.xml 15 | /home/razvan/bunescu/ChordRecognition/bach/002908channotated_events.xml 16 | /home/razvan/bunescu/ChordRecognition/bach/014505b_annotated_events.xml 17 | /home/razvan/bunescu/ChordRecognition/bach/003806b_annotated_events.xml 18 | /home/razvan/bunescu/ChordRecognition/bach/000907b_annotated_events.xml 19 | /home/razvan/bunescu/ChordRecognition/bach/003907bvannotated_events.xml 20 | /home/razvan/bunescu/ChordRecognition/bach/001207b_annotated_events.xml 21 | /home/razvan/bunescu/ChordRecognition/bach/000507b_annotated_events.xml 22 | /home/razvan/bunescu/ChordRecognition/bach/001805b_annotated_events.xml 23 | /home/razvan/bunescu/ChordRecognition/bach/004006b_annotated_events.xml 24 | /home/razvan/bunescu/ChordRecognition/bach/015309b_annotated_events.xml 25 | /home/razvan/bunescu/ChordRecognition/bach/002506b_annotated_events.xml 26 | /home/razvan/bunescu/ChordRecognition/bach/001306b_annotated_events.xml 27 | /home/razvan/bunescu/ChordRecognition/bach/004008b_annotated_events.xml 28 | /home/razvan/bunescu/ChordRecognition/bach/015505b_annotated_events.xml 29 | /home/razvan/bunescu/ChordRecognition/bach/014007b_annotated_events.xml 30 | /home/razvan/bunescu/ChordRecognition/bach/000306b_annotated_events.xml 31 | /home/razvan/bunescu/ChordRecognition/bach/015105b_annotated_events.xml 32 | /home/razvan/bunescu/ChordRecognition/bach/012206b_annotated_events.xml 33 | /home/razvan/bunescu/ChordRecognition/bach/015301b_annotated_events.xml 34 | /home/razvan/bunescu/ChordRecognition/bach/001907channotated_events.xml 35 | /home/razvan/bunescu/ChordRecognition/bach/014500baannotated_events.xml 36 | /home/razvan/bunescu/ChordRecognition/bach/012106b_annotated_events.xml 37 | /home/razvan/bunescu/ChordRecognition/bach/012406b_annotated_events.xml 38 | /home/razvan/bunescu/ChordRecognition/bach/012606b_annotated_events.xml 39 | /home/razvan/bunescu/ChordRecognition/bach/013506b_annotated_events.xml 40 | /home/razvan/bunescu/ChordRecognition/bach/012805b_annotated_events.xml 41 | /home/razvan/bunescu/ChordRecognition/bach/012006b_annotated_events.xml 42 | /home/razvan/bunescu/ChordRecognition/bach/000606b_annotated_events.xml 43 | /home/razvan/bunescu/ChordRecognition/bach/001106b_annotated_events.xml 44 | /home/razvan/bunescu/ChordRecognition/bach/002406bsannotated_events.xml 45 | /home/razvan/bunescu/ChordRecognition/bach/014806b_annotated_events.xml 46 | /home/razvan/bunescu/ChordRecognition/bach/001007b_annotated_events.xml 47 | /home/razvan/bunescu/ChordRecognition/bach/003206b_annotated_events.xml 48 | /home/razvan/bunescu/ChordRecognition/bach/014505bvannotated_events.xml 49 | /home/razvan/bunescu/ChordRecognition/bach/003608b2annotated_events.xml 50 | /home/razvan/bunescu/ChordRecognition/bach/003907b_annotated_events.xml 51 | /home/razvan/bunescu/ChordRecognition/bach/000206b_annotated_events.xml 52 | /home/razvan/bunescu/ChordRecognition/bach/014806bvannotated_events.xml 53 | /home/razvan/bunescu/ChordRecognition/bach/014403b_annotated_events.xml 54 | /home/razvan/bunescu/ChordRecognition/bach/013906b_annotated_events.xml 55 | -------------------------------------------------------------------------------- /folds/train8.txt: -------------------------------------------------------------------------------- 1 | /home/razvan/bunescu/ChordRecognition/bach/003306b_annotated_events.xml 2 | /home/razvan/bunescu/ChordRecognition/bach/013705channotated_events.xml 3 | /home/razvan/bunescu/ChordRecognition/bach/002806b_annotated_events.xml 4 | /home/razvan/bunescu/ChordRecognition/bach/005708b_annotated_events.xml 5 | /home/razvan/bunescu/ChordRecognition/bach/003109b_annotated_events.xml 6 | /home/razvan/bunescu/ChordRecognition/bach/001606b_annotated_events.xml 7 | /home/razvan/bunescu/ChordRecognition/bach/014608b_annotated_events.xml 8 | /home/razvan/bunescu/ChordRecognition/bach/000408b_annotated_events.xml 9 | /home/razvan/bunescu/ChordRecognition/bach/014406b_annotated_events.xml 10 | /home/razvan/bunescu/ChordRecognition/bach/012306b_annotated_events.xml 11 | /home/razvan/bunescu/ChordRecognition/bach/000707b_annotated_events.xml 12 | /home/razvan/bunescu/ChordRecognition/bach/015403b_annotated_events.xml 13 | /home/razvan/bunescu/ChordRecognition/bach/003006b_annotated_events.xml 14 | /home/razvan/bunescu/ChordRecognition/bach/015305b_annotated_events.xml 15 | /home/razvan/bunescu/ChordRecognition/bach/002908channotated_events.xml 16 | /home/razvan/bunescu/ChordRecognition/bach/014505b_annotated_events.xml 17 | /home/razvan/bunescu/ChordRecognition/bach/003806b_annotated_events.xml 18 | /home/razvan/bunescu/ChordRecognition/bach/000907b_annotated_events.xml 19 | /home/razvan/bunescu/ChordRecognition/bach/003907bvannotated_events.xml 20 | /home/razvan/bunescu/ChordRecognition/bach/001207b_annotated_events.xml 21 | /home/razvan/bunescu/ChordRecognition/bach/000507b_annotated_events.xml 22 | /home/razvan/bunescu/ChordRecognition/bach/001805b_annotated_events.xml 23 | /home/razvan/bunescu/ChordRecognition/bach/004006b_annotated_events.xml 24 | /home/razvan/bunescu/ChordRecognition/bach/015309b_annotated_events.xml 25 | /home/razvan/bunescu/ChordRecognition/bach/002506b_annotated_events.xml 26 | /home/razvan/bunescu/ChordRecognition/bach/001306b_annotated_events.xml 27 | /home/razvan/bunescu/ChordRecognition/bach/004008b_annotated_events.xml 28 | /home/razvan/bunescu/ChordRecognition/bach/015505b_annotated_events.xml 29 | /home/razvan/bunescu/ChordRecognition/bach/014007b_annotated_events.xml 30 | /home/razvan/bunescu/ChordRecognition/bach/000306b_annotated_events.xml 31 | /home/razvan/bunescu/ChordRecognition/bach/015105b_annotated_events.xml 32 | /home/razvan/bunescu/ChordRecognition/bach/012206b_annotated_events.xml 33 | /home/razvan/bunescu/ChordRecognition/bach/015301b_annotated_events.xml 34 | /home/razvan/bunescu/ChordRecognition/bach/001907channotated_events.xml 35 | /home/razvan/bunescu/ChordRecognition/bach/014500baannotated_events.xml 36 | /home/razvan/bunescu/ChordRecognition/bach/012106b_annotated_events.xml 37 | /home/razvan/bunescu/ChordRecognition/bach/000106b_annotated_events.xml 38 | /home/razvan/bunescu/ChordRecognition/bach/012606bvannotated_events.xml 39 | /home/razvan/bunescu/ChordRecognition/bach/015408b_annotated_events.xml 40 | /home/razvan/bunescu/ChordRecognition/bach/012705b_annotated_events.xml 41 | /home/razvan/bunescu/ChordRecognition/bach/012506b_annotated_events.xml 42 | /home/razvan/bunescu/ChordRecognition/bach/001707b_annotated_events.xml 43 | /home/razvan/bunescu/ChordRecognition/bach/001106b_annotated_events.xml 44 | /home/razvan/bunescu/ChordRecognition/bach/002406bsannotated_events.xml 45 | /home/razvan/bunescu/ChordRecognition/bach/014806b_annotated_events.xml 46 | /home/razvan/bunescu/ChordRecognition/bach/001007b_annotated_events.xml 47 | /home/razvan/bunescu/ChordRecognition/bach/003206b_annotated_events.xml 48 | /home/razvan/bunescu/ChordRecognition/bach/014505bvannotated_events.xml 49 | /home/razvan/bunescu/ChordRecognition/bach/003608b2annotated_events.xml 50 | /home/razvan/bunescu/ChordRecognition/bach/003907b_annotated_events.xml 51 | /home/razvan/bunescu/ChordRecognition/bach/000206b_annotated_events.xml 52 | /home/razvan/bunescu/ChordRecognition/bach/014806bvannotated_events.xml 53 | /home/razvan/bunescu/ChordRecognition/bach/014403b_annotated_events.xml 54 | /home/razvan/bunescu/ChordRecognition/bach/013906b_annotated_events.xml 55 | -------------------------------------------------------------------------------- /folds/train9.txt: -------------------------------------------------------------------------------- 1 | /home/razvan/bunescu/ChordRecognition/bach/003306b_annotated_events.xml 2 | /home/razvan/bunescu/ChordRecognition/bach/013705channotated_events.xml 3 | /home/razvan/bunescu/ChordRecognition/bach/002806b_annotated_events.xml 4 | /home/razvan/bunescu/ChordRecognition/bach/005708b_annotated_events.xml 5 | /home/razvan/bunescu/ChordRecognition/bach/003109b_annotated_events.xml 6 | /home/razvan/bunescu/ChordRecognition/bach/001606b_annotated_events.xml 7 | /home/razvan/bunescu/ChordRecognition/bach/014608b_annotated_events.xml 8 | /home/razvan/bunescu/ChordRecognition/bach/000408b_annotated_events.xml 9 | /home/razvan/bunescu/ChordRecognition/bach/014406b_annotated_events.xml 10 | /home/razvan/bunescu/ChordRecognition/bach/012306b_annotated_events.xml 11 | /home/razvan/bunescu/ChordRecognition/bach/000707b_annotated_events.xml 12 | /home/razvan/bunescu/ChordRecognition/bach/015403b_annotated_events.xml 13 | /home/razvan/bunescu/ChordRecognition/bach/003006b_annotated_events.xml 14 | /home/razvan/bunescu/ChordRecognition/bach/015305b_annotated_events.xml 15 | /home/razvan/bunescu/ChordRecognition/bach/002908channotated_events.xml 16 | /home/razvan/bunescu/ChordRecognition/bach/014505b_annotated_events.xml 17 | /home/razvan/bunescu/ChordRecognition/bach/003806b_annotated_events.xml 18 | /home/razvan/bunescu/ChordRecognition/bach/000907b_annotated_events.xml 19 | /home/razvan/bunescu/ChordRecognition/bach/003907bvannotated_events.xml 20 | /home/razvan/bunescu/ChordRecognition/bach/001207b_annotated_events.xml 21 | /home/razvan/bunescu/ChordRecognition/bach/000507b_annotated_events.xml 22 | /home/razvan/bunescu/ChordRecognition/bach/001805b_annotated_events.xml 23 | /home/razvan/bunescu/ChordRecognition/bach/004006b_annotated_events.xml 24 | /home/razvan/bunescu/ChordRecognition/bach/015309b_annotated_events.xml 25 | /home/razvan/bunescu/ChordRecognition/bach/002506b_annotated_events.xml 26 | /home/razvan/bunescu/ChordRecognition/bach/001306b_annotated_events.xml 27 | /home/razvan/bunescu/ChordRecognition/bach/004008b_annotated_events.xml 28 | /home/razvan/bunescu/ChordRecognition/bach/015505b_annotated_events.xml 29 | /home/razvan/bunescu/ChordRecognition/bach/014007b_annotated_events.xml 30 | /home/razvan/bunescu/ChordRecognition/bach/000306b_annotated_events.xml 31 | /home/razvan/bunescu/ChordRecognition/bach/015105b_annotated_events.xml 32 | /home/razvan/bunescu/ChordRecognition/bach/012206b_annotated_events.xml 33 | /home/razvan/bunescu/ChordRecognition/bach/015301b_annotated_events.xml 34 | /home/razvan/bunescu/ChordRecognition/bach/001907channotated_events.xml 35 | /home/razvan/bunescu/ChordRecognition/bach/014500baannotated_events.xml 36 | /home/razvan/bunescu/ChordRecognition/bach/012106b_annotated_events.xml 37 | /home/razvan/bunescu/ChordRecognition/bach/000106b_annotated_events.xml 38 | /home/razvan/bunescu/ChordRecognition/bach/012606bvannotated_events.xml 39 | /home/razvan/bunescu/ChordRecognition/bach/015408b_annotated_events.xml 40 | /home/razvan/bunescu/ChordRecognition/bach/012705b_annotated_events.xml 41 | /home/razvan/bunescu/ChordRecognition/bach/012506b_annotated_events.xml 42 | /home/razvan/bunescu/ChordRecognition/bach/001707b_annotated_events.xml 43 | /home/razvan/bunescu/ChordRecognition/bach/012406b_annotated_events.xml 44 | /home/razvan/bunescu/ChordRecognition/bach/012606b_annotated_events.xml 45 | /home/razvan/bunescu/ChordRecognition/bach/013506b_annotated_events.xml 46 | /home/razvan/bunescu/ChordRecognition/bach/012805b_annotated_events.xml 47 | /home/razvan/bunescu/ChordRecognition/bach/012006b_annotated_events.xml 48 | /home/razvan/bunescu/ChordRecognition/bach/000606b_annotated_events.xml 49 | /home/razvan/bunescu/ChordRecognition/bach/003608b2annotated_events.xml 50 | /home/razvan/bunescu/ChordRecognition/bach/003907b_annotated_events.xml 51 | /home/razvan/bunescu/ChordRecognition/bach/000206b_annotated_events.xml 52 | /home/razvan/bunescu/ChordRecognition/bach/014806bvannotated_events.xml 53 | /home/razvan/bunescu/ChordRecognition/bach/014403b_annotated_events.xml 54 | /home/razvan/bunescu/ChordRecognition/bach/013906b_annotated_events.xml 55 | -------------------------------------------------------------------------------- /musicxml_parser/musicxml_parser.py: -------------------------------------------------------------------------------- 1 | # Kristen Masada 2 | # Converts MusicXML file to XML file with event-based info 3 | 4 | 5 | import sys 6 | import io 7 | import re 8 | from lxml import builder, etree 9 | from music21 import converter, note, chord, stream, search 10 | 11 | # import MusicXML file 12 | file = sys.argv[1] 13 | filename = file[:-4] 14 | score = converter.parse(file) 15 | 16 | # initialize song tag, which will be root tag of xml file 17 | song = etree.Element("song") 18 | 19 | # top-level comment providing brief description about units for onset/duration 20 | comment = "Durations are in quarter length format, in which a quarter note is of length 1.0, an eighth note is of length 0.5, etc. Onsets are relative to the beginning of the score, starting at index 0.0, and are in quarter length format as well." 21 | song.addprevious(etree.Comment(comment)) 22 | 23 | # create title tag from song tag; include song title as text 24 | etree.SubElement(song, "title").text = filename 25 | 26 | # create XML for length of song 27 | etree.SubElement(song, "length").text = str(score.quarterLength) 28 | 29 | # convert score to TimespanTree object 30 | scoreTree = score.asTimespans(classList = (note.Note,chord.Chord)) 31 | 32 | # grab events from scoreTree 33 | chord_events = list(scoreTree.iterateVerticalities()) 34 | 35 | # get chords from lyrics 36 | reSearchChords = re.compile(r'[^\s]+', re.IGNORECASE) 37 | ls = search.lyrics.LyricSearcher(score) 38 | chords = ls.search(reSearchChords) 39 | 40 | # put chords into sorted dictionary, with key as onset time and value as chord name 41 | chords_dict = {} 42 | for c in chords: 43 | chords_dict[c.els[0].getOffsetInHierarchy(score)] = c.matchText.split("|")[0] # get preferred chord annotation 44 | chords_keys = sorted(chords_dict.keys()) 45 | 46 | # create XML for events 47 | events = etree.SubElement(song, "events") 48 | i = 0 # counter for index number of event in array 49 | events_dict = {} # events dictionary, with key as onset time and value as index number; 50 | # used later for getting eventStart and eventStop info for segments 51 | prev_label = chords_dict[min(chords_dict)] # chord label of event with smallest key 52 | for e in chord_events: 53 | event = etree.SubElement(events, "event") 54 | etree.SubElement(event, "index").text = str(i) 55 | if e.offset in chords_keys: 56 | etree.SubElement(event, "tag").text = "B-" + chords_dict[e.offset] 57 | prev_label = chords_dict[e.offset] 58 | else: 59 | etree.SubElement(event, "tag").text = "I-" + prev_label 60 | etree.SubElement(event, "onset").text = str(e.offset) 61 | events_dict[e.offset] = i 62 | if e.nextStartOffset: 63 | etree.SubElement(event, "duration").text = str(e.nextStartOffset - e.offset) 64 | else: 65 | etree.SubElement(event, "duration").text = str(score.quarterLength - e.offset) 66 | etree.SubElement(event, "measureNumber").text = str(e.measureNumber) 67 | etree.SubElement(event, "accent").text = str(e.beatStrength) 68 | notes = etree.SubElement(event, "notes") 69 | for s in e.startTimespans: 70 | duration = s.quarterLength 71 | for p in s.pitches: 72 | note = etree.SubElement(notes, "note") 73 | noteNameWithOctave = p.nameWithOctave 74 | noteNameWithOctave = noteNameWithOctave.replace("-", "b") 75 | etree.SubElement(note, "pitch").text = noteNameWithOctave 76 | etree.SubElement(note, "duration").text = str(duration) 77 | etree.SubElement(note, "fromPrevious").text = "False" 78 | etree.SubElement(note, "accent").text = str(e.beatStrength) 79 | etree.SubElement(note, "onset").text = str(e.offset) 80 | for v in e.overlapTimespans: 81 | duration = v.quarterLength 82 | for p in v.pitches: 83 | note = etree.SubElement(notes, "note") 84 | noteNameWithOctave = p.nameWithOctave 85 | noteNameWithOctave = noteNameWithOctave.replace("-", "b") 86 | etree.SubElement(note, "pitch").text = noteNameWithOctave 87 | etree.SubElement(note, "duration").text = str(duration) 88 | etree.SubElement(note, "fromPrevious").text = "True" 89 | etree.SubElement(note, "accent").text = str(e.beatStrength) 90 | i += 1 91 | 92 | # create XML for segments 93 | segments = etree.SubElement(song, "segments") 94 | for i, key in enumerate(chords_keys): 95 | segment = etree.SubElement(segments, "segment") 96 | etree.SubElement(segment, "chordLabel").text = chords_dict[key] 97 | etree.SubElement(segment, "onset").text = str(key) 98 | if i < (len(chords) - 1): 99 | etree.SubElement(segment, "offset").text = str(chords_keys[i + 1]) 100 | else: 101 | etree.SubElement(segment, "offset").text = str(score.quarterLength) 102 | etree.SubElement(segment, "eventStart").text = str(events_dict[key]) 103 | if i < (len(chords) - 1): 104 | etree.SubElement(segment, "eventStop").text = str(events_dict[chords_keys[i + 1]]) 105 | else: 106 | etree.SubElement(segment, "eventStop").text = str(len(events_dict)) 107 | 108 | 109 | # output xml file 110 | xml_filename = filename + "_events.xml" 111 | et = etree.ElementTree(song) 112 | et.write(xml_filename, encoding = "UTF-8", pretty_print = True, xml_declaration = True) 113 | 114 | -------------------------------------------------------------------------------- /src/cr/Song.java: -------------------------------------------------------------------------------- 1 | package cr; 2 | 3 | import java.io.IOException; 4 | import java.util.ArrayList; 5 | import java.util.Arrays; 6 | import java.util.Collections; 7 | import java.util.List; 8 | import com.statnlp.example.base.BaseInstance; 9 | 10 | import static cr.SongUtil.simplifyLabel; 11 | import static cr.SongUtil.normalizeEnharmonicChords; 12 | 13 | import cr.CRMain.Simplify; 14 | import nu.xom.Element; 15 | import nu.xom.Elements; 16 | 17 | public class Song extends BaseInstance, List> { 18 | 19 | private static final long serialVersionUID = -6338401873189645364L; 20 | 21 | public String title; // title of song 22 | public List outputTokenized; // tokenized output 23 | public List predictionTokenized; // tokenized predictions 24 | public double length; // total length of song in quarterLength 25 | 26 | public Song() { 27 | this(1, 1.0, new ArrayList(), new ArrayList(), "", 0.0); 28 | } 29 | 30 | public Song(int instanceId) { 31 | this(instanceId, 1.0, new ArrayList(), new ArrayList(), "", 0.0, new ArrayList()); 32 | } 33 | 34 | public Song(int instanceId, double weight) { 35 | this(instanceId, weight, (List) null, (List) null, (String) null, 0.0, (List) null); 36 | } 37 | 38 | public Song(int instanceId, double weight, List input, List output, String title, double length) { 39 | super(instanceId, weight); 40 | this.input = input; 41 | this.output = output; 42 | this.prediction = Collections.emptyList(); 43 | this.title = title; 44 | this.length = length; 45 | this.outputTokenized = null; 46 | this.predictionTokenized = null; 47 | } 48 | 49 | public Song(int instanceId, double weight, List input, List output, String title, double length, List outputTokenized) { 50 | super(instanceId, weight); 51 | this.input = input; 52 | this.output = output; 53 | this.prediction = Collections.emptyList(); 54 | this.title = title; 55 | this.length = length; 56 | this.outputTokenized = outputTokenized; 57 | this.predictionTokenized = null; 58 | } 59 | 60 | public Song duplicate(){ 61 | Song result = super.duplicate(); 62 | result.title = this.title; 63 | result.length = this.length; 64 | result.outputTokenized = this.outputTokenized == null ? null : new ArrayList(this.outputTokenized); 65 | result.predictionTokenized = this.predictionTokenized == null ? null : new ArrayList(this.predictionTokenized); 66 | return result; 67 | } 68 | 69 | public static Song parseXML(Element element, int instanceId, Simplify simplification, boolean normalizeEnharmonics) throws IOException { 70 | Song song = new Song(instanceId); 71 | String tag; 72 | 73 | // weight as 1.0? 74 | song.title = element.getFirstChildElement("title").getValue(); 75 | song.length = Double.parseDouble(element.getFirstChildElement("length").getValue()); 76 | // System.out.println("Title: " + song.title + ", Length: " + song.length); 77 | 78 | Elements events = element.getFirstChildElement("events").getChildElements(); 79 | for (int i = 0; i < events.size(); i++) { 80 | if(i == 0) { 81 | song.input.add(Event.parseXML(events.get(i), null)); 82 | } 83 | else { 84 | song.input.add(Event.parseXML(events.get(i), song.input.get(i - 1))); 85 | } 86 | tag = events.get(i).getFirstChildElement("tag").getValue().trim(); 87 | song.outputTokenized.add(WordLabel.get(normalizeEnharmonicChords(simplifyLabel(tag, simplification), normalizeEnharmonics))); 88 | } 89 | 90 | Elements segments = element.getFirstChildElement("segments").getChildElements(); 91 | for (int i = 0; i < segments.size(); i++) { 92 | song.output.add(Span.parseXML(segments.get(i), simplification, normalizeEnharmonics)); 93 | } 94 | 95 | return song; 96 | } 97 | 98 | public void setPredictionTokenized(List predictionTokenized){ 99 | this.predictionTokenized = predictionTokenized; 100 | if(predictionTokenized == null){ 101 | this.prediction = null; 102 | } else { 103 | this.prediction = SongUtil.labelsToSpans(predictionTokenized, input, length); 104 | } 105 | } 106 | 107 | public String toString() { 108 | String text = "Title: " + this.title + "\n"; 109 | text += "Length: " + this.length + "\n"; 110 | for (Event event : this.input) { 111 | int eventIndex = this.input.indexOf(event); 112 | text += event.toString(); 113 | text += "- Tag: " + this.outputTokenized.get(eventIndex).toString() + "\n"; 114 | } 115 | 116 | text += "Output:\n"; 117 | 118 | for (Span span : this.output) { 119 | text += span.toString(); 120 | } 121 | 122 | text += "Predictions:\n"; 123 | 124 | for (Span span : this.prediction) { 125 | text += span.toString(); 126 | } 127 | 128 | return text; 129 | } 130 | 131 | public List getInputTokenized(){ 132 | if(input == null){ 133 | throw new RuntimeException("Input not available."); 134 | } 135 | return input; 136 | } 137 | 138 | public List getOutputTokenized(){ 139 | if(outputTokenized == null){ 140 | throw new RuntimeException("Output not yet tokenized."); 141 | } 142 | return outputTokenized; 143 | } 144 | 145 | public List duplicateInput() { 146 | return input == null ? null : new ArrayList(input); 147 | } 148 | 149 | public List duplicateOutput() { 150 | return output == null ? null : new ArrayList(output); 151 | } 152 | 153 | public List duplicatePrediction() { 154 | return prediction == null ? null : new ArrayList(prediction); 155 | } 156 | 157 | @Override 158 | public int size() { 159 | return getInput().size(); 160 | } 161 | } -------------------------------------------------------------------------------- /src/cr/WordWeakSemiCRFNetworkCompiler.java: -------------------------------------------------------------------------------- 1 | package cr; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Arrays; 5 | import java.util.List; 6 | 7 | import com.statnlp.commons.types.Instance; 8 | import com.statnlp.hybridnetworks.LocalNetworkParam; 9 | import com.statnlp.hybridnetworks.Network; 10 | import com.statnlp.hybridnetworks.NetworkCompiler; 11 | import com.statnlp.hybridnetworks.NetworkException; 12 | import com.statnlp.hybridnetworks.NetworkIDMapper; 13 | 14 | /** 15 | * The class that defines the network/graph structure
16 | * This is based on StatNLP framework for CRF on acyclic graphs 17 | * @author Aldrian Obaja 18 | * 19 | */ 20 | public class WordWeakSemiCRFNetworkCompiler extends NetworkCompiler { 21 | 22 | private final static boolean DEBUG = true; 23 | 24 | private static final long serialVersionUID = 6585870230920484539L; 25 | public SpanLabel[] labels; 26 | public int maxLength = 20; 27 | public int maxSegmentLength = 1; 28 | public transient long[] allNodes; 29 | public transient int[][][] allChildren; 30 | 31 | public enum NodeType { 32 | LEAF, 33 | ROOT, 34 | BEGIN, 35 | END, 36 | } 37 | 38 | static { 39 | NetworkIDMapper.setCapacity(new int[]{200, 150, 150}); 40 | } 41 | 42 | public WordWeakSemiCRFNetworkCompiler(SpanLabel[] labels, int maxLength, int maxSegmentLength) { 43 | this.labels = labels; 44 | this.maxLength = Math.max(maxLength, this.maxLength); 45 | this.maxSegmentLength = Math.max(maxSegmentLength, this.maxSegmentLength); 46 | System.out.println(String.format("Max size: %s, Max segment length: %s", maxLength, maxSegmentLength)); 47 | System.out.println(Arrays.asList(labels)); 48 | buildUnlabeled(); 49 | } 50 | 51 | @Override 52 | public SongNetwork compile(int networkId, Instance inst, LocalNetworkParam param) { 53 | try{ 54 | if(inst.isLabeled()){ 55 | return compileLabeled(networkId, (Song)inst, param); 56 | } else { 57 | return compileUnlabeled(networkId, (Song)inst, param); 58 | } 59 | } catch (NetworkException e){ 60 | System.out.println(inst); 61 | throw e; 62 | } 63 | } 64 | 65 | private SpanLabel wordLabelToSpanLabel(WordLabel label){ 66 | String form = label.form; 67 | if(form.startsWith("O")) { 68 | return SpanLabel.get("O"); 69 | } else { 70 | return SpanLabel.get(form.substring(form.indexOf("-")+1)); 71 | } 72 | } 73 | 74 | private SongNetwork compileLabeled(int networkId, Song instance, LocalNetworkParam param){ 75 | SongNetwork network = new SongNetwork(networkId, instance, param); 76 | 77 | List output = instance.getOutputTokenized(); 78 | int size = output.size(); 79 | 80 | long leaf = toNode_leaf(); 81 | network.addNode(leaf); 82 | long prevNode = leaf; 83 | int prevLabelId = -1; 84 | int lastPos = 0; 85 | for(int pos=0; pos= maxSegmentLength){ 90 | if(prevLabelId != -1){ 91 | long end = toNode_end(pos-1, prevLabelId); 92 | network.addNode(end); 93 | network.addEdge(end, new long[]{prevNode}); 94 | prevNode = end; 95 | } 96 | long begin = toNode_begin(pos, labelId); 97 | network.addNode(begin); 98 | network.addEdge(begin, new long[]{prevNode}); 99 | prevNode = begin; 100 | prevLabelId = labelId; 101 | lastPos = pos; 102 | } 103 | } 104 | long root = toNode_root(size); 105 | network.addNode(root); 106 | long end = toNode_end(size-1, prevLabelId); 107 | network.addNode(end); 108 | network.addEdge(end, new long[]{prevNode}); 109 | network.addEdge(root, new long[]{end}); 110 | 111 | network.finalizeNetwork(); 112 | 113 | if(DEBUG){ 114 | System.out.println(network); 115 | SongNetwork unlabeled = compileUnlabeled(networkId, instance, param); 116 | System.out.println("Contained: "+unlabeled.contains(network)); 117 | } 118 | return network; 119 | } 120 | 121 | private SongNetwork compileUnlabeled(int networkId, Song instance, LocalNetworkParam param){ 122 | if(allNodes == null){ 123 | buildUnlabeled(); 124 | } 125 | int size = instance.getInputTokenized().size(); 126 | long root = toNode_root(size); 127 | int root_k = Arrays.binarySearch(allNodes, root); 128 | int numNodes = root_k + 1; 129 | return new SongNetwork(networkId, instance, allNodes, allChildren, param, numNodes); 130 | } 131 | 132 | private void buildUnlabeled(){ 133 | SongNetwork network = new SongNetwork(); 134 | 135 | long leaf = toNode_leaf(); 136 | network.addNode(leaf); 137 | List prevNodes = new ArrayList(); 138 | List currNodes = new ArrayList(); 139 | prevNodes.add(leaf); 140 | for(int pos=0; pos pos-maxSegmentLength && prevPos >= 0; prevPos--){ 152 | long prevBeginNode = toNode_begin(prevPos, labelId); 153 | network.addEdge(endNode, new long[]{prevBeginNode}); 154 | } 155 | 156 | for(long prevNode: prevNodes){ 157 | network.addEdge(beginNode, new long[]{prevNode}); 158 | } 159 | } 160 | long root = toNode_root(pos+1); 161 | network.addNode(root); 162 | for(long currNode: currNodes){ 163 | network.addEdge(root, new long[]{currNode}); 164 | } 165 | prevNodes = currNodes; 166 | currNodes = new ArrayList(); 167 | } 168 | network.finalizeNetwork(); 169 | allNodes = network.getAllNodes(); 170 | allChildren = network.getAllChildren(); 171 | } 172 | 173 | private long toNode_leaf(){ 174 | return toNode(0, 0, NodeType.LEAF); 175 | } 176 | 177 | private long toNode_root(int pos){ 178 | return toNode(pos+1, 0, NodeType.ROOT); 179 | } 180 | 181 | private long toNode_begin(int pos, int labelId){ 182 | return toNode(pos+1, labelId+1, NodeType.BEGIN); 183 | } 184 | 185 | private long toNode_end(int pos, int labelId){ 186 | return toNode(pos+1, labelId+1, NodeType.END); 187 | } 188 | 189 | private long toNode(int pos, int labelId, NodeType type){ 190 | return NetworkIDMapper.toHybridNodeID(new int[]{pos, type.ordinal(), labelId}); 191 | } 192 | 193 | @Override 194 | public Song decompile(Network net) { 195 | SongNetwork network = (SongNetwork)net; 196 | Song result = (Song)network.getInstance().duplicate(); 197 | List predictionTokenized = new ArrayList(); 198 | int node_k = network.countNodes()-1; 199 | while(node_k > 0){ 200 | int[] children_k = network.getMaxPath(node_k); 201 | int[] child_arr = network.getNodeArray(children_k[0]); 202 | int end = child_arr[0]-1; 203 | NodeType nodeType = NodeType.values()[child_arr[1]]; 204 | if(nodeType == NodeType.LEAF){ 205 | break; 206 | } else { 207 | assert nodeType == NodeType.END; 208 | } 209 | int labelId = child_arr[2]-1; 210 | children_k = network.getMaxPath(children_k[0]); 211 | child_arr = network.getNodeArray(children_k[0]); 212 | int start = child_arr[0]-1; 213 | for(int pos=end; pos>=start; pos--){ 214 | WordLabel wordLabel; 215 | String form = SpanLabel.get(labelId).form; 216 | if(pos > start){ 217 | wordLabel = WordLabel.get("I-"+form); 218 | } else { 219 | wordLabel = WordLabel.get("B-"+form); 220 | } 221 | predictionTokenized.add(0, wordLabel); 222 | } 223 | node_k = children_k[0]; 224 | } 225 | result.setPredictionTokenized(predictionTokenized); 226 | return result; 227 | } 228 | 229 | } 230 | 231 | -------------------------------------------------------------------------------- /src/cr/SongEvaluator.java: -------------------------------------------------------------------------------- 1 | package cr; 2 | 3 | import static cr.SongUtil.print; 4 | 5 | import java.io.PrintStream; 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | import java.util.ListIterator; 9 | 10 | import com.statnlp.commons.types.Instance; 11 | 12 | 13 | 14 | 15 | public class SongEvaluator { 16 | private static class Statistics { 17 | public int correct = 0; 18 | public int totalPred = 0; 19 | public int totalGold = 0; 20 | 21 | public void add(Statistics s){ 22 | this.correct += s.correct; 23 | this.totalPred += s.totalPred; 24 | this.totalGold += s.totalGold; 25 | } 26 | 27 | public double calculatePrecision(){ 28 | if(totalPred == 0){ 29 | return 0; 30 | } 31 | return 1.0*correct/totalPred; 32 | } 33 | 34 | public double calculateRecall(){ 35 | if(totalGold == 0){ 36 | return 0; 37 | } 38 | return 1.0*correct/totalGold; 39 | } 40 | 41 | public double calculateF1(){ 42 | double precision = calculatePrecision(); 43 | double recall = calculateRecall(); 44 | double f1 = precision*recall; 45 | if(f1 == 0){ 46 | return 0; 47 | } 48 | f1 = 2*f1/(precision+recall); 49 | return f1; 50 | } 51 | 52 | public void printScore(PrintStream... outstreams){ 53 | double precision = calculatePrecision(); 54 | double recall = calculateRecall(); 55 | double f1 = calculateF1(); 56 | print(String.format("(Segment-Based) Correct: %1$d, Predicted: %2$d, Gold: %3$d ", correct, totalPred, totalGold), true, outstreams); 57 | print(String.format("(Segment-Based) Overall P: %#5.2f%%, R: %#5.2f%%, F: %#5.2f%%", 100*precision, 100*recall, 100*f1), true, outstreams); 58 | } 59 | 60 | public void printEventScore(PrintStream... outstreams) { 61 | double accuracy = calculateRecall(); 62 | print(String.format("(Event-Based) Correct: %1$d, Predicted: %2$d, Gold: %3$d ", correct, totalPred, totalGold), true, outstreams); 63 | print(String.format("(Event-Based) Overall A: %#5.2f%%", 100*accuracy), true, outstreams); 64 | } 65 | } 66 | 67 | public static void evaluate(Instance[] predictions, PrintStream outstream, int printLimit){ 68 | int count = 0; 69 | PrintStream[] outstreams = new PrintStream[]{outstream, System.out}; 70 | Statistics finalSpanResult = new Statistics(); 71 | Statistics finalEventResult = new Statistics(); 72 | for(Instance inst: predictions){ 73 | if(count >= printLimit){ 74 | outstreams = new PrintStream[]{outstream}; 75 | } 76 | Song instance = (Song)inst; 77 | print("Title:", true, outstreams); 78 | print(instance.title.toString(), true, outstreams); 79 | print("Input:", true, outstreams); 80 | print(instance.input.toString(), true, outstreams); 81 | print("Gold:", true, outstreams); 82 | print(instance.output.toString(), true, outstreams); 83 | print("Prediction:", true, outstreams); 84 | print(instance.prediction.toString(), true, outstreams); 85 | Statistics[] spanScores = getSpanScore(new Instance[]{instance}); 86 | Statistics[] eventScores = getEventScore(new Instance[]{instance}); 87 | Statistics spanOverall = sum(spanScores); 88 | Statistics eventOverall = sum(eventScores); 89 | finalSpanResult.add(spanOverall); 90 | finalEventResult.add(eventOverall); 91 | spanOverall.printScore(outstreams); 92 | eventOverall.printEventScore(outstreams); 93 | print("", true, outstreams); 94 | // printDetailedScore(spanScores, outstreams); 95 | print("", true, outstreams); 96 | count += 1; 97 | } 98 | if(printLimit > 0){ 99 | print("", true, outstream, System.out); 100 | } else { 101 | print("", true, outstreams); 102 | } 103 | outstreams = new PrintStream[]{outstream, System.out}; 104 | print("### Overall score ###", true, outstream, System.out); 105 | finalSpanResult.printScore(outstreams); 106 | finalEventResult.printEventScore(outstreams); 107 | print("", true, outstream, System.out); 108 | // Statistics[] scores = getSpanScore(predictions); 109 | // printDetailedScore(scores, outstream, System.out); 110 | } 111 | 112 | private static Statistics sum(Statistics[] scores){ 113 | Statistics result = new Statistics(); 114 | for(Statistics score: scores){ 115 | result.add(score); 116 | } 117 | return result; 118 | } 119 | 120 | private static Statistics[] getSpanScore(Instance[] instances) { 121 | int size = SpanLabel.LABELS.size(); 122 | Statistics[] result = createStatistics(size); 123 | for(Instance inst: instances) { 124 | Song instance = (Song)inst; 125 | List predicted; 126 | List actual; 127 | predicted = duplicate(instance.getPrediction()); 128 | actual = duplicate(instance.getOutput()); 129 | for(Span span : actual) { 130 | if(predicted.contains(span)) { 131 | predicted.remove(span); 132 | SpanLabel label = span.label; 133 | result[label.id].correct += 1; 134 | result[label.id].totalPred += 1; 135 | } 136 | result[span.label.id].totalGold += 1; 137 | } 138 | for(Span span: predicted){ 139 | result[span.label.id].totalPred += 1; 140 | } 141 | } 142 | return result; 143 | } 144 | 145 | private static Statistics[] getEventScore(Instance[] instances) { 146 | int size = SpanLabel.LABELS.size(); 147 | Statistics[] result = createStatistics(size); 148 | for(Instance inst: instances) { 149 | Song instance = (Song)inst; 150 | List predicted; 151 | List actual; 152 | predicted = duplicate(instance.getPrediction()); 153 | actual = duplicate(instance.getOutput()); 154 | ListIterator it_act = actual.listIterator(); 155 | ListIterator it_pred = predicted.listIterator(); 156 | Span span_act = new Span(); 157 | Span span_pred = new Span(); 158 | Event e_act = new Event(); 159 | Event e_pred = new Event(); 160 | int numPredEvents = span_pred.stop - span_pred.start; 161 | int ip = 0; 162 | while(it_act.hasNext()) { 163 | span_act = it_act.next(); 164 | int numActualEvents = span_act.stop - span_act.start; 165 | for(int i = 0; i < numActualEvents; i++) { 166 | System.out.println("Event Num: " + (span_act.start + i) + ", Measure Num: " + instance.input.get(span_act.start).measureNumber); 167 | if(ip < numPredEvents) { 168 | ip++; 169 | } 170 | else { 171 | span_pred = it_pred.next(); 172 | ip = 0; 173 | numPredEvents = span_pred.stop - span_pred.start; 174 | ip++; 175 | } 176 | 177 | if(span_pred.label.id == span_act.label.id) { 178 | result[span_act.label.id].correct += 1; 179 | } 180 | System.out.println("Actual: " + span_act.label + " Predicted: " + span_pred.label); 181 | result[span_act.label.id].totalGold += 1; 182 | result[span_pred.label.id].totalPred += 1; 183 | } 184 | } 185 | } 186 | return result; 187 | } 188 | 189 | private static Statistics[] createStatistics(int size){ 190 | Statistics[] result = new Statistics[size]; 191 | for(int i=0; i duplicate(List list){ 210 | List result = new ArrayList(); 211 | for(Span span: list){ 212 | result.add(span); 213 | } 214 | return result; 215 | } 216 | } 217 | -------------------------------------------------------------------------------- /src/cr/SongUtil.java: -------------------------------------------------------------------------------- 1 | package cr; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.File; 5 | import java.io.FileInputStream; 6 | import java.io.FileNotFoundException; 7 | import java.io.IOException; 8 | import java.io.InputStreamReader; 9 | import java.io.PrintStream; 10 | import java.io.UnsupportedEncodingException; 11 | import java.lang.reflect.Method; 12 | import java.util.ArrayList; 13 | import java.util.Arrays; 14 | import java.util.Collections; 15 | import java.util.HashMap; 16 | import java.util.List; 17 | import java.util.regex.Matcher; 18 | import java.util.regex.Pattern; 19 | 20 | import com.statnlp.hybridnetworks.GlobalNetworkParam; 21 | 22 | import cr.CRMain.Simplify; 23 | import nu.xom.Builder; 24 | import nu.xom.Document; 25 | import nu.xom.Element; 26 | import nu.xom.Elements; 27 | import nu.xom.ParsingException; 28 | 29 | public class SongUtil { 30 | public static List enharmonicIDToMajChord = new ArrayList<>(Arrays.asList("A", "Bb", "B", "C", "Db", "D", "Eb", "E", "F", "Gb", "G", "Ab")); 31 | public static List enharmonicIDToMinOrDimChord = new ArrayList<>(Arrays.asList("A", "Bb", "B", "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#")); 32 | public static List enharmonicIDToAug6Chord = new ArrayList<>(Arrays.asList("A", "Bb", "B", "C", "Db", "D", "Eb", "E", "F", "Gb", "G", "Ab")); 33 | public static List enharmonicIDToSus4 = new ArrayList<>(Arrays.asList("A", "Bb", "B", "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#")); 34 | public static List enharmonicIDToSus2 = new ArrayList<>(Arrays.asList("A", "Bb", "B", "C", "Db", "D", "Eb", "E", "F", "Gb", "G", "Ab")); 35 | public static HashMap enharmonicNotesToID = new HashMap(); 36 | static { 37 | enharmonicNotesToID.put("A", 0); 38 | enharmonicNotesToID.put("Bbb", 0); 39 | enharmonicNotesToID.put("A#", 1); 40 | enharmonicNotesToID.put("Bb", 1); 41 | enharmonicNotesToID.put("B", 2); 42 | enharmonicNotesToID.put("Cb", 2); 43 | enharmonicNotesToID.put("B#", 3); 44 | enharmonicNotesToID.put("C", 3); 45 | enharmonicNotesToID.put("C#", 4); 46 | enharmonicNotesToID.put("Db", 4); 47 | enharmonicNotesToID.put("C##", 5); 48 | enharmonicNotesToID.put("D", 5); 49 | enharmonicNotesToID.put("Ebb", 5); 50 | enharmonicNotesToID.put("D#", 6); 51 | enharmonicNotesToID.put("Eb", 6); 52 | enharmonicNotesToID.put("E", 7); 53 | enharmonicNotesToID.put("Fb", 7); 54 | enharmonicNotesToID.put("E#", 8); 55 | enharmonicNotesToID.put("F", 8); 56 | enharmonicNotesToID.put("F#", 9); 57 | enharmonicNotesToID.put("Gb", 9); 58 | enharmonicNotesToID.put("F##", 10); 59 | enharmonicNotesToID.put("G", 10); 60 | enharmonicNotesToID.put("Abb", 10); 61 | enharmonicNotesToID.put("G#", 11); 62 | enharmonicNotesToID.put("Ab", 11); 63 | } 64 | 65 | public static void print(String message, boolean printEndline, PrintStream... outstream){ 66 | if(outstream.length == 0){ 67 | outstream = new PrintStream[]{System.out}; 68 | } 69 | for(PrintStream stream: outstream){ 70 | if(stream != null){ 71 | if(printEndline){ 72 | stream.println(message); 73 | } else { 74 | stream.print(message); 75 | } 76 | } 77 | } 78 | } 79 | 80 | public static void addAllLabels(String filename) throws IOException { 81 | InputStreamReader isr = new InputStreamReader(new FileInputStream(filename), "UTF-8"); 82 | BufferedReader br = new BufferedReader(isr); 83 | 84 | while(br.ready()) { 85 | String chordLabel = br.readLine().trim(); 86 | SpanLabel.get(chordLabel); 87 | WordLabel.get("B-" + chordLabel); 88 | WordLabel.get("I-" + chordLabel); 89 | } 90 | 91 | br.close(); 92 | 93 | return; 94 | } 95 | 96 | public static Song[] readData(String filename, boolean setLabeled, Simplify simplification, boolean normalizeEnharmonics) throws IOException { 97 | ArrayList songFiles = new ArrayList(); 98 | ArrayList result = new ArrayList(); 99 | 100 | InputStreamReader isr = new InputStreamReader(new FileInputStream(filename), "UTF-8"); 101 | BufferedReader br = new BufferedReader(isr); 102 | 103 | // read in names of song files 104 | while(br.ready()) { 105 | String songFilename = br.readLine(); 106 | songFiles.add(songFilename); 107 | } 108 | 109 | br.close(); 110 | 111 | File directory = new File("./"); 112 | System.out.println(directory.getAbsolutePath()); 113 | 114 | try { 115 | Builder parser = new Builder(); 116 | 117 | // begin instance id at 1 118 | int instanceId = 1; 119 | 120 | for(int i = 0; i < songFiles.size(); i++) { 121 | Document doc = parser.build(songFiles.get(i)); 122 | 123 | // for one song---fix to iterate over multiple songs 124 | Element root = doc.getRootElement(); 125 | 126 | // read in a song instance 127 | Song song = Song.parseXML(root, instanceId, simplification, normalizeEnharmonics); 128 | 129 | // if true, guarantees that this song instance will be considered 130 | // during training (see Instance.java) 131 | if(setLabeled) { 132 | song.setLabeled(); 133 | } 134 | else { 135 | song.setUnlabeled(); 136 | } 137 | 138 | // predictions? 139 | 140 | // output song info 141 | System.out.println(song.title); 142 | 143 | // add song instance to result 144 | result.add(song); 145 | instanceId += 1; 146 | } 147 | } catch (ParsingException e) { 148 | System.err.println("Cafe con Leche is malformed today. How embarrassing!"); 149 | } catch (IOException ex) { 150 | System.err.println("Could not connect to Cafe con Leche. The site may be down."); 151 | } 152 | 153 | return result.toArray(new Song[result.size()]); 154 | } 155 | 156 | public static String simplifyLabel(String label, Simplify simplification) { 157 | switch(simplification) { 158 | case MODES: 159 | String pattern = "([BI]-)?[A-G][#b]?:(maj|min|dim|aug)"; // only match chord modes 160 | Pattern r = Pattern.compile(pattern); // create pattern object 161 | Matcher m = r.matcher(label); // simplify label 162 | if(m.find()) { 163 | return m.group(0); 164 | } 165 | else { 166 | return label; 167 | } 168 | case GENERIC_ADDED_NOTES: 169 | pattern = "([BI]-)?[A-G][#b]?:(maj|min|dim|aug|ger|it|fr)(4|6|7)?"; // match added notes 170 | r = Pattern.compile(pattern); // create pattern object 171 | m = r.matcher(label); // simplify label 172 | if(m.find()) { 173 | return m.group(0); 174 | } 175 | else { 176 | return label; 177 | } 178 | case GENERIC_ADDED_NOTES_PLUS_SUS_AND_POW: 179 | pattern = "([BI]-)?[A-G][#b]?:(maj|7sus|dim|min|sus)(2|4|6|7)?(\\(\\*3\\))?"; // match added notes 180 | r = Pattern.compile(pattern); // create pattern object 181 | m = r.matcher(label); // simplify label 182 | if(m.find()) { 183 | return m.group(0); 184 | } 185 | else { 186 | return label; 187 | } 188 | case ADDED_NOTES: 189 | pattern = "([BI]-)?[A-G][#b]?:(7|minmaj|maj|min|dim|hdim|aug)(4|6|7)?"; // match added notes and 190 | // chord modes 191 | r = Pattern.compile(pattern); // create pattern object 192 | m = r.matcher(label); // simplify label 193 | if(m.find()) { 194 | return m.group(0); 195 | } 196 | else { 197 | return label; 198 | } 199 | case NONE: 200 | return label; 201 | default: 202 | return label; 203 | } 204 | } 205 | 206 | public static String getMode(String parentLabel) { 207 | String pattern = "(7sus4|sus4|sus2|maj\\(\\*3\\)|maj|min|dim|aug|ger|it|fr)"; 208 | Pattern r = Pattern.compile(pattern); 209 | Matcher m = r.matcher(parentLabel); 210 | String mode = m.find() ? m.group(0) : ""; 211 | // System.out.println("Mode: " + mode); 212 | return mode; 213 | } 214 | 215 | public static String getRoot(String parentLabel) { 216 | // get root note 217 | String pattern = "[A-G][#b]?"; 218 | Pattern r = Pattern.compile(pattern); 219 | Matcher m = r.matcher(parentLabel); 220 | String root = m.find() ? m.group(0) : ""; 221 | 222 | return root; 223 | } 224 | 225 | public static String normalizeEnharmonicChords(String label, boolean normalizeEnharmonics) throws IOException { 226 | if(!normalizeEnharmonics) { 227 | return label; 228 | } 229 | 230 | String prefix = new String(); 231 | String root = new String(); 232 | String suffix = new String(); 233 | String pattern = "([BI]-)?(.*)(:(7sus|maj|min|dim|aug|ger|fr|it|sus)(2|4|6|7)?(\\(\\*3\\))?)"; 234 | Pattern r = Pattern.compile(pattern); 235 | Matcher m = r.matcher(label); 236 | 237 | if(m.find()) { 238 | prefix = m.group(1); 239 | root = m.group(2); 240 | suffix = m.group(3); 241 | } 242 | String mode = getMode(label); 243 | String correctRoot = new String(); 244 | int enharmonicRootID = root != "" ? enharmonicNotesToID.get(root) : 0; 245 | 246 | switch(mode) { 247 | case "maj": 248 | case "sus2": 249 | case "maj(*3)": 250 | correctRoot = enharmonicIDToMajChord.get(enharmonicRootID); 251 | break; 252 | case "min": 253 | case "dim": 254 | case "sus4": 255 | case "7sus4": 256 | correctRoot = enharmonicIDToMinOrDimChord.get(enharmonicRootID); 257 | break; 258 | case "ger": 259 | case "it": 260 | case "fr": 261 | correctRoot = enharmonicIDToAug6Chord.get(enharmonicRootID); 262 | break; 263 | default: 264 | correctRoot = enharmonicIDToMajChord.get(enharmonicRootID); 265 | break; 266 | } 267 | 268 | // System.out.println(""); 269 | // System.out.println("Original label: " + label); 270 | // System.out.println("enharmonicRootID: " + enharmonicRootID + " original root: " + root + " correct root: " + correctRoot); 271 | 272 | if(!root.equals(correctRoot)) { 273 | // System.out.println("Original label: " + label); 274 | if(prefix != null) { 275 | label = prefix + correctRoot + suffix; 276 | } 277 | else { 278 | label = correctRoot + suffix; 279 | } 280 | // System.out.println("New label: " + label); 281 | } 282 | 283 | return label; 284 | } 285 | 286 | public static List labelsToSpans(List labels, List input, double length) { 287 | List result = new ArrayList(); 288 | double onset = 0.0; 289 | double offset = 0.0; 290 | int startIndx = 0; 291 | int stopIndx = 0; 292 | SpanLabel label = null; 293 | 294 | for(int i = 0; i <= labels.size(); i++) { 295 | if (i == labels.size()) { 296 | stopIndx = i; 297 | offset = length; 298 | result.add(new Span(onset, offset, startIndx, stopIndx, label)); 299 | } 300 | else { 301 | String form = labels.get(i).form; 302 | Event curEvent = input.get(i); 303 | if(form.startsWith("B")) { 304 | if(i != 0) { 305 | offset = curEvent.onset; 306 | stopIndx = i; 307 | result.add(new Span(onset, offset, startIndx, stopIndx, label)); 308 | } 309 | onset = curEvent.onset; 310 | startIndx = i; 311 | label = SpanLabel.get(form.substring(form.indexOf("-")+1)); 312 | } 313 | } 314 | } 315 | return result; 316 | } 317 | 318 | 319 | public static void setupFeatures(Class featureTypeClass, String[] features){ 320 | try { 321 | Method valueOf = featureTypeClass.getMethod("valueOf", String.class); 322 | IFeatureType[] featureTypes = (IFeatureType[])featureTypeClass.getMethod("values").invoke(null); 323 | if(features != null && features.length > 0){ 324 | for(IFeatureType feature: featureTypes){ 325 | feature.disable(); 326 | } 327 | for(String feature: features){ 328 | ((IFeatureType)valueOf.invoke(null, feature.toUpperCase())).enable(); 329 | } 330 | } 331 | } catch (Exception e) { 332 | throw new RuntimeException(e); 333 | } 334 | } 335 | 336 | public static int[] listToArray(List list){ 337 | for(int i = list.size() - 1; i >= 0; i--){ 338 | if(list.get(i) == -1){ 339 | list.remove(i); 340 | } 341 | } 342 | int[] result = new int[list.size()]; 343 | for(int i = 0; i < list.size(); i++){ 344 | result[i] = list.get(i); 345 | } 346 | return result; 347 | } 348 | 349 | 350 | } -------------------------------------------------------------------------------- /src/cr/CRMain.java: -------------------------------------------------------------------------------- 1 | package cr; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Arrays; 5 | import java.util.Calendar; 6 | import java.util.Collections; 7 | import java.util.Comparator; 8 | import java.util.HashMap; 9 | import java.util.List; 10 | import java.util.Set; 11 | import java.util.Vector; 12 | 13 | import static cr.SongUtil.print; 14 | 15 | import java.io.BufferedOutputStream; 16 | import java.io.File; 17 | import java.io.FileInputStream; 18 | import java.io.FileOutputStream; 19 | import java.io.IOException; 20 | import java.io.ObjectInputStream; 21 | import java.io.ObjectOutputStream; 22 | import java.io.PrintStream; 23 | import java.lang.reflect.Field; 24 | 25 | import com.statnlp.commons.types.Instance; 26 | import com.statnlp.hybridnetworks.DiscriminativeNetworkModel; 27 | import com.statnlp.hybridnetworks.FeatureArray; 28 | import com.statnlp.hybridnetworks.GenerativeNetworkModel; 29 | import com.statnlp.hybridnetworks.NetworkConfig; 30 | 31 | import com.statnlp.hybridnetworks.FeatureManager; 32 | import com.statnlp.hybridnetworks.GlobalNetworkParam; 33 | import com.statnlp.hybridnetworks.LocalNetworkParam; 34 | import com.statnlp.hybridnetworks.Network; 35 | import com.statnlp.hybridnetworks.NetworkCompiler; 36 | import com.statnlp.hybridnetworks.NetworkModel; 37 | 38 | 39 | public class CRMain { 40 | 41 | public enum Simplify { 42 | MODES, // simplify chord labels to major/minor/diminished/augmented triads 43 | GENERIC_ADDED_NOTES, // include added notes in chord labels (4ths, 6ths, 7ths) + aug6 chords 44 | GENERIC_ADDED_NOTES_PLUS_SUS_AND_POW, // include maj/min/dim modes, plus added notes (4ths, 6ths, 45 | // 7ths), plus sus2, sus4, maj(*3) (power chords), and 7sus4 46 | // (mostly in place for Rock dataset) 47 | ADDED_NOTES, // include added notes in chord labels (4ths, 6ths, 7ths) + additional 48 | // modes for 7ths (dom [i.e. 7], min-maj, hdim) 49 | NONE // include everything in chord label (modes, added notes, inversions, 50 | // missing notes) 51 | ; 52 | 53 | public static String helpString() { 54 | return "Please specify the simplification from the following choices:\n" 55 | + "\t-MODES\n" 56 | + "\t-NONE\n"; 57 | } 58 | } 59 | 60 | public static Simplify simplification = Simplify.valueOf("NONE"); // simplification of chord labels used for training/testing 61 | // (see Simplify enum defined on line 19) 62 | 63 | public static void main(String[] args) throws IllegalArgumentException, InterruptedException, IOException, ClassNotFoundException, IllegalAccessException, NoSuchFieldException, SecurityException { 64 | // System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream("output.txt")))); // redirect System.out output to "outOutput.txt" 65 | String dataPath = null; // prefix for training/testing files 66 | String foldsPath = null; 67 | String currentDirectoryPath = null; 68 | String trainFile = ""; 69 | String testFile = ""; 70 | String featureCountFile = ""; 71 | String trainFilePath = null; // filename for training data 72 | String testFilePath = null; // filename for testing data 73 | String result_filename = null; // filename to store results 74 | String timestamp = Calendar.getInstance().getTime().toString(); 75 | String modelFile = ""; 76 | String modelPath = null; 77 | String featureCountPath = null; 78 | String useAllChordsPath = "all_chords.txt"; 79 | String logFile = ""; 80 | String logPath = null; 81 | Song[] trainInstances = null; // training data instances 82 | Song[] testInstances = null; // testing data instances 83 | boolean findMaxSegmentLength = true; // find maximum segment length? 84 | boolean writeModelText = false; 85 | boolean countFeatures = false; 86 | boolean normalizeEnharmonics = false; 87 | boolean useAllChords = false; 88 | boolean serializeModel = true; 89 | int maxLength = 955; // maximum song length 90 | int maxSegmentLength = 20; // maximum segment length 91 | int numExamplesPrinted = 20; 92 | int totalNumEvents = 0; 93 | int totalNumSegments = 0; 94 | int foldNum = 0; 95 | NetworkConfig._numThreads = 4; // number of threads used 96 | NetworkConfig.L2_REGULARIZATION_CONSTANT = 0.125; 97 | NetworkConfig.objtol = 1e-6; 98 | String weightInit = "random"; 99 | int maxNumIterations = 5000; // maximum number of iterations for training 100 | String[] features = new String[0]; // list of features to be used 101 | NetworkCompiler compiler = null; 102 | NetworkModel model = null; 103 | 104 | // read in command line arguments 105 | int argIndex = 0; // index of command line argument within args 106 | String[] moreArgs = new String[0]; // additional command line arguments for FeatureManager, etc. 107 | while(argIndex < args.length) { 108 | String arg = args[argIndex]; 109 | if(arg.charAt(0) == '-') { 110 | switch(arg.substring(1)) { 111 | case "dataPath": 112 | dataPath = args[argIndex + 1]; 113 | argIndex += 2; 114 | break; 115 | case "foldsPath": 116 | foldsPath = args[argIndex + 1]; 117 | argIndex += 2; 118 | break; 119 | case "currentDirectoryPath": 120 | currentDirectoryPath = args[argIndex + 1]; 121 | argIndex += 2; 122 | break; 123 | case "trainFile": 124 | trainFile = args[argIndex + 1]; 125 | argIndex += 2; 126 | break; 127 | case "testFile": 128 | testFile = args[argIndex + 1]; 129 | argIndex += 2; 130 | break; 131 | case "foldNum": 132 | foldNum = Integer.parseInt(args[argIndex + 1]); 133 | argIndex += 2; 134 | break; 135 | case "features": 136 | features = args[argIndex + 1].split(","); 137 | argIndex += 2; 138 | break; 139 | case "resultPath": 140 | result_filename = args[argIndex + 1]; 141 | argIndex += 2; 142 | break; 143 | case "logPath": 144 | logPath = args[argIndex + 1]; 145 | argIndex += 2; 146 | break; 147 | // case "featureCountPath": 148 | // featureCountPath = args[argIndex + 1]; 149 | // argIndex += 2; 150 | // break; 151 | case "useAllChordsPath": 152 | useAllChordsPath = args[argIndex + 1]; 153 | argIndex += 2; 154 | break; 155 | case "simplify": 156 | try { 157 | simplification = Simplify.valueOf(args[argIndex+1].toUpperCase()); 158 | } catch (IllegalArgumentException e) { 159 | throw new IllegalArgumentException("Unrecognized simplification: " + args[argIndex + 1] + "\n" + Simplify.helpString()); 160 | } 161 | argIndex += 2; 162 | break; 163 | case "writeModelText": 164 | writeModelText = true; 165 | argIndex += 1; 166 | break; 167 | case "nThreads": 168 | NetworkConfig._numThreads = Integer.parseInt(args[argIndex+1]); 169 | argIndex += 2; 170 | break; 171 | case "modelFile": 172 | modelFile = args[argIndex + 1]; 173 | argIndex += 2; 174 | break; 175 | case "l2": 176 | NetworkConfig.L2_REGULARIZATION_CONSTANT = Double.parseDouble(args[argIndex+1]); 177 | argIndex += 2; 178 | break; 179 | case "weightInit": 180 | weightInit = args[argIndex+1]; 181 | if(weightInit.equals("random")){ 182 | NetworkConfig.RANDOM_INIT_WEIGHT = true; 183 | } else { 184 | NetworkConfig.RANDOM_INIT_WEIGHT = false; 185 | NetworkConfig.FEATURE_INIT_WEIGHT = Double.parseDouble(weightInit); 186 | } 187 | argIndex += 2; 188 | break; 189 | case "numExamplesPrinted": 190 | numExamplesPrinted = Integer.parseInt(args[argIndex+1]); 191 | argIndex += 2; 192 | break; 193 | case "objtol": 194 | NetworkConfig.objtol = Double.parseDouble(args[argIndex+1]); 195 | argIndex += 2; 196 | break; 197 | case "countFeatures": 198 | countFeatures = true; 199 | argIndex += 1; 200 | break; 201 | case "normalizeEnharmonics": 202 | normalizeEnharmonics = true; 203 | argIndex += 1; 204 | break; 205 | case "useAllChords": 206 | useAllChords = true; 207 | argIndex += 1; 208 | break; 209 | case "-": 210 | moreArgs = Arrays.copyOfRange(args, argIndex+1, args.length); 211 | argIndex = args.length; 212 | break; 213 | default: 214 | throw new IllegalArgumentException("Unrecognized argument: " + arg); 215 | } 216 | } else { 217 | throw new IllegalArgumentException("Error while parsing: " + arg); 218 | } 219 | } 220 | 221 | 222 | 223 | if(trainFile.isEmpty()) { 224 | trainFile = "train" + foldNum + ".txt"; 225 | } 226 | 227 | if(testFile.isEmpty()) { 228 | testFile = "test" + foldNum + ".txt"; 229 | } 230 | 231 | if(featureCountFile.isEmpty()) { 232 | featureCountFile = "feature_count" + foldNum + ".txt"; 233 | } 234 | 235 | if(modelFile.isEmpty()) { 236 | modelFile = timestamp + " Fold " + foldNum + ".model"; 237 | } 238 | 239 | if(logFile.isEmpty()) { 240 | logFile = timestamp + " Fold " + foldNum + ".log"; 241 | } 242 | 243 | 244 | // create train, test, feature count, model, and log paths 245 | trainFilePath = foldsPath + trainFile; 246 | System.out.println(trainFilePath); 247 | testFilePath = foldsPath + testFile; 248 | System.out.println(testFilePath); 249 | featureCountPath = featureCountFile; 250 | modelPath = modelFile; 251 | logPath = logFile; 252 | 253 | PrintStream outstream = null; 254 | if(logPath != null) { 255 | outstream = new PrintStream(logPath, "UTF-8"); 256 | } 257 | 258 | WordWeakSemiCRFFeatureManager fm = null; 259 | if(trainFilePath != null) { 260 | List trainInstancesList; // list of songs used as training data 261 | 262 | // read in songs 263 | trainInstancesList = Arrays.asList(SongUtil.readData(trainFilePath, true, simplification, normalizeEnharmonics)); 264 | 265 | // use all chord labels option 266 | if(useAllChords) { 267 | SongUtil.addAllLabels(useAllChordsPath); 268 | } 269 | 270 | // labels 271 | SpanLabel[] labels = SpanLabel.LABELS.values().toArray(new SpanLabel[SpanLabel.LABELS.size()]); 272 | 273 | String max_song_length = ""; 274 | int max_song_onset = 0; 275 | for(int instanceIdx = trainInstancesList.size()-1; instanceIdx >= 0; instanceIdx--) { 276 | Song instance = trainInstancesList.get(instanceIdx); 277 | 278 | // find max song length 279 | int size = instance.size(); 280 | maxLength = Math.max(maxLength, size); 281 | totalNumEvents += size; 282 | totalNumSegments += instance.output.size(); 283 | 284 | // find max segment length 285 | if(findMaxSegmentLength) { 286 | List output = instance.output; 287 | for(Span span: output) { 288 | double maxSegmentLengthTmp = maxSegmentLength; 289 | maxSegmentLength = Math.max(maxSegmentLength, span.stop - span.start); 290 | if(maxSegmentLengthTmp < maxSegmentLength) { 291 | max_song_length = instance.title; 292 | max_song_onset = span.start; 293 | } 294 | } 295 | } 296 | } 297 | System.out.println("Max song length: " + maxLength + " Max segment length: " + maxSegmentLength + " Title: " + max_song_length + " Onset: " + max_song_onset); 298 | System.out.println("Total num events: " + totalNumEvents + ", Total num segments: " + totalNumSegments); 299 | 300 | trainInstances = trainInstancesList.toArray(new Song[trainInstancesList.size()]); 301 | 302 | NetworkConfig.TRAIN_MODE_IS_GENERATIVE = false; 303 | NetworkConfig._CACHE_FEATURES_DURING_TRAINING = true; 304 | 305 | int size = trainInstances.length; 306 | 307 | print("Read..."+size+" instances.", true, outstream, System.err); 308 | 309 | compiler = new WordWeakSemiCRFNetworkCompiler(labels, maxLength, maxSegmentLength); 310 | 311 | if(countFeatures) { 312 | fm = new WordWeakSemiCRFFeatureManager(new GlobalNetworkParam(), features, countFeatures, featureCountPath, moreArgs); 313 | List counts = new ArrayList(Collections.nCopies(10000, 0)); 314 | 315 | for(Instance trainInstance : trainInstances) { 316 | Network network = compiler.compile(-1, trainInstance, new LocalNetworkParam(-1, fm, -1)); 317 | for(int k = 0; k labelsUsed = new ArrayList(); 374 | 375 | labelsUsed = Arrays.asList(((WordWeakSemiCRFNetworkCompiler)compiler).labels); 376 | 377 | for(Object obj: labelsUsed){ 378 | modelTextWriter.println(obj); 379 | } 380 | GlobalNetworkParam paramG = fm.getParam_G(); 381 | modelTextWriter.println("Num features: "+paramG.countFeatures()); 382 | modelTextWriter.println("Features:"); 383 | HashMap>> featureIntMap = paramG.getFeatureIntMap(); 384 | for(String featureType: sorted(featureIntMap.keySet())){ 385 | modelTextWriter.println(featureType); 386 | HashMap> outputInputMap = featureIntMap.get(featureType); 387 | for(String output: sorted(outputInputMap.keySet())){ 388 | modelTextWriter.println("\t"+output); 389 | HashMap inputMap = outputInputMap.get(output); 390 | for(String input: sorted(inputMap.keySet())){ 391 | int featureId = inputMap.get(input); 392 | modelTextWriter.println("\t\t"+input+" "+featureId+" "+fm.getParam_G().getWeight(featureId)); 393 | } 394 | } 395 | } 396 | modelTextWriter.close(); 397 | } 398 | } 399 | } else { 400 | print("Reading object...", false, outstream, System.out); 401 | long startTime = System.currentTimeMillis(); 402 | ObjectInputStream ois = new ObjectInputStream(new FileInputStream(modelPath)); 403 | model = (NetworkModel)ois.readObject(); 404 | ois.close(); 405 | Field _fm = NetworkModel.class.getDeclaredField("_fm"); 406 | _fm.setAccessible(true); 407 | fm = (WordWeakSemiCRFFeatureManager)_fm.get(model); 408 | Field _compiler = NetworkModel.class.getDeclaredField("_compiler"); 409 | _compiler.setAccessible(true); 410 | compiler = (NetworkCompiler)_compiler.get(model); 411 | 412 | long endTime = System.currentTimeMillis(); 413 | print(String.format("Done in %.3fs", (endTime-startTime)/1000.0), true, outstream, System.out); 414 | } 415 | 416 | if(testFilePath != null && !countFeatures) { 417 | testInstances = SongUtil.readData(testFilePath, false, simplification, normalizeEnharmonics); 418 | 419 | Instance[] predictions = null; 420 | 421 | predictions = model.decode(testInstances); 422 | 423 | List predictionsList = new ArrayList(); 424 | for(Instance instance: predictions){ 425 | predictionsList.add((Song)instance); 426 | } 427 | 428 | predictionsList.sort(Comparator.comparing(Instance::getInstanceId)); 429 | if(result_filename == null){ 430 | result_filename = testFilePath+".result"; 431 | } 432 | 433 | PrintStream result = new PrintStream(result_filename); 434 | for(Song instance: predictionsList){ 435 | result.println(instance.toString()); 436 | } 437 | 438 | result.close(); 439 | 440 | numExamplesPrinted = testInstances.length; 441 | SongEvaluator.evaluate(predictions, outstream, numExamplesPrinted); 442 | } 443 | } 444 | 445 | private static List sorted(Set coll){ 446 | List result = new ArrayList(coll); 447 | Collections.sort(result); 448 | return result; 449 | } 450 | } 451 | -------------------------------------------------------------------------------- /sample_output_files/Tue Jul 31 13:56:06 EDT 2018 Fold 1.model.txt: -------------------------------------------------------------------------------- 1 | Model path: Tue Jul 31 13:56:06 EDT 2018 Fold 1.model 2 | Train path: /home/razvan/bunescu/fold_gen/breve_folds/train1.txt 3 | Test path: /home/razvan/bunescu/fold_gen/breve_folds/test1.txt 4 | Max length: 955 5 | Max span: 20 6 | #Threads: 4 7 | L2 param: 0.125 8 | Weight init: random 9 | objtol: 1.0E-6 10 | Max iter: 5000 11 | Features: [] 12 | 13 | Labels: 14 | Bb:maj7 (id: 75) 15 | F:maj7 (id: 60) 16 | F:maj6 (id: 83) 17 | Bb:min6 (id: 73) 18 | F:maj4 (id: 63) 19 | F#:min (id: 29) 20 | F:min7 (id: 69) 21 | F:min6 (id: 84) 22 | E:maj4 (id: 44) 23 | C#:dim (id: 23) 24 | Eb:maj7 (id: 85) 25 | E:maj7 (id: 26) 26 | E:min7 (id: 42) 27 | Bb:min (id: 72) 28 | G:min (id: 4) 29 | E:min6 (id: 40) 30 | Bb:maj (id: 1) 31 | B:maj (id: 17) 32 | F:dim (id: 54) 33 | B:min (id: 15) 34 | G#:min (id: 82) 35 | D#:min (id: 86) 36 | Eb:maj (id: 8) 37 | G:maj (id: 18) 38 | D#:dim6 (id: 76) 39 | D#:dim7 (id: 47) 40 | F:dim7 (id: 33) 41 | C:dim6 (id: 78) 42 | A:maj (id: 24) 43 | C:dim7 (id: 74) 44 | A:min (id: 2) 45 | Gb:maj7 (id: 16) 46 | Db:maj7 (id: 51) 47 | E:dim (id: 70) 48 | Db:maj4 (id: 57) 49 | C#:min7 (id: 53) 50 | C:maj7 (id: 62) 51 | C:min6 (id: 9) 52 | Gb:maj4 (id: 25) 53 | C#:min (id: 43) 54 | C:min7 (id: 65) 55 | D:min (id: 12) 56 | E:maj (id: 22) 57 | D:dim7 (id: 32) 58 | C:maj4 (id: 61) 59 | Bb:dim (id: 34) 60 | C:maj6 (id: 50) 61 | G:dim (id: 36) 62 | B:maj4 (id: 81) 63 | C:maj (id: 5) 64 | F:maj (id: 0) 65 | F#:dim (id: 7) 66 | C:min (id: 11) 67 | B:min6 (id: 80) 68 | B:min7 (id: 30) 69 | G#:dim7 (id: 87) 70 | B:maj7 (id: 19) 71 | A:dim (id: 64) 72 | F#:dim7 (id: 88) 73 | B:dim7 (id: 58) 74 | F:min (id: 67) 75 | B:dim (id: 49) 76 | Db:maj (id: 27) 77 | F#:min7 (id: 41) 78 | A:min7 (id: 6) 79 | Ab:maj (id: 55) 80 | A:min6 (id: 20) 81 | C#:dim7 (id: 39) 82 | F#:min6 (id: 28) 83 | C#:dim6 (id: 35) 84 | G:min7 (id: 71) 85 | D:min6 (id: 77) 86 | A:min4 (id: 89) 87 | D:min7 (id: 3) 88 | E:min (id: 13) 89 | A:maj7 (id: 37) 90 | A:maj6 (id: 46) 91 | A:maj4 (id: 38) 92 | G:maj7 (id: 48) 93 | D:maj4 (id: 59) 94 | D:maj (id: 10) 95 | D:maj7 (id: 45) 96 | G#:dim (id: 56) 97 | G:min6 (id: 66) 98 | D:maj6 (id: 79) 99 | G:maj4 (id: 68) 100 | Gb:maj (id: 14) 101 | D#:dim (id: 21) 102 | Bb:dim7 (id: 31) 103 | G:maj6 (id: 52) 104 | Num features: 423 105 | Features: 106 | ACCENTED_PURITY 107 | 108 | 10 309 1.3466313936563064 109 | 100 101 0.34051608855376914 110 | 101 1 0.06856115161568536 111 | 40 293 -0.035097754345933166 112 | 50 183 -0.19145922186426215 113 | 60 162 -0.41470338699888404 114 | 70 318 -1.3022538373785415 115 | 80 75 -0.6321179241364779 116 | 90 89 0.21343277316556672 117 | ACCENT_ADDED_NOTE_COVERED 118 | 119 | 0 28 -0.7844400523770975 120 | 10 315 -1.3198293809466768 121 | 100 374 0.20904932781439484 122 | 20 299 0.7272737739331014 123 | 30 98 0.22256460713477105 124 | 40 342 -0.5344352469607553 125 | 50 214 -0.714044946477381 126 | ACCENT_BASS_IS_ADDED_NOTE 127 | 128 | 0 42 -0.050871688181055454 129 | 101 219 0.12037271220652761 130 | 20 148 -0.327183523659918 131 | 40 365 -0.1583538866099113 132 | 70 362 -0.12776156321828666 133 | ACCENT_BASS_IS_FIFTH 134 | 135 | 0 41 0.15171542438091745 136 | 10 393 0.10159176280040956 137 | 101 203 0.3498901496355765 138 | 20 307 0.33218849632158515 139 | 40 354 0.1498335179026897 140 | 70 344 0.10170698840384382 141 | 80 290 0.20398207292536125 142 | 90 396 0.2912434649161075 143 | ACCENT_BASS_IS_ROOT 144 | 145 | 0 67 -0.27463268098181126 146 | 100 414 0.5377773027689758 147 | 101 39 0.5691280913552049 148 | 20 300 -0.0025194075883626615 149 | 30 339 0.2617046297942773 150 | 40 171 0.48450630757845586 151 | 50 378 0.06668181734864084 152 | 60 327 -0.18858397951456862 153 | 70 138 -0.23697526695590285 154 | 80 125 -0.20078270308081841 155 | 90 147 0.3307745268285484 156 | ACCENT_BASS_IS_THIRD 157 | 158 | 0 40 -0.13063218180319366 159 | 10 389 -0.8036674911863734 160 | 101 68 0.18887018764318922 161 | 20 126 -0.23191420995965087 162 | 30 328 -0.6454559039557209 163 | 40 113 -0.23048481746870061 164 | 50 382 -0.44933851864093144 165 | 60 351 -0.19077075996176376 166 | 70 108 -0.24922346926638045 167 | 80 301 -0.051146013874174584 168 | 90 399 -1.2629121269865649 169 | ACCENT_FIFTH_COVERED 170 | 171 | 0 84 -0.9554493763566244 172 | 10 156 -0.943050336582696 173 | 100 372 -0.5874892010158456 174 | 20 169 -0.15210684007057412 175 | 30 23 -0.058289740226118554 176 | 40 323 -0.412416761725644 177 | 50 136 -0.10172482646266624 178 | 60 418 -0.31498331666708373 179 | 70 412 -0.6191615683896746 180 | ACCENT_ROOT_COVERED 181 | 182 | 0 194 -0.9551185549617595 183 | 10 285 -0.9590822592583303 184 | 100 368 0.13198627987049194 185 | 20 163 -0.5082681005480044 186 | 30 56 -0.9782322247373321 187 | 40 159 -0.6408826524579413 188 | 50 19 -0.6118806860774669 189 | 60 166 0.03986369192754151 190 | 70 411 0.2315953333572611 191 | 80 422 0.3743549329607136 192 | ACCENT_THIRD_COVERED 193 | 194 | 0 196 -1.0205602090628743 195 | 10 287 -0.7657435287683282 196 | 100 370 0.9769783238616788 197 | 20 283 -0.27944865008129727 198 | 30 21 -0.37447335535081355 199 | 40 112 -0.4231984788724284 200 | 50 58 -0.5977932713025705 201 | 60 417 -0.4378587568692996 202 | 70 410 -0.7233221681794216 203 | ADDED_NOTE_COVERED 204 | 205 | 91 -2.963591046974959 206 | ALL_NOTES_COVERED 207 | 208 | 9 3.026996596702604 209 | BEGINNING_ACCENTED 210 | 211 | 0.125 367 -0.9510756945548124 212 | 0.25 60 1.7723943102476376 213 | 0.5 86 2.592207313350196 214 | 1.0 30 2.543037210264826 215 | CHORD_BIGRAM 216 | 217 | dim7_min_11 280 1.2261084182117472 218 | dim_maj_11 258 0.2268858330023417 219 | dim_maj_6 121 1.8267692276402765 220 | dim_min_11 257 0.423124686544582 221 | dim_min_2 259 0.6040698456307515 222 | maj4_maj_7 278 2.3517580692538904 223 | maj4_min_7 279 2.0328794173471367 224 | maj6_maj_5 281 0.8576950528095115 225 | maj7_maj4_0 272 1.6327234212513368 226 | maj7_maj7_5 270 1.5671765162119364 227 | maj7_maj_0 277 2.0452793152124538 228 | maj7_maj_2 274 2.2040833411859606 229 | maj7_maj_4 276 1.7614571971963686 230 | maj7_maj_7 265 1.6338734498770124 231 | maj7_maj_9 269 1.49012201289271 232 | maj7_min6_2 264 0.9826156477638919 233 | maj7_min7_5 271 1.2331918558447899 234 | maj7_min_10 267 0.6867152144687262 235 | maj7_min_2 275 1.516528563627317 236 | maj7_min_3 268 1.899617887165833 237 | maj7_min_5 273 2.268943312622734 238 | maj7_min_7 266 0.7188911676228869 239 | maj_dim7_1 256 1.6272330802436672 240 | maj_dim_1 229 1.8546625724578372 241 | maj_maj4_0 222 3.1472347701771257 242 | maj_maj6_2 263 1.4769376198933688 243 | maj_maj7_1 224 1.6828003172363315 244 | maj_maj7_2 223 0.6359911328868373 245 | maj_maj7_5 230 2.718681850758617 246 | maj_maj_1 233 1.2843821129203996 247 | maj_maj_10 227 1.6205040653543406 248 | maj_maj_11 242 2.0057371086214175 249 | maj_maj_2 115 2.211541846739658 250 | maj_maj_3 240 2.3885079322135425 251 | maj_maj_4 236 2.8055237973575693 252 | maj_maj_5 51 3.627724637331117 253 | maj_maj_7 111 3.275936285440051 254 | maj_maj_8 228 2.3710555805214777 255 | maj_maj_9 237 3.014302954221114 256 | maj_min6_10 241 0.3037657036064158 257 | maj_min6_2 152 1.218149042189673 258 | maj_min7_10 238 1.9818133587140188 259 | maj_min7_2 260 1.6909973047825808 260 | maj_min7_5 231 1.4986413930734812 261 | maj_min_0 235 0.9012227247214467 262 | maj_min_1 239 1.7123700262919723 263 | maj_min_10 106 2.5905040995000572 264 | maj_min_2 226 2.1581368621048456 265 | maj_min_3 232 2.526514192128251 266 | maj_min_5 234 2.234097978469651 267 | maj_min_7 225 2.2003517331266744 268 | maj_min_8 130 2.4361913353366615 269 | min6_maj_9 140 1.6808786920387775 270 | min6_min_0 262 1.6283701078189659 271 | min6_min_5 261 1.0371921454427813 272 | min7_maj_2 254 1.5789853446437334 273 | min7_maj_9 255 1.0900742729980633 274 | min7_min_0 253 2.1293638958550574 275 | min7_min_5 87 1.1458268053807206 276 | min_dim7_1 249 1.422981116399169 277 | min_dim_1 122 2.7259439984948237 278 | min_dim_10 250 1.905774055569409 279 | min_maj7_2 251 0.9183364365952533 280 | min_maj7_5 243 3.2712355880544775 281 | min_maj_0 245 2.0461379091495 282 | min_maj_11 73 1.727453444309305 283 | min_maj_2 168 2.151522286028056 284 | min_maj_4 248 2.5547550681846403 285 | min_maj_5 158 4.052434603056359 286 | min_maj_7 252 2.4542171312260783 287 | min_maj_9 247 2.780702907121289 288 | min_min7_5 100 2.4175580744497 289 | min_min_10 244 2.227019067300469 290 | min_min_2 165 1.63180595932645 291 | min_min_5 161 2.369932120405194 292 | min_min_7 246 3.147024522456914 293 | DURATION_ADDED_NOTE_COVERED 294 | 295 | 0 25 -0.7983859114485266 296 | 10 360 0.07657076369244017 297 | 20 296 0.2373186279652436 298 | 30 95 -0.49894602430196167 299 | 40 314 -0.5805229571066184 300 | 50 142 -0.6037527860159405 301 | DURATION_ADDED_NOTE_GREATER_THAN_ROOT 302 | 303 | 141 -0.08547597212493165 304 | DURATION_BASS_IS_ADDED_NOTE 305 | 306 | 0 38 -0.0507869444080052 307 | 101 218 0.12601816162161847 308 | 50 146 0.5152967255352654 309 | DURATION_BASS_IS_FIFTH 310 | 311 | 0 37 0.10759069186688688 312 | 101 202 0.35178244040117795 313 | 20 350 -0.4620077839377169 314 | 30 384 -0.036665262546032515 315 | 40 179 -0.030494482621613715 316 | 50 289 0.02803006702407044 317 | DURATION_BASS_IS_ROOT 318 | 319 | 0 65 -0.22024573349310528 320 | 101 35 0.6041795001529565 321 | 20 338 -0.36182189810109155 322 | 30 376 -0.16291320692388458 323 | 40 325 0.301638714838597 324 | 50 124 0.01572347287167289 325 | 70 343 0.4456453108535602 326 | 80 407 0.0725457187738004 327 | 90 413 0.7276696783157351 328 | DURATION_BASS_IS_THIRD 329 | 330 | 0 36 -0.17583254764746442 331 | 101 66 0.2095283791225167 332 | 20 326 0.11202631272564033 333 | 30 377 0.28790497003939974 334 | 40 178 0.17106526181684906 335 | 50 107 -0.20562897291573193 336 | DURATION_FIFTH_COVERED 337 | 338 | 0 81 -0.9354525970279951 339 | 10 358 0.32054027154031944 340 | 20 103 -0.6376295602121811 341 | 30 16 -0.9304844767420419 342 | 40 175 -0.7476621486976216 343 | 50 134 -0.8192969999367996 344 | 60 398 -0.2392914802176177 345 | 70 419 0.9707346577521329 346 | DURATION_PURITY 347 | 348 | 100 409 1.413623401658572 349 | 101 2 0.06207078016644674 350 | 30 209 1.0996009338286288 351 | 50 184 -0.3882219642951417 352 | 60 333 -0.5041369581953228 353 | 70 76 0.2437403741105386 354 | 80 153 0.44554479399968666 355 | 90 90 0.828662434099749 356 | DURATION_ROOT_COVERED 357 | 358 | 0 188 -0.9892296513589828 359 | 10 335 -0.551500023164622 360 | 20 131 -0.9418026122351342 361 | 30 52 -0.9081850492345658 362 | 40 116 -0.6758861208308995 363 | 50 10 -0.6309051192862699 364 | 60 391 0.5708209673080639 365 | 70 420 0.028890176761097692 366 | 80 421 0.9935485209387179 367 | DURATION_THIRD_COVERED 368 | 369 | 0 191 -1.0141627341041919 370 | 10 356 -0.49451483646094807 371 | 20 92 -0.49713677476883056 372 | 30 13 -0.2155694788489351 373 | 40 80 0.274762855147859 374 | 50 54 0.5966303312845838 375 | 60 395 1.0608213283613341 376 | FIFTH_COVERED 377 | 378 | 8 -2.8083523643734107 379 | FIG_ACCENTED_PURITY 380 | 381 | 10 310 0.602565896400743 382 | 100 170 -0.5069965770437524 383 | 101 4 0.2913642204886339 384 | 50 186 0.6592646737593855 385 | 60 284 0.2920293531447175 386 | 70 207 0.20154023362077012 387 | 80 78 0.17026984018265273 388 | 90 282 -0.04114601236284163 389 | FIG_ACCENT_ADDED_NOTE_COVERED 390 | 391 | 0 29 0.3527492538536807 392 | 10 316 -0.22725300152540992 393 | 100 375 0.1780282502900599 394 | 20 317 -1.5993233469325852 395 | 30 99 -0.7042331434017615 396 | 40 213 -0.14536305669671143 397 | 50 215 -0.18485862545406356 398 | FIG_ACCENT_BASS_IS_ADDED_NOTE 399 | 400 | 0 50 0.1634818643130681 401 | 101 221 0.02318958159591325 402 | 20 151 -0.33323067644366844 403 | 40 366 -0.16468529533789794 404 | 70 363 -0.12466763923383345 405 | FIG_ACCENT_BASS_IS_FIFTH 406 | 407 | 0 49 0.21660867751821844 408 | 10 394 0.0577515512547374 409 | 101 205 0.283340556370536 410 | 20 308 0.2798251271459354 411 | 40 355 0.13412499033644015 412 | 70 346 0.306259182569514 413 | 80 292 0.1513857543699836 414 | 90 397 0.33549845846668847 415 | FIG_ACCENT_BASS_IS_ROOT 416 | 417 | 0 71 0.3970181019234369 418 | 100 416 0.5384511157261522 419 | 101 47 -0.08279963060128051 420 | 20 302 0.21826383725634196 421 | 30 341 0.1409109785593777 422 | 40 172 0.08429401069931097 423 | 50 381 -0.008790607518534253 424 | 60 331 -0.17766903076022747 425 | 70 139 0.1991279036184167 426 | 80 128 -0.17156168837970498 427 | 90 150 0.23289194681844128 428 | FIG_ACCENT_BASS_IS_THIRD 429 | 430 | 0 48 -0.5590570588377533 431 | 10 390 -0.7209858266990185 432 | 101 72 -0.20044531054682307 433 | 20 129 -0.23046313507967398 434 | 30 332 -0.7509727298045953 435 | 40 114 -0.38137096308578255 436 | 50 383 -0.644721925208961 437 | 60 353 -0.20357774554718772 438 | 70 110 -1.0966463600452716 439 | 80 303 -0.30123370788639947 440 | 90 400 0.9999561029842755 441 | FIG_ACCENT_FIFTH_COVERED 442 | 443 | 0 85 0.07996437376923318 444 | 10 157 -0.9032178323643351 445 | 100 373 0.13797709780783227 446 | 20 164 -0.6775217063935189 447 | 30 24 -0.6346560713376695 448 | 40 211 -0.5821212603293379 449 | 50 137 -0.48346963227662076 450 | 60 402 0.06559690951522124 451 | 70 305 -0.3993054942620812 452 | FIG_ACCENT_ROOT_COVERED 453 | 454 | 0 195 -1.3095404230081187 455 | 10 286 -0.7648505849749835 456 | 100 369 -0.3862953092420796 457 | 20 295 -0.8022392474677392 458 | 30 57 0.3497371007798799 459 | 40 160 -0.05747112503393294 460 | 50 20 0.18912927671262622 461 | 60 167 -0.03664373284108827 462 | 70 154 -0.17463204031832208 463 | 80 401 -0.15703774368244952 464 | FIG_ACCENT_THIRD_COVERED 465 | 466 | 0 197 -0.08197537027822294 467 | 10 288 -1.2997499991659853 468 | 100 371 -0.1027583520141078 469 | 20 321 -0.9362001499996094 470 | 30 22 -0.7001841224461673 471 | 40 155 -0.28172585962012475 472 | 50 59 0.017190699955445622 473 | 60 403 0.13113945080076778 474 | 70 313 0.2162205112710706 475 | FIG_DURATION_ADDED_NOTE_COVERED 476 | 477 | 0 26 -0.8140056145989404 478 | 10 361 0.0433466385760243 479 | 20 297 -0.33150630550754334 480 | 30 96 0.2334355605469955 481 | 40 212 0.4802067973190203 482 | 50 143 -0.21331106839463923 483 | FIG_DURATION_BASS_IS_ADDED_NOTE 484 | 485 | 0 46 0.2076617489460265 486 | 101 220 0.02222012586530892 487 | 50 149 0.3849264932934444 488 | FIG_DURATION_BASS_IS_FIFTH 489 | 490 | 0 45 0.2161413727705903 491 | 101 204 0.2728262722632723 492 | 20 352 -0.5124031096217266 493 | 30 385 -0.12942449727918004 494 | 40 181 -0.05544365448648932 495 | 50 291 0.18315845781560816 496 | FIG_DURATION_BASS_IS_ROOT 497 | 498 | 0 69 0.4001388006534752 499 | 101 43 -0.04882136763119272 500 | 20 340 -0.021105022243900505 501 | 30 379 -0.3299106500350893 502 | 40 329 -0.08746114219934713 503 | 50 127 0.22644860502142386 504 | 70 345 0.3932493083447288 505 | 80 406 0.02891103852161144 506 | 90 415 0.7048146236436104 507 | FIG_DURATION_BASS_IS_THIRD 508 | 509 | 0 44 -0.5686837877394172 510 | 101 70 -0.2375063428814107 511 | 20 330 0.08314100865795726 512 | 30 380 0.24681590616619198 513 | 40 180 0.11530814923698447 514 | 50 109 0.9229664506153413 515 | FIG_DURATION_FIFTH_COVERED 516 | 517 | 0 82 -0.8970536474255144 518 | 10 359 -1.5480734486820797 519 | 20 104 -1.1622911133179734 520 | 30 17 -0.43276808044582915 521 | 40 210 0.0017046072223161242 522 | 50 176 0.3313137304193836 523 | 60 135 0.5515997171879211 524 | 70 304 0.187852736854898 525 | FIG_DURATION_PURITY 526 | 527 | 100 348 0.7314634079287993 528 | 101 5 0.28222228101934826 529 | 50 187 -0.14170793152391434 530 | 60 320 0.12067482858371487 531 | 70 208 0.07935639583978653 532 | 80 79 -0.016259642357289883 533 | 90 119 0.2937996361107341 534 | FIG_DURATION_ROOT_COVERED 535 | 536 | 0 189 -0.9649642502226352 537 | 10 336 -1.0969201874260335 538 | 20 132 -0.4465172301551703 539 | 30 53 -0.08471836136956983 540 | 40 120 -0.057487689273372056 541 | 50 11 -0.08177474482539158 542 | 60 392 0.06993197157616089 543 | 70 311 -0.2418699336092522 544 | 80 404 -0.6967225724895445 545 | FIG_DURATION_THIRD_COVERED 546 | 547 | 0 192 -0.9823892215665446 548 | 10 357 -0.49463545369625034 549 | 20 93 -0.32156458342389493 550 | 30 14 -5.947634511826213E-4 551 | 40 123 -0.27726619055689566 552 | 50 55 -0.18245467220807352 553 | 60 102 0.01511336704822748 554 | 70 312 -0.2498477056582285 555 | FIG_FIRST_BASS_IS_ADDED_NOTE 556 | 557 | 217 0.3637660397700354 558 | FIG_FIRST_BASS_IS_FIFTH 559 | 560 | 199 -0.22229778857822727 561 | FIG_FIRST_BASS_IS_ROOT 562 | 563 | 32 -0.16905074813780716 564 | FIG_FIRST_BASS_IS_THIRD 565 | 566 | 62 0.073849798428215 567 | FIG_PURITY 568 | 569 | 100 347 0.7342029904846438 570 | 101 3 0.2998280662492941 571 | 50 185 -0.14744416599582155 572 | 60 319 0.16248541994130772 573 | 70 206 0.08592891115694332 574 | 80 77 0.023361314855801854 575 | 90 118 0.3057387072206832 576 | FIG_SEGMENT_BASS_IS_ADDED_NOTE 577 | 578 | 145 -0.8456161470648219 579 | FIG_SEGMENT_BASS_IS_FIFTH 580 | 581 | 201 0.15664700747446705 582 | FIG_SEGMENT_BASS_IS_ROOT 583 | 584 | 34 0.43849690351832216 585 | FIG_SEGMENT_BASS_IS_THIRD 586 | 587 | 64 -0.19126215586466289 588 | FIRST_BASS_IS_ADDED_NOTE 589 | 590 | 216 0.5282004363613022 591 | FIRST_BASS_IS_FIFTH 592 | 593 | 198 -0.22477110471435674 594 | FIRST_BASS_IS_ROOT 595 | 596 | 31 0.9380026269618517 597 | FIRST_BASS_IS_THIRD 598 | 599 | 61 -0.3750502419418784 600 | PURITY 601 | 602 | 100 408 -0.44931420157795376 603 | 101 0 0.047465680459043445 604 | 40 306 0.09216666783455046 605 | 50 182 0.4459617793156619 606 | 60 74 0.703241045169722 607 | 70 117 0.523513256653943 608 | 80 88 0.11371039773884918 609 | 90 294 -0.5911702466241604 610 | ROOT_COVERED 611 | 612 | 6 -2.8047565999295774 613 | SEGMENT_BASS_IS_ADDED_NOTE 614 | 615 | 144 0.5557719840383858 616 | SEGMENT_BASS_IS_FIFTH 617 | 618 | 200 -0.14568046060211806 619 | SEGMENT_BASS_IS_ROOT 620 | 621 | 33 -0.4217540729556968 622 | SEGMENT_BASS_IS_THIRD 623 | 624 | 63 -0.25444059662948354 625 | SEGMENT_DURATION_ADDED_NOTE_COVERED 626 | 627 | 0 27 -0.7771489847100174 628 | 101 97 4.287879764217992 629 | 50 298 1.069432274844798 630 | 80 364 1.945563107956588 631 | SEGMENT_DURATION_FIFTH_COVERED 632 | 633 | 0 83 -0.9096664714335166 634 | 101 18 2.565594913885488 635 | 30 387 -1.1435044763932558 636 | 50 105 1.5244597488936056 637 | 70 334 1.5270307292796608 638 | 80 337 1.4092609215252976 639 | 90 177 1.9683872506616655 640 | SEGMENT_DURATION_ROOT_COVERED 641 | 642 | 0 190 -0.9546956215600236 643 | 101 12 2.177451284186413 644 | 30 386 0.15011604113052326 645 | 50 133 1.1714993083113028 646 | 70 322 -0.3457263685141986 647 | 80 324 0.9301580033864062 648 | 90 173 0.8505791599958079 649 | SEGMENT_DURATION_THIRD_COVERED 650 | 651 | 0 193 -0.9819547692912174 652 | 101 15 1.6074589990321508 653 | 30 388 -0.2195759671692331 654 | 50 94 0.8955311751846814 655 | 70 174 0.5133009878872035 656 | 80 349 1.0411913672905417 657 | 90 405 0.9997593919994175 658 | THIRD_COVERED 659 | 660 | 7 -2.7402900799727847 661 | -------------------------------------------------------------------------------- /sample_output_files/feature_count2.txt: -------------------------------------------------------------------------------- 1 | PURITY_90 270 2 | ACCENTED_PURITY_100 598 3 | DURATION_PURITY_90 835 4 | FIG_PURITY_101 2246 5 | FIG_ACCENTED_PURITY_101 2246 6 | FIG_DURATION_PURITY_101 2246 7 | ROOT_COVERED 2710 8 | THIRD_COVERED 2658 9 | FIFTH_COVERED 2641 10 | ALL_NOTES_COVERED 2538 11 | DURATION_ROOT_COVERED_50 844 12 | FIG_DURATION_ROOT_COVERED_60 244 13 | SEGMENT_DURATION_ROOT_COVERED_101 2410 14 | DURATION_THIRD_COVERED_20 603 15 | FIG_DURATION_THIRD_COVERED_30 1475 16 | SEGMENT_DURATION_THIRD_COVERED_101 2239 17 | DURATION_FIFTH_COVERED_20 642 18 | FIG_DURATION_FIFTH_COVERED_30 1471 19 | SEGMENT_DURATION_FIFTH_COVERED_101 2252 20 | ACCENT_ROOT_COVERED_60 189 21 | FIG_ACCENT_ROOT_COVERED_60 208 22 | ACCENT_THIRD_COVERED_20 332 23 | FIG_ACCENT_THIRD_COVERED_20 265 24 | ACCENT_FIFTH_COVERED_20 453 25 | FIG_ACCENT_FIFTH_COVERED_20 329 26 | DURATION_ADDED_NOTE_COVERED_0 2292 27 | FIG_DURATION_ADDED_NOTE_COVERED_0 2292 28 | SEGMENT_DURATION_ADDED_NOTE_COVERED_0 2292 29 | ACCENT_ADDED_NOTE_COVERED_0 2292 30 | FIG_ACCENT_ADDED_NOTE_COVERED_0 2292 31 | BEGINNING_ACCENTED_0.25 923 32 | FIRST_BASS_IS_ROOT 1727 33 | FIG_FIRST_BASS_IS_ROOT 1729 34 | SEGMENT_BASS_IS_ROOT 1615 35 | FIG_SEGMENT_BASS_IS_ROOT 1788 36 | DURATION_BASS_IS_ROOT_101 1355 37 | DURATION_BASS_IS_THIRD_0 1849 38 | DURATION_BASS_IS_FIFTH_0 2571 39 | DURATION_BASS_IS_ADDED_NOTE_0 2662 40 | ACCENT_BASS_IS_ROOT_101 1355 41 | ACCENT_BASS_IS_THIRD_0 1849 42 | ACCENT_BASS_IS_FIFTH_0 2571 43 | ACCENT_BASS_IS_ADDED_NOTE_0 2662 44 | FIG_DURATION_BASS_IS_ROOT_101 1356 45 | FIG_DURATION_BASS_IS_THIRD_0 1847 46 | FIG_DURATION_BASS_IS_FIFTH_0 2569 47 | FIG_DURATION_BASS_IS_ADDED_NOTE_0 2662 48 | FIG_ACCENT_BASS_IS_ROOT_101 1356 49 | FIG_ACCENT_BASS_IS_THIRD_0 1847 50 | FIG_ACCENT_BASS_IS_FIFTH_0 2569 51 | FIG_ACCENT_BASS_IS_ADDED_NOTE_0 2662 52 | CHORD_BIGRAM_maj_min_3 32 53 | PURITY_80 805 54 | DURATION_PURITY_80 324 55 | DURATION_ROOT_COVERED_10 37 56 | FIG_DURATION_ROOT_COVERED_20 248 57 | SEGMENT_DURATION_ROOT_COVERED_50 217 58 | DURATION_THIRD_COVERED_50 187 59 | FIG_DURATION_THIRD_COVERED_70 21 60 | ACCENT_ROOT_COVERED_20 171 61 | FIG_ACCENT_ROOT_COVERED_20 106 62 | ACCENT_THIRD_COVERED_60 30 63 | FIG_ACCENT_THIRD_COVERED_60 37 64 | BEGINNING_ACCENTED_1.0 865 65 | FIRST_BASS_IS_THIRD 731 66 | FIG_FIRST_BASS_IS_THIRD 733 67 | SEGMENT_BASS_IS_THIRD 646 68 | FIG_SEGMENT_BASS_IS_THIRD 679 69 | DURATION_BASS_IS_ROOT_0 885 70 | DURATION_BASS_IS_THIRD_101 504 71 | ACCENT_BASS_IS_ROOT_0 885 72 | ACCENT_BASS_IS_THIRD_101 504 73 | FIG_DURATION_BASS_IS_ROOT_0 884 74 | FIG_DURATION_BASS_IS_THIRD_101 504 75 | FIG_ACCENT_BASS_IS_ROOT_0 884 76 | FIG_ACCENT_BASS_IS_THIRD_101 504 77 | CHORD_BIGRAM_maj_maj_5 488 78 | ACCENTED_PURITY_90 450 79 | DURATION_ROOT_COVERED_40 654 80 | FIG_DURATION_ROOT_COVERED_50 1059 81 | DURATION_THIRD_COVERED_30 1433 82 | FIG_DURATION_THIRD_COVERED_40 247 83 | DURATION_FIFTH_COVERED_10 90 84 | FIG_DURATION_FIFTH_COVERED_20 540 85 | SEGMENT_DURATION_FIFTH_COVERED_50 295 86 | ACCENT_ROOT_COVERED_40 306 87 | FIG_ACCENT_ROOT_COVERED_40 291 88 | ACCENT_THIRD_COVERED_40 346 89 | FIG_ACCENT_THIRD_COVERED_40 346 90 | CHORD_BIGRAM_maj_maj_7 278 91 | PURITY_70 256 92 | DURATION_ROOT_COVERED_30 677 93 | FIG_DURATION_ROOT_COVERED_40 446 94 | SEGMENT_DURATION_ROOT_COVERED_80 54 95 | SEGMENT_DURATION_THIRD_COVERED_80 97 96 | DURATION_FIFTH_COVERED_30 1443 97 | FIG_DURATION_FIFTH_COVERED_40 312 98 | ACCENT_ROOT_COVERED_30 743 99 | FIG_ACCENT_ROOT_COVERED_30 741 100 | FIG_ACCENT_THIRD_COVERED_50 422 101 | ACCENT_FIFTH_COVERED_30 1544 102 | FIG_ACCENT_FIFTH_COVERED_30 1593 103 | BEGINNING_ACCENTED_0.5 904 104 | DURATION_BASS_IS_ROOT_50 357 105 | DURATION_BASS_IS_THIRD_30 74 106 | ACCENT_BASS_IS_ROOT_40 50 107 | ACCENT_BASS_IS_THIRD_50 19 108 | FIG_DURATION_BASS_IS_ROOT_50 357 109 | FIG_DURATION_BASS_IS_THIRD_30 74 110 | FIG_ACCENT_BASS_IS_ROOT_40 50 111 | FIG_ACCENT_BASS_IS_THIRD_50 19 112 | DURATION_PURITY_100 164 113 | DURATION_ROOT_COVERED_70 32 114 | FIG_DURATION_ROOT_COVERED_70 69 115 | FIG_DURATION_THIRD_COVERED_20 494 116 | ACCENT_THIRD_COVERED_30 1497 117 | FIG_ACCENT_THIRD_COVERED_30 1474 118 | CHORD_BIGRAM_min7_maj_2 35 119 | PURITY_101 1276 120 | ACCENTED_PURITY_101 1276 121 | DURATION_PURITY_101 1276 122 | ADDED_NOTE_COVERED 449 123 | FIG_DURATION_THIRD_COVERED_50 312 124 | DURATION_FIFTH_COVERED_0 100 125 | FIG_DURATION_FIFTH_COVERED_0 100 126 | SEGMENT_DURATION_FIFTH_COVERED_0 100 127 | ACCENT_ROOT_COVERED_50 1077 128 | FIG_ACCENT_ROOT_COVERED_50 1111 129 | ACCENT_THIRD_COVERED_50 348 130 | ACCENT_FIFTH_COVERED_0 100 131 | FIG_ACCENT_FIFTH_COVERED_0 100 132 | DURATION_ADDED_NOTE_COVERED_10 19 133 | FIG_DURATION_ADDED_NOTE_COVERED_10 15 134 | SEGMENT_DURATION_ADDED_NOTE_COVERED_101 381 135 | ACCENT_ADDED_NOTE_COVERED_10 63 136 | FIG_ACCENT_ADDED_NOTE_COVERED_10 63 137 | CHORD_BIGRAM_maj7_min7_5 4 138 | DURATION_ADDED_NOTE_GREATER_THAN_ROOT 105 139 | DURATION_ROOT_COVERED_20 282 140 | ACCENT_FIFTH_COVERED_10 207 141 | FIG_ACCENT_FIFTH_COVERED_10 206 142 | DURATION_ADDED_NOTE_COVERED_50 5 143 | FIG_DURATION_ADDED_NOTE_COVERED_50 8 144 | BEGINNING_ACCENTED_0.125 47 145 | FIRST_BASS_IS_FIFTH 110 146 | FIG_FIRST_BASS_IS_FIFTH 112 147 | SEGMENT_BASS_IS_FIFTH 130 148 | FIG_SEGMENT_BASS_IS_FIFTH 141 149 | DURATION_BASS_IS_FIFTH_101 83 150 | ACCENT_BASS_IS_FIFTH_101 83 151 | FIG_DURATION_BASS_IS_FIFTH_101 83 152 | FIG_ACCENT_BASS_IS_FIFTH_101 83 153 | CHORD_BIGRAM_maj_maj7_10 3 154 | DURATION_FIFTH_COVERED_70 14 155 | FIG_DURATION_FIFTH_COVERED_70 20 156 | ACCENT_ROOT_COVERED_10 130 157 | FIG_ACCENT_ROOT_COVERED_10 121 158 | ACCENT_FIFTH_COVERED_80 3 159 | FIG_ACCENT_FIFTH_COVERED_80 3 160 | DURATION_ROOT_COVERED_60 156 161 | CHORD_BIGRAM_min_maj_2 77 162 | FIG_PURITY_90 260 163 | FIG_ACCENTED_PURITY_100 216 164 | FIG_DURATION_PURITY_90 260 165 | CHORD_BIGRAM_min_min_7 48 166 | SEGMENT_DURATION_FIFTH_COVERED_80 52 167 | DURATION_BASS_IS_ROOT_80 28 168 | ACCENT_BASS_IS_ROOT_90 75 169 | FIG_DURATION_BASS_IS_ROOT_80 28 170 | FIG_ACCENT_BASS_IS_ROOT_90 75 171 | CHORD_BIGRAM_min_min_5 61 172 | DURATION_THIRD_COVERED_60 28 173 | FIG_DURATION_THIRD_COVERED_60 68 174 | FIG_DURATION_FIFTH_COVERED_10 43 175 | ACCENT_THIRD_COVERED_70 8 176 | FIG_ACCENT_THIRD_COVERED_70 15 177 | CHORD_BIGRAM_dim_min_11 13 178 | PURITY_50 32 179 | ACCENTED_PURITY_70 40 180 | DURATION_PURITY_50 22 181 | SEGMENT_DURATION_THIRD_COVERED_50 268 182 | DURATION_BASS_IS_THIRD_50 271 183 | ACCENT_BASS_IS_THIRD_70 80 184 | FIG_DURATION_BASS_IS_THIRD_50 273 185 | FIG_ACCENT_BASS_IS_THIRD_70 80 186 | CHORD_BIGRAM_dim7_dim_0 2 187 | FIG_DURATION_ADDED_NOTE_COVERED_20 157 188 | SEGMENT_DURATION_ADDED_NOTE_COVERED_50 60 189 | ACCENT_ADDED_NOTE_COVERED_20 75 190 | FIG_ACCENT_ADDED_NOTE_COVERED_20 67 191 | CHORD_BIGRAM_min_dim7_1 9 192 | DURATION_THIRD_COVERED_10 65 193 | CHORD_BIGRAM_min7_min_5 16 194 | FIG_DURATION_THIRD_COVERED_10 39 195 | DURATION_ADDED_NOTE_COVERED_20 169 196 | CHORD_BIGRAM_maj_min7_2 7 197 | FIG_ACCENTED_PURITY_90 92 198 | ACCENT_FIFTH_COVERED_40 194 199 | FIG_ACCENT_FIFTH_COVERED_40 234 200 | CHORD_BIGRAM_min_maj_5 143 201 | PURITY_60 81 202 | DURATION_PURITY_70 90 203 | SEGMENT_DURATION_ROOT_COVERED_70 9 204 | DURATION_THIRD_COVERED_40 339 205 | SEGMENT_DURATION_FIFTH_COVERED_70 19 206 | DURATION_BASS_IS_THIRD_70 4 207 | ACCENT_BASS_IS_THIRD_90 52 208 | FIG_DURATION_BASS_IS_THIRD_70 4 209 | FIG_ACCENT_BASS_IS_THIRD_90 54 210 | FIG_PURITY_100 100 211 | FIG_DURATION_PURITY_100 100 212 | ACCENTED_PURITY_80 305 213 | FIG_DURATION_ROOT_COVERED_30 595 214 | FIG_DURATION_ADDED_NOTE_COVERED_30 223 215 | CHORD_BIGRAM_min_min7_0 3 216 | CHORD_BIGRAM_maj_min_2 33 217 | ACCENT_BASS_IS_ROOT_70 124 218 | FIG_ACCENT_BASS_IS_ROOT_70 125 219 | DURATION_FIFTH_COVERED_40 271 220 | FIG_DURATION_FIFTH_COVERED_50 203 221 | CHORD_BIGRAM_maj7_min_7 9 222 | FIG_PURITY_80 77 223 | FIG_ACCENTED_PURITY_70 20 224 | FIG_DURATION_PURITY_80 77 225 | ACCENT_BASS_IS_THIRD_40 57 226 | FIG_ACCENT_BASS_IS_THIRD_40 57 227 | CHORD_BIGRAM_min_maj7_5 51 228 | CHORD_BIGRAM_maj_maj_1 9 229 | CHORD_BIGRAM_maj_maj_2 58 230 | FIG_ACCENT_FIFTH_COVERED_50 239 231 | DURATION_BASS_IS_ROOT_30 51 232 | ACCENT_BASS_IS_ROOT_60 17 233 | ACCENT_BASS_IS_THIRD_30 30 234 | FIG_DURATION_BASS_IS_ROOT_30 51 235 | FIG_ACCENT_BASS_IS_ROOT_60 17 236 | FIG_ACCENT_BASS_IS_THIRD_30 30 237 | CHORD_BIGRAM_maj7_maj_2 43 238 | CHORD_BIGRAM_maj_maj7_2 6 239 | DURATION_BASS_IS_FIFTH_30 25 240 | ACCENT_BASS_IS_FIFTH_30 1 241 | FIG_DURATION_BASS_IS_FIFTH_30 25 242 | FIG_ACCENT_BASS_IS_FIFTH_30 1 243 | CHORD_BIGRAM_maj_min_10 90 244 | CHORD_BIGRAM_min_maj_7 20 245 | CHORD_BIGRAM_maj_min_5 45 246 | ACCENT_BASS_IS_ROOT_80 109 247 | ACCENT_BASS_IS_THIRD_10 5 248 | FIG_ACCENT_BASS_IS_ROOT_80 109 249 | FIG_ACCENT_BASS_IS_THIRD_10 5 250 | CHORD_BIGRAM_maj_min_7 70 251 | CHORD_BIGRAM_maj_maj_8 7 252 | DURATION_ADDED_NOTE_COVERED_40 39 253 | ACCENT_ADDED_NOTE_COVERED_40 31 254 | FIG_ACCENT_ADDED_NOTE_COVERED_40 39 255 | FIRST_BASS_IS_ADDED_NOTE 67 256 | FIG_FIRST_BASS_IS_ADDED_NOTE 67 257 | SEGMENT_BASS_IS_ADDED_NOTE 66 258 | FIG_SEGMENT_BASS_IS_ADDED_NOTE 66 259 | DURATION_BASS_IS_ADDED_NOTE_101 51 260 | ACCENT_BASS_IS_ADDED_NOTE_101 51 261 | FIG_DURATION_BASS_IS_ADDED_NOTE_101 51 262 | FIG_ACCENT_BASS_IS_ADDED_NOTE_101 51 263 | CHORD_BIGRAM_maj_maj7_5 135 264 | FIG_ACCENT_THIRD_COVERED_80 5 265 | ACCENT_BASS_IS_THIRD_80 67 266 | FIG_ACCENT_BASS_IS_THIRD_80 67 267 | ACCENT_BASS_IS_ROOT_20 52 268 | ACCENTED_PURITY_50 25 269 | DURATION_PURITY_60 19 270 | FIG_ACCENTED_PURITY_60 19 271 | DURATION_ROOT_COVERED_0 31 272 | FIG_DURATION_ROOT_COVERED_0 31 273 | SEGMENT_DURATION_ROOT_COVERED_0 31 274 | ACCENT_ROOT_COVERED_0 31 275 | FIG_ACCENT_ROOT_COVERED_0 31 276 | DURATION_BASS_IS_FIFTH_50 50 277 | ACCENT_BASS_IS_FIFTH_40 19 278 | FIG_DURATION_BASS_IS_FIFTH_50 52 279 | FIG_ACCENT_BASS_IS_FIFTH_40 19 280 | CHORD_BIGRAM_maj6_min_8 1 281 | CHORD_BIGRAM_maj_maj6_7 1 282 | FIG_PURITY_60 17 283 | FIG_DURATION_PURITY_60 17 284 | FIG_ACCENT_ROOT_COVERED_70 88 285 | CHORD_BIGRAM_min6_maj_2 1 286 | CHORD_BIGRAM_maj_min6_2 18 287 | ACCENT_BASS_IS_FIFTH_20 25 288 | FIG_ACCENT_BASS_IS_FIFTH_20 25 289 | CHORD_BIGRAM_dim_maj_6 19 290 | DURATION_FIFTH_COVERED_50 163 291 | ACCENT_FIFTH_COVERED_50 218 292 | CHORD_BIGRAM_maj_dim_1 23 293 | ACCENT_ROOT_COVERED_70 62 294 | CHORD_BIGRAM_maj7_maj_0 49 295 | DURATION_THIRD_COVERED_0 83 296 | FIG_DURATION_THIRD_COVERED_0 83 297 | SEGMENT_DURATION_THIRD_COVERED_0 83 298 | ACCENT_THIRD_COVERED_0 83 299 | FIG_ACCENT_THIRD_COVERED_0 83 300 | DURATION_ADDED_NOTE_COVERED_30 217 301 | ACCENT_ADDED_NOTE_COVERED_30 243 302 | FIG_ACCENT_ADDED_NOTE_COVERED_30 240 303 | CHORD_BIGRAM_dim_maj_11 8 304 | ACCENT_THIRD_COVERED_10 85 305 | FIG_ACCENT_THIRD_COVERED_10 81 306 | PURITY_100 8 307 | DURATION_BASS_IS_ROOT_70 16 308 | DURATION_BASS_IS_THIRD_40 20 309 | FIG_DURATION_BASS_IS_ROOT_70 16 310 | FIG_DURATION_BASS_IS_THIRD_40 20 311 | CHORD_BIGRAM_min_maj_9 86 312 | DURATION_FIFTH_COVERED_60 17 313 | FIG_DURATION_FIFTH_COVERED_60 50 314 | CHORD_BIGRAM_min7_min_0 9 315 | FIG_ACCENT_ADDED_NOTE_COVERED_50 17 316 | CHORD_BIGRAM_maj7_min7_10 4 317 | CHORD_BIGRAM_maj7_maj_7 24 318 | ACCENT_ADDED_NOTE_COVERED_50 15 319 | FIG_ACCENTED_PURITY_80 119 320 | SEGMENT_DURATION_THIRD_COVERED_90 22 321 | DURATION_BASS_IS_ROOT_90 24 322 | ACCENT_BASS_IS_ROOT_100 22 323 | FIG_DURATION_BASS_IS_ROOT_90 24 324 | FIG_ACCENT_BASS_IS_ROOT_100 22 325 | CHORD_BIGRAM_maj_maj_9 23 326 | ACCENT_BASS_IS_FIFTH_10 12 327 | FIG_ACCENT_BASS_IS_FIFTH_10 12 328 | CHORD_BIGRAM_min6_min_5 20 329 | CHORD_BIGRAM_maj7_min6_2 7 330 | CHORD_BIGRAM_min_min6_7 3 331 | FIG_DURATION_ADDED_NOTE_COVERED_40 46 332 | CHORD_BIGRAM_min_maj_10 2 333 | ACCENT_FIFTH_COVERED_70 6 334 | FIG_ACCENT_FIFTH_COVERED_70 15 335 | ACCENT_BASS_IS_ROOT_30 26 336 | FIG_ACCENT_BASS_IS_ROOT_30 26 337 | CHORD_BIGRAM_min7_min_2 3 338 | FIG_DURATION_THIRD_COVERED_80 2 339 | CHORD_BIGRAM_maj_min7_3 1 340 | ACCENT_BASS_IS_FIFTH_50 4 341 | FIG_ACCENT_BASS_IS_FIFTH_50 4 342 | ACCENT_ADDED_NOTE_COVERED_100 20 343 | FIG_ACCENT_ADDED_NOTE_COVERED_100 20 344 | PURITY_40 9 345 | FIG_PURITY_50 8 346 | FIG_ACCENTED_PURITY_50 20 347 | FIG_DURATION_PURITY_50 8 348 | CHORD_BIGRAM_maj_min7_8 2 349 | CHORD_BIGRAM_dim7_maj_6 4 350 | CHORD_BIGRAM_maj4_maj_7 24 351 | CHORD_BIGRAM_maj_maj4_0 35 352 | FIG_ACCENT_THIRD_COVERED_100 13 353 | FIG_DURATION_ROOT_COVERED_10 15 354 | SEGMENT_DURATION_ROOT_COVERED_90 13 355 | DURATION_BASS_IS_FIFTH_40 4 356 | FIG_DURATION_BASS_IS_FIFTH_40 4 357 | CHORD_BIGRAM_maj_min_1 20 358 | CHORD_BIGRAM_maj_min7_5 31 359 | ACCENT_THIRD_COVERED_80 1 360 | FIG_ACCENT_FIFTH_COVERED_60 16 361 | CHORD_BIGRAM_maj7_min_5 26 362 | SEGMENT_DURATION_THIRD_COVERED_70 21 363 | DURATION_BASS_IS_ROOT_20 9 364 | ACCENT_BASS_IS_THIRD_60 24 365 | FIG_DURATION_BASS_IS_ROOT_20 9 366 | FIG_ACCENT_BASS_IS_THIRD_60 24 367 | CHORD_BIGRAM_maj_maj_10 24 368 | CHORD_BIGRAM_maj_min_8 29 369 | ACCENT_BASS_IS_THIRD_20 53 370 | FIG_ACCENT_BASS_IS_THIRD_20 53 371 | CHORD_BIGRAM_dim_maj_8 2 372 | CHORD_BIGRAM_min_dim_1 22 373 | CHORD_BIGRAM_dim7_min_11 5 374 | CHORD_BIGRAM_min_maj_0 5 375 | CHORD_BIGRAM_maj7_min_10 7 376 | DURATION_BASS_IS_ADDED_NOTE_50 25 377 | ACCENT_BASS_IS_ADDED_NOTE_40 7 378 | FIG_DURATION_BASS_IS_ADDED_NOTE_50 25 379 | FIG_ACCENT_BASS_IS_ADDED_NOTE_40 7 380 | ACCENT_BASS_IS_ROOT_10 2 381 | FIG_ACCENT_BASS_IS_ROOT_10 2 382 | CHORD_BIGRAM_maj7_dim7_8 1 383 | CHORD_BIGRAM_min4_min_7 1 384 | ACCENT_BASS_IS_FIFTH_70 13 385 | FIG_ACCENT_BASS_IS_FIFTH_70 14 386 | CHORD_BIGRAM_maj_min4_7 1 387 | ACCENTED_PURITY_30 3 388 | FIG_ACCENTED_PURITY_30 3 389 | CHORD_BIGRAM_maj6_maj_5 9 390 | CHORD_BIGRAM_maj7_maj6_2 1 391 | CHORD_BIGRAM_maj_maj6_2 10 392 | FIG_ACCENT_ROOT_COVERED_80 36 393 | CHORD_BIGRAM_maj_min7_10 12 394 | CHORD_BIGRAM_min6_maj_9 11 395 | ACCENT_THIRD_COVERED_100 10 396 | CHORD_BIGRAM_maj_maj_11 3 397 | CHORD_BIGRAM_maj_maj_3 7 398 | SEGMENT_DURATION_THIRD_COVERED_30 6 399 | CHORD_BIGRAM_maj_min_0 4 400 | ACCENT_BASS_IS_ROOT_50 24 401 | FIG_ACCENT_BASS_IS_ROOT_50 24 402 | CHORD_BIGRAM_dim7_min_4 3 403 | CHORD_BIGRAM_min_dim7_6 2 404 | CHORD_BIGRAM_maj7_min_2 8 405 | DURATION_ROOT_COVERED_80 27 406 | FIG_DURATION_ROOT_COVERED_80 31 407 | ACCENT_ROOT_COVERED_80 24 408 | SEGMENT_DURATION_FIFTH_COVERED_20 2 409 | CHORD_BIGRAM_min_maj7_2 7 410 | CHORD_BIGRAM_dim_min_2 4 411 | CHORD_BIGRAM_dim7_maj_8 2 412 | CHORD_BIGRAM_maj_dim7_8 1 413 | CHORD_BIGRAM_maj_dim7_4 1 414 | FIG_DURATION_ROOT_COVERED_90 3 415 | CHORD_BIGRAM_maj7_maj_9 6 416 | CHORD_BIGRAM_min_maj_4 15 417 | CHORD_BIGRAM_min_min_2 11 418 | CHORD_BIGRAM_maj_maj_4 21 419 | ACCENT_FIFTH_COVERED_60 11 420 | ACCENT_BASS_IS_ADDED_NOTE_70 8 421 | FIG_ACCENT_BASS_IS_ADDED_NOTE_70 8 422 | CHORD_BIGRAM_min_min_1 1 423 | DURATION_PURITY_30 6 424 | CHORD_BIGRAM_min_min_9 3 425 | FIG_PURITY_70 26 426 | FIG_DURATION_PURITY_70 26 427 | SEGMENT_DURATION_ADDED_NOTE_COVERED_30 1 428 | DURATION_BASS_IS_ADDED_NOTE_30 3 429 | FIG_DURATION_BASS_IS_ADDED_NOTE_30 3 430 | CHORD_BIGRAM_maj4_maj7_0 2 431 | FIG_ACCENT_BASS_IS_ROOT_20 51 432 | FIG_DURATION_FIFTH_COVERED_80 2 433 | CHORD_BIGRAM_min7_maj_9 8 434 | ACCENTED_PURITY_60 31 435 | DURATION_BASS_IS_FIFTH_20 6 436 | FIG_DURATION_BASS_IS_FIFTH_20 6 437 | SEGMENT_DURATION_ROOT_COVERED_60 1 438 | SEGMENT_DURATION_THIRD_COVERED_60 1 439 | CHORD_BIGRAM_maj7_maj7_2 3 440 | ADDED_NOTE_NOT_COVERED 2 441 | CHORD_BIGRAM_maj7_maj7_7 1 442 | DURATION_BASS_IS_ROOT_40 16 443 | FIG_DURATION_BASS_IS_ROOT_40 16 444 | DURATION_THIRD_COVERED_70 3 445 | CHORD_BIGRAM_min_dim_10 5 446 | CHORD_BIGRAM_maj4_min_7 7 447 | CHORD_BIGRAM_maj_min6_7 2 448 | ACCENT_BASS_IS_ADDED_NOTE_80 4 449 | FIG_ACCENT_BASS_IS_ADDED_NOTE_80 4 450 | CHORD_BIGRAM_maj_maj7_0 2 451 | CHORD_BIGRAM_dim_min_9 3 452 | CHORD_BIGRAM_dim7_maj_11 4 453 | CHORD_BIGRAM_maj_dim7_1 6 454 | ACCENT_BASS_IS_FIFTH_90 8 455 | FIG_ACCENT_BASS_IS_FIFTH_90 8 456 | CHORD_BIGRAM_min_min_10 10 457 | CHORD_BIGRAM_min_dim7_10 2 458 | CHORD_BIGRAM_maj4_min_5 1 459 | CHORD_BIGRAM_maj7_maj4_0 11 460 | ACCENT_THIRD_COVERED_90 1 461 | CHORD_BIGRAM_min_min7_10 2 462 | CHORD_BIGRAM_maj_dim_5 1 463 | CHORD_BIGRAM_maj7_maj_4 4 464 | CHORD_BIGRAM_min6_maj7_5 1 465 | CHORD_BIGRAM_min_min6_5 1 466 | CHORD_BIGRAM_maj4_min_2 3 467 | SEGMENT_DURATION_FIFTH_COVERED_30 6 468 | CHORD_BIGRAM_min6_min_0 6 469 | CHORD_BIGRAM_maj_min6_10 5 470 | SEGMENT_DURATION_ADDED_NOTE_COVERED_80 7 471 | ACCENT_BASS_IS_ADDED_NOTE_20 6 472 | FIG_ACCENT_BASS_IS_ADDED_NOTE_20 6 473 | CHORD_BIGRAM_min7_min7_5 1 474 | CHORD_BIGRAM_maj_min_9 1 475 | CHORD_BIGRAM_maj_maj_6 3 476 | CHORD_BIGRAM_min6_min_3 1 477 | CHORD_BIGRAM_maj7_maj7_5 5 478 | CHORD_BIGRAM_min_maj7_9 3 479 | CHORD_BIGRAM_dim_maj_4 1 480 | CHORD_BIGRAM_maj_maj7_1 5 481 | CHORD_BIGRAM_maj_maj7_9 1 482 | CHORD_BIGRAM_dim_maj_3 1 483 | ACCENT_BASS_IS_FIFTH_80 5 484 | FIG_ACCENT_BASS_IS_FIFTH_80 6 485 | CHORD_BIGRAM_dim7_min_2 2 486 | CHORD_BIGRAM_maj7_dim7_10 1 487 | CHORD_BIGRAM_maj7_min_3 5 488 | SEGMENT_DURATION_FIFTH_COVERED_90 14 489 | DURATION_BASS_IS_THIRD_20 16 490 | FIG_DURATION_BASS_IS_THIRD_20 16 491 | CHORD_BIGRAM_maj7_min_0 2 492 | CHORD_BIGRAM_min6_min7_5 1 493 | CHORD_BIGRAM_min_maj_6 1 494 | CHORD_BIGRAM_maj_dim7_5 3 495 | DURATION_BASS_IS_THIRD_10 2 496 | FIG_DURATION_BASS_IS_THIRD_10 2 497 | CHORD_BIGRAM_maj_dim_8 1 498 | PURITY_30 3 499 | FIG_PURITY_30 2 500 | FIG_DURATION_PURITY_30 2 501 | CHORD_BIGRAM_dim_min7_4 1 502 | CHORD_BIGRAM_maj7_maj_5 1 503 | ACCENT_ROOT_COVERED_100 7 504 | FIG_ACCENT_ROOT_COVERED_100 7 505 | CHORD_BIGRAM_dim6_maj4_1 1 506 | CHORD_BIGRAM_min_dim6_1 1 507 | CHORD_BIGRAM_dim7_min_6 1 508 | CHORD_BIGRAM_dim_min6_11 1 509 | CHORD_BIGRAM_maj4_min6_2 1 510 | CHORD_BIGRAM_maj7_maj_3 2 511 | ACCENT_FIFTH_COVERED_100 5 512 | FIG_ACCENT_FIFTH_COVERED_100 6 513 | CHORD_BIGRAM_dim7_maj_1 1 514 | SEGMENT_DURATION_THIRD_COVERED_40 4 515 | SEGMENT_DURATION_ROOT_COVERED_30 5 516 | PURITY_0 1 517 | ACCENTED_PURITY_0 1 518 | DURATION_PURITY_0 1 519 | FIG_PURITY_0 1 520 | FIG_ACCENTED_PURITY_0 1 521 | FIG_DURATION_PURITY_0 1 522 | CHORD_BIGRAM_min_maj_11 5 523 | CHORD_BIGRAM_min_maj7_10 1 524 | CHORD_BIGRAM_min_min_3 1 525 | ACCENTED_PURITY_40 9 526 | DURATION_ROOT_COVERED_90 1 527 | ACCENT_ROOT_COVERED_90 1 528 | FIG_ACCENT_ROOT_COVERED_90 1 529 | FIG_ACCENT_ADDED_NOTE_COVERED_60 1 530 | CHORD_BIGRAM_maj4_min7_5 4 531 | CHORD_BIGRAM_maj_min6_3 2 532 | CHORD_BIGRAM_maj_maj4_5 2 533 | ACCENTED_PURITY_10 3 534 | FIG_ACCENTED_PURITY_10 3 535 | FIG_PURITY_40 4 536 | FIG_DURATION_PURITY_40 4 537 | BEGINNING_ACCENTED_0.0625 2 538 | CHORD_BIGRAM_maj_dim_6 1 539 | DURATION_BASS_IS_FIFTH_80 1 540 | FIG_DURATION_BASS_IS_FIFTH_80 1 541 | CHORD_BIGRAM_dim_min_6 2 542 | FIG_ACCENTED_PURITY_40 2 543 | CHORD_BIGRAM_dim6_min_8 1 544 | CHORD_BIGRAM_maj_dim6_0 1 545 | CHORD_BIGRAM_maj7_dim_5 1 546 | CHORD_BIGRAM_maj7_maj_11 1 547 | CHORD_BIGRAM_min_min6_2 3 548 | CHORD_BIGRAM_min6_min_10 1 549 | CHORD_BIGRAM_maj4_maj_2 1 550 | DURATION_FIFTH_COVERED_80 1 551 | ACCENT_BASS_IS_ADDED_NOTE_90 2 552 | FIG_ACCENT_BASS_IS_ADDED_NOTE_90 2 553 | CHORD_BIGRAM_maj_maj7_3 1 554 | DURATION_PURITY_40 4 555 | CHORD_BIGRAM_min7_maj7_0 1 556 | CHORD_BIGRAM_min_min7_5 6 557 | CHORD_BIGRAM_min7_min_10 2 558 | CHORD_BIGRAM_min7_maj7_2 1 559 | CHORD_BIGRAM_min_maj6_9 1 560 | CHORD_BIGRAM_maj4_maj6_2 1 561 | CHORD_BIGRAM_maj4_dim_1 1 562 | CHORD_BIGRAM_maj6_maj_0 4 563 | CHORD_BIGRAM_dim_maj7_6 2 564 | DURATION_BASS_IS_THIRD_80 1 565 | ACCENT_BASS_IS_THIRD_100 1 566 | FIG_DURATION_BASS_IS_THIRD_80 1 567 | FIG_ACCENT_BASS_IS_THIRD_100 1 568 | SEGMENT_DURATION_FIFTH_COVERED_40 1 569 | CHORD_BIGRAM_maj4_min_10 3 570 | ACCENT_ADDED_NOTE_COVERED_60 2 571 | FIG_ACCENT_ADDED_NOTE_COVERED_70 2 572 | CHORD_BIGRAM_min7_maj7_9 2 573 | CHORD_BIGRAM_min7_min_9 1 574 | CHORD_BIGRAM_dim_min_0 1 575 | CHORD_BIGRAM_maj7_dim_8 1 576 | CHORD_BIGRAM_dim6_maj_7 1 577 | CHORD_BIGRAM_maj7_dim6_7 1 578 | ACCENT_BASS_IS_ADDED_NOTE_60 1 579 | FIG_ACCENT_BASS_IS_ADDED_NOTE_60 1 580 | CHORD_BIGRAM_maj7_maj_1 1 581 | CHORD_BIGRAM_dim_min_7 1 582 | CHORD_BIGRAM_maj_dim_10 1 583 | CHORD_BIGRAM_maj4_maj_0 1 584 | CHORD_BIGRAM_dim7_min_9 1 585 | CHORD_BIGRAM_dim7_min_7 1 586 | CHORD_BIGRAM_min6_min_7 1 587 | CHORD_BIGRAM_dim7_maj_5 2 588 | CHORD_BIGRAM_maj7_dim7_1 2 589 | CHORD_BIGRAM_maj7_maj7_9 1 590 | CHORD_BIGRAM_dim_min_5 1 591 | CHORD_BIGRAM_maj_dim_2 1 592 | SEGMENT_DURATION_ROOT_COVERED_40 1 593 | DURATION_BASS_IS_FIFTH_70 1 594 | FIG_DURATION_BASS_IS_FIFTH_70 1 595 | -------------------------------------------------------------------------------- /sample_output_files/feature_count9.txt: -------------------------------------------------------------------------------- 1 | PURITY_90 249 2 | ACCENTED_PURITY_100 601 3 | DURATION_PURITY_90 857 4 | FIG_PURITY_101 2318 5 | FIG_ACCENTED_PURITY_101 2318 6 | FIG_DURATION_PURITY_101 2318 7 | ROOT_COVERED 2766 8 | THIRD_COVERED 2722 9 | FIFTH_COVERED 2697 10 | ALL_NOTES_COVERED 2593 11 | DURATION_ROOT_COVERED_50 894 12 | FIG_DURATION_ROOT_COVERED_60 231 13 | SEGMENT_DURATION_ROOT_COVERED_101 2459 14 | DURATION_THIRD_COVERED_20 570 15 | FIG_DURATION_THIRD_COVERED_30 1548 16 | SEGMENT_DURATION_THIRD_COVERED_101 2306 17 | DURATION_FIFTH_COVERED_20 608 18 | FIG_DURATION_FIFTH_COVERED_30 1565 19 | SEGMENT_DURATION_FIFTH_COVERED_101 2335 20 | ACCENT_ROOT_COVERED_60 169 21 | FIG_ACCENT_ROOT_COVERED_60 186 22 | ACCENT_THIRD_COVERED_20 319 23 | FIG_ACCENT_THIRD_COVERED_20 252 24 | ACCENT_FIFTH_COVERED_20 409 25 | FIG_ACCENT_FIFTH_COVERED_20 293 26 | DURATION_ADDED_NOTE_COVERED_0 2348 27 | FIG_DURATION_ADDED_NOTE_COVERED_0 2348 28 | SEGMENT_DURATION_ADDED_NOTE_COVERED_0 2348 29 | ACCENT_ADDED_NOTE_COVERED_0 2348 30 | FIG_ACCENT_ADDED_NOTE_COVERED_0 2349 31 | BEGINNING_ACCENTED_0.25 978 32 | FIRST_BASS_IS_ROOT 1781 33 | FIG_FIRST_BASS_IS_ROOT 1783 34 | SEGMENT_BASS_IS_ROOT 1662 35 | FIG_SEGMENT_BASS_IS_ROOT 1839 36 | DURATION_BASS_IS_ROOT_101 1405 37 | DURATION_BASS_IS_THIRD_0 1903 38 | DURATION_BASS_IS_FIFTH_0 2633 39 | DURATION_BASS_IS_ADDED_NOTE_0 2721 40 | ACCENT_BASS_IS_ROOT_101 1405 41 | ACCENT_BASS_IS_THIRD_0 1903 42 | ACCENT_BASS_IS_FIFTH_0 2633 43 | ACCENT_BASS_IS_ADDED_NOTE_0 2721 44 | FIG_DURATION_BASS_IS_ROOT_101 1406 45 | FIG_DURATION_BASS_IS_THIRD_0 1901 46 | FIG_DURATION_BASS_IS_FIFTH_0 2631 47 | FIG_DURATION_BASS_IS_ADDED_NOTE_0 2721 48 | FIG_ACCENT_BASS_IS_ROOT_101 1406 49 | FIG_ACCENT_BASS_IS_THIRD_0 1901 50 | FIG_ACCENT_BASS_IS_FIFTH_0 2631 51 | FIG_ACCENT_BASS_IS_ADDED_NOTE_0 2721 52 | CHORD_BIGRAM_maj_min_3 32 53 | PURITY_80 839 54 | DURATION_PURITY_80 322 55 | DURATION_ROOT_COVERED_10 34 56 | FIG_DURATION_ROOT_COVERED_20 254 57 | SEGMENT_DURATION_ROOT_COVERED_50 230 58 | DURATION_THIRD_COVERED_50 188 59 | FIG_DURATION_THIRD_COVERED_70 18 60 | ACCENT_ROOT_COVERED_20 176 61 | FIG_ACCENT_ROOT_COVERED_20 108 62 | ACCENT_THIRD_COVERED_60 27 63 | FIG_ACCENT_THIRD_COVERED_60 32 64 | BEGINNING_ACCENTED_1.0 858 65 | FIRST_BASS_IS_THIRD 734 66 | FIG_FIRST_BASS_IS_THIRD 736 67 | SEGMENT_BASS_IS_THIRD 655 68 | FIG_SEGMENT_BASS_IS_THIRD 688 69 | DURATION_BASS_IS_ROOT_0 887 70 | DURATION_BASS_IS_THIRD_101 510 71 | ACCENT_BASS_IS_ROOT_0 887 72 | ACCENT_BASS_IS_THIRD_101 510 73 | FIG_DURATION_BASS_IS_ROOT_0 886 74 | FIG_DURATION_BASS_IS_THIRD_101 510 75 | FIG_ACCENT_BASS_IS_ROOT_0 886 76 | FIG_ACCENT_BASS_IS_THIRD_101 510 77 | CHORD_BIGRAM_maj_maj_5 493 78 | ACCENTED_PURITY_90 453 79 | DURATION_ROOT_COVERED_40 655 80 | FIG_DURATION_ROOT_COVERED_50 1131 81 | DURATION_THIRD_COVERED_30 1529 82 | FIG_DURATION_THIRD_COVERED_40 263 83 | DURATION_FIFTH_COVERED_10 67 84 | FIG_DURATION_FIFTH_COVERED_20 506 85 | SEGMENT_DURATION_FIFTH_COVERED_50 274 86 | ACCENT_ROOT_COVERED_40 289 87 | FIG_ACCENT_ROOT_COVERED_40 288 88 | ACCENT_THIRD_COVERED_40 331 89 | FIG_ACCENT_THIRD_COVERED_40 322 90 | CHORD_BIGRAM_maj_maj_7 283 91 | PURITY_70 258 92 | DURATION_ROOT_COVERED_30 703 93 | FIG_DURATION_ROOT_COVERED_40 428 94 | SEGMENT_DURATION_ROOT_COVERED_80 52 95 | SEGMENT_DURATION_THIRD_COVERED_80 90 96 | DURATION_FIFTH_COVERED_30 1551 97 | FIG_DURATION_FIFTH_COVERED_40 320 98 | ACCENT_ROOT_COVERED_30 762 99 | FIG_ACCENT_ROOT_COVERED_30 753 100 | FIG_ACCENT_THIRD_COVERED_50 435 101 | ACCENT_FIFTH_COVERED_30 1649 102 | FIG_ACCENT_FIFTH_COVERED_30 1688 103 | BEGINNING_ACCENTED_0.5 903 104 | DURATION_BASS_IS_ROOT_50 365 105 | DURATION_BASS_IS_THIRD_30 78 106 | ACCENT_BASS_IS_ROOT_40 53 107 | ACCENT_BASS_IS_THIRD_50 20 108 | FIG_DURATION_BASS_IS_ROOT_50 365 109 | FIG_DURATION_BASS_IS_THIRD_30 78 110 | FIG_ACCENT_BASS_IS_ROOT_40 53 111 | FIG_ACCENT_BASS_IS_THIRD_50 20 112 | DURATION_PURITY_100 160 113 | DURATION_ROOT_COVERED_70 29 114 | FIG_DURATION_ROOT_COVERED_70 59 115 | FIG_DURATION_THIRD_COVERED_20 474 116 | ACCENT_THIRD_COVERED_30 1585 117 | FIG_ACCENT_THIRD_COVERED_30 1564 118 | CHORD_BIGRAM_min7_maj_2 33 119 | PURITY_101 1321 120 | ACCENTED_PURITY_101 1321 121 | DURATION_PURITY_101 1321 122 | ADDED_NOTE_COVERED 453 123 | FIG_DURATION_THIRD_COVERED_50 315 124 | DURATION_FIFTH_COVERED_0 104 125 | FIG_DURATION_FIFTH_COVERED_0 104 126 | SEGMENT_DURATION_FIFTH_COVERED_0 104 127 | ACCENT_ROOT_COVERED_50 1162 128 | FIG_ACCENT_ROOT_COVERED_50 1198 129 | ACCENT_THIRD_COVERED_50 354 130 | ACCENT_FIFTH_COVERED_0 104 131 | FIG_ACCENT_FIFTH_COVERED_0 105 132 | DURATION_ADDED_NOTE_COVERED_10 16 133 | FIG_DURATION_ADDED_NOTE_COVERED_10 13 134 | SEGMENT_DURATION_ADDED_NOTE_COVERED_101 390 135 | ACCENT_ADDED_NOTE_COVERED_10 58 136 | FIG_ACCENT_ADDED_NOTE_COVERED_10 57 137 | CHORD_BIGRAM_maj7_min7_5 4 138 | DURATION_ADDED_NOTE_GREATER_THAN_ROOT 112 139 | DURATION_ROOT_COVERED_20 287 140 | ACCENT_FIFTH_COVERED_10 197 141 | FIG_ACCENT_FIFTH_COVERED_10 192 142 | DURATION_ADDED_NOTE_COVERED_50 6 143 | FIG_DURATION_ADDED_NOTE_COVERED_50 9 144 | BEGINNING_ACCENTED_0.125 60 145 | FIRST_BASS_IS_FIFTH 111 146 | FIG_FIRST_BASS_IS_FIFTH 113 147 | SEGMENT_BASS_IS_FIFTH 130 148 | FIG_SEGMENT_BASS_IS_FIFTH 140 149 | DURATION_BASS_IS_FIFTH_101 84 150 | ACCENT_BASS_IS_FIFTH_101 84 151 | FIG_DURATION_BASS_IS_FIFTH_101 84 152 | FIG_ACCENT_BASS_IS_FIFTH_101 84 153 | CHORD_BIGRAM_maj_maj7_10 3 154 | DURATION_FIFTH_COVERED_70 13 155 | FIG_DURATION_FIFTH_COVERED_70 18 156 | ACCENT_ROOT_COVERED_10 127 157 | FIG_ACCENT_ROOT_COVERED_10 118 158 | ACCENT_FIFTH_COVERED_80 3 159 | FIG_ACCENT_FIFTH_COVERED_80 3 160 | DURATION_ROOT_COVERED_60 139 161 | CHORD_BIGRAM_min_maj_2 68 162 | FIG_PURITY_90 259 163 | FIG_ACCENTED_PURITY_100 208 164 | FIG_DURATION_PURITY_90 259 165 | CHORD_BIGRAM_min_min_7 53 166 | SEGMENT_DURATION_FIFTH_COVERED_80 48 167 | DURATION_BASS_IS_ROOT_80 27 168 | ACCENT_BASS_IS_ROOT_90 85 169 | FIG_DURATION_BASS_IS_ROOT_80 27 170 | FIG_ACCENT_BASS_IS_ROOT_90 85 171 | CHORD_BIGRAM_min_min_5 66 172 | DURATION_THIRD_COVERED_60 24 173 | FIG_DURATION_THIRD_COVERED_60 67 174 | FIG_DURATION_FIFTH_COVERED_10 28 175 | ACCENT_THIRD_COVERED_70 7 176 | FIG_ACCENT_THIRD_COVERED_70 16 177 | CHORD_BIGRAM_dim_min_11 15 178 | PURITY_50 33 179 | ACCENTED_PURITY_70 38 180 | DURATION_PURITY_50 23 181 | SEGMENT_DURATION_THIRD_COVERED_50 271 182 | DURATION_BASS_IS_THIRD_50 269 183 | ACCENT_BASS_IS_THIRD_70 82 184 | FIG_DURATION_BASS_IS_THIRD_50 271 185 | FIG_ACCENT_BASS_IS_THIRD_70 82 186 | CHORD_BIGRAM_dim7_dim_0 2 187 | FIG_DURATION_ADDED_NOTE_COVERED_20 146 188 | SEGMENT_DURATION_ADDED_NOTE_COVERED_50 57 189 | ACCENT_ADDED_NOTE_COVERED_20 66 190 | FIG_ACCENT_ADDED_NOTE_COVERED_20 57 191 | CHORD_BIGRAM_min_dim7_1 11 192 | DURATION_THIRD_COVERED_10 61 193 | CHORD_BIGRAM_min7_min_5 16 194 | FIG_DURATION_THIRD_COVERED_10 35 195 | DURATION_ADDED_NOTE_COVERED_20 154 196 | CHORD_BIGRAM_maj_min7_2 7 197 | FIG_ACCENTED_PURITY_90 85 198 | ACCENT_FIFTH_COVERED_40 189 199 | FIG_ACCENT_FIFTH_COVERED_40 234 200 | CHORD_BIGRAM_min_maj_5 161 201 | PURITY_60 80 202 | DURATION_PURITY_70 90 203 | SEGMENT_DURATION_ROOT_COVERED_70 7 204 | DURATION_THIRD_COVERED_40 349 205 | SEGMENT_DURATION_FIFTH_COVERED_70 18 206 | DURATION_BASS_IS_THIRD_70 4 207 | ACCENT_BASS_IS_THIRD_90 51 208 | FIG_DURATION_BASS_IS_THIRD_70 4 209 | FIG_ACCENT_BASS_IS_THIRD_90 53 210 | FIG_PURITY_100 95 211 | FIG_DURATION_PURITY_100 95 212 | ACCENTED_PURITY_80 313 213 | FIG_DURATION_ROOT_COVERED_30 618 214 | FIG_DURATION_ADDED_NOTE_COVERED_30 239 215 | CHORD_BIGRAM_min_min7_0 3 216 | CHORD_BIGRAM_maj_min_2 38 217 | ACCENT_BASS_IS_ROOT_70 129 218 | FIG_ACCENT_BASS_IS_ROOT_70 130 219 | DURATION_FIFTH_COVERED_40 276 220 | FIG_DURATION_FIFTH_COVERED_50 204 221 | CHORD_BIGRAM_maj7_min_7 11 222 | FIG_PURITY_80 76 223 | FIG_ACCENTED_PURITY_70 19 224 | FIG_DURATION_PURITY_80 76 225 | ACCENT_BASS_IS_THIRD_40 62 226 | FIG_ACCENT_BASS_IS_THIRD_40 62 227 | CHORD_BIGRAM_min_maj7_5 59 228 | CHORD_BIGRAM_maj_maj_1 8 229 | CHORD_BIGRAM_maj_maj_2 59 230 | FIG_ACCENT_FIFTH_COVERED_50 249 231 | DURATION_BASS_IS_ROOT_30 54 232 | ACCENT_BASS_IS_ROOT_60 12 233 | ACCENT_BASS_IS_THIRD_30 27 234 | FIG_DURATION_BASS_IS_ROOT_30 54 235 | FIG_ACCENT_BASS_IS_ROOT_60 12 236 | FIG_ACCENT_BASS_IS_THIRD_30 27 237 | CHORD_BIGRAM_maj7_maj_2 39 238 | CHORD_BIGRAM_maj_maj7_2 7 239 | DURATION_BASS_IS_FIFTH_30 24 240 | ACCENT_BASS_IS_FIFTH_30 1 241 | FIG_DURATION_BASS_IS_FIFTH_30 24 242 | FIG_ACCENT_BASS_IS_FIFTH_30 1 243 | CHORD_BIGRAM_maj_min_10 88 244 | CHORD_BIGRAM_min_maj_7 20 245 | CHORD_BIGRAM_maj_min_5 41 246 | ACCENT_BASS_IS_ROOT_80 101 247 | ACCENT_BASS_IS_THIRD_10 7 248 | FIG_ACCENT_BASS_IS_ROOT_80 101 249 | FIG_ACCENT_BASS_IS_THIRD_10 7 250 | CHORD_BIGRAM_maj_min_7 77 251 | CHORD_BIGRAM_maj_maj_8 5 252 | DURATION_ADDED_NOTE_COVERED_40 39 253 | ACCENT_ADDED_NOTE_COVERED_40 32 254 | FIG_ACCENT_ADDED_NOTE_COVERED_40 42 255 | FIRST_BASS_IS_ADDED_NOTE 67 256 | FIG_FIRST_BASS_IS_ADDED_NOTE 67 257 | SEGMENT_BASS_IS_ADDED_NOTE 69 258 | FIG_SEGMENT_BASS_IS_ADDED_NOTE 69 259 | DURATION_BASS_IS_ADDED_NOTE_101 51 260 | ACCENT_BASS_IS_ADDED_NOTE_101 51 261 | FIG_DURATION_BASS_IS_ADDED_NOTE_101 51 262 | FIG_ACCENT_BASS_IS_ADDED_NOTE_101 51 263 | CHORD_BIGRAM_maj_maj7_5 126 264 | FIG_ACCENT_THIRD_COVERED_80 5 265 | ACCENT_BASS_IS_THIRD_80 60 266 | FIG_ACCENT_BASS_IS_THIRD_80 60 267 | ACCENT_BASS_IS_ROOT_20 49 268 | ACCENTED_PURITY_50 22 269 | DURATION_PURITY_60 17 270 | FIG_ACCENTED_PURITY_60 17 271 | DURATION_ROOT_COVERED_0 35 272 | FIG_DURATION_ROOT_COVERED_0 35 273 | SEGMENT_DURATION_ROOT_COVERED_0 35 274 | ACCENT_ROOT_COVERED_0 35 275 | FIG_ACCENT_ROOT_COVERED_0 35 276 | DURATION_BASS_IS_FIFTH_50 47 277 | ACCENT_BASS_IS_FIFTH_40 16 278 | FIG_DURATION_BASS_IS_FIFTH_50 49 279 | FIG_ACCENT_BASS_IS_FIFTH_40 16 280 | CHORD_BIGRAM_maj6_min_8 1 281 | CHORD_BIGRAM_maj_maj6_7 1 282 | FIG_PURITY_60 16 283 | FIG_DURATION_PURITY_60 16 284 | FIG_ACCENT_ROOT_COVERED_70 80 285 | CHORD_BIGRAM_min6_maj_2 1 286 | CHORD_BIGRAM_maj_min6_2 20 287 | ACCENT_BASS_IS_FIFTH_20 26 288 | FIG_ACCENT_BASS_IS_FIFTH_20 26 289 | CHORD_BIGRAM_dim_maj_6 20 290 | DURATION_FIFTH_COVERED_50 164 291 | ACCENT_FIFTH_COVERED_50 229 292 | CHORD_BIGRAM_maj_dim_1 23 293 | ACCENT_ROOT_COVERED_70 54 294 | CHORD_BIGRAM_maj7_maj_0 48 295 | DURATION_THIRD_COVERED_0 79 296 | FIG_DURATION_THIRD_COVERED_0 79 297 | SEGMENT_DURATION_THIRD_COVERED_0 79 298 | ACCENT_THIRD_COVERED_0 79 299 | FIG_ACCENT_THIRD_COVERED_0 80 300 | DURATION_ADDED_NOTE_COVERED_30 238 301 | ACCENT_ADDED_NOTE_COVERED_30 262 302 | FIG_ACCENT_ADDED_NOTE_COVERED_30 259 303 | CHORD_BIGRAM_dim_maj_11 7 304 | ACCENT_THIRD_COVERED_10 85 305 | FIG_ACCENT_THIRD_COVERED_10 80 306 | PURITY_100 8 307 | DURATION_BASS_IS_ROOT_70 13 308 | DURATION_BASS_IS_THIRD_40 20 309 | FIG_DURATION_BASS_IS_ROOT_70 13 310 | FIG_DURATION_BASS_IS_THIRD_40 20 311 | CHORD_BIGRAM_min_maj_9 80 312 | DURATION_FIFTH_COVERED_60 16 313 | FIG_DURATION_FIFTH_COVERED_60 53 314 | CHORD_BIGRAM_min7_min_0 12 315 | FIG_ACCENT_ADDED_NOTE_COVERED_50 16 316 | CHORD_BIGRAM_maj7_min7_10 4 317 | CHORD_BIGRAM_maj7_maj_7 21 318 | ACCENT_ADDED_NOTE_COVERED_50 15 319 | FIG_ACCENTED_PURITY_80 126 320 | SEGMENT_DURATION_THIRD_COVERED_90 22 321 | DURATION_BASS_IS_ROOT_90 24 322 | ACCENT_BASS_IS_ROOT_100 22 323 | FIG_DURATION_BASS_IS_ROOT_90 24 324 | FIG_ACCENT_BASS_IS_ROOT_100 22 325 | CHORD_BIGRAM_maj_maj_9 23 326 | ACCENT_BASS_IS_FIFTH_10 11 327 | FIG_ACCENT_BASS_IS_FIFTH_10 11 328 | CHORD_BIGRAM_min6_min_5 21 329 | CHORD_BIGRAM_maj7_min6_2 7 330 | CHORD_BIGRAM_min_min6_7 3 331 | FIG_DURATION_ADDED_NOTE_COVERED_40 46 332 | CHORD_BIGRAM_min_maj_10 2 333 | ACCENT_FIFTH_COVERED_70 6 334 | FIG_ACCENT_FIFTH_COVERED_70 14 335 | ACCENT_BASS_IS_ROOT_30 31 336 | FIG_ACCENT_BASS_IS_ROOT_30 31 337 | CHORD_BIGRAM_min7_min_2 5 338 | FIG_DURATION_THIRD_COVERED_80 2 339 | CHORD_BIGRAM_maj_min7_3 1 340 | ACCENT_BASS_IS_FIFTH_50 5 341 | FIG_ACCENT_BASS_IS_FIFTH_50 5 342 | ACCENT_ADDED_NOTE_COVERED_100 20 343 | FIG_ACCENT_ADDED_NOTE_COVERED_100 20 344 | PURITY_40 8 345 | FIG_PURITY_50 8 346 | FIG_ACCENTED_PURITY_50 18 347 | FIG_DURATION_PURITY_50 8 348 | CHORD_BIGRAM_maj_min7_8 3 349 | CHORD_BIGRAM_dim7_maj_6 5 350 | CHORD_BIGRAM_maj4_maj_7 22 351 | CHORD_BIGRAM_maj_maj4_0 37 352 | FIG_ACCENT_THIRD_COVERED_100 15 353 | FIG_DURATION_ROOT_COVERED_10 14 354 | SEGMENT_DURATION_ROOT_COVERED_90 11 355 | DURATION_BASS_IS_FIFTH_40 6 356 | FIG_DURATION_BASS_IS_FIFTH_40 6 357 | CHORD_BIGRAM_maj_min_1 23 358 | CHORD_BIGRAM_maj_min7_5 28 359 | ACCENT_THIRD_COVERED_80 1 360 | FIG_ACCENT_FIFTH_COVERED_60 17 361 | CHORD_BIGRAM_maj7_min_5 25 362 | SEGMENT_DURATION_THIRD_COVERED_70 22 363 | DURATION_BASS_IS_ROOT_20 10 364 | ACCENT_BASS_IS_THIRD_60 28 365 | FIG_DURATION_BASS_IS_ROOT_20 10 366 | FIG_ACCENT_BASS_IS_THIRD_60 28 367 | CHORD_BIGRAM_maj_maj_10 21 368 | CHORD_BIGRAM_maj_min_8 33 369 | ACCENT_BASS_IS_THIRD_20 50 370 | FIG_ACCENT_BASS_IS_THIRD_20 50 371 | CHORD_BIGRAM_dim_maj_8 2 372 | CHORD_BIGRAM_min_dim_1 24 373 | CHORD_BIGRAM_dim7_min_11 7 374 | CHORD_BIGRAM_min_maj_0 6 375 | CHORD_BIGRAM_maj7_min_10 7 376 | DURATION_BASS_IS_ADDED_NOTE_50 26 377 | ACCENT_BASS_IS_ADDED_NOTE_40 8 378 | FIG_DURATION_BASS_IS_ADDED_NOTE_50 26 379 | FIG_ACCENT_BASS_IS_ADDED_NOTE_40 8 380 | ACCENT_BASS_IS_ROOT_10 2 381 | FIG_ACCENT_BASS_IS_ROOT_10 2 382 | CHORD_BIGRAM_maj7_dim7_8 1 383 | CHORD_BIGRAM_min4_min_7 1 384 | ACCENT_BASS_IS_FIFTH_70 10 385 | FIG_ACCENT_BASS_IS_FIFTH_70 11 386 | CHORD_BIGRAM_maj_min4_7 1 387 | CHORD_BIGRAM_min_maj_11 9 388 | CHORD_BIGRAM_min_min7_5 12 389 | CHORD_BIGRAM_min7_maj_11 1 390 | CHORD_BIGRAM_min7_min7_5 2 391 | CHORD_BIGRAM_min6_maj_9 14 392 | ACCENT_BASS_IS_ADDED_NOTE_20 6 393 | FIG_ACCENT_BASS_IS_ADDED_NOTE_20 6 394 | ACCENTED_PURITY_60 35 395 | CHORD_BIGRAM_min_min_2 12 396 | SEGMENT_DURATION_FIFTH_COVERED_90 15 397 | CHORD_BIGRAM_maj7_maj_4 6 398 | DURATION_BASS_IS_ROOT_40 16 399 | FIG_DURATION_BASS_IS_ROOT_40 16 400 | CHORD_BIGRAM_maj7_min_2 10 401 | CHORD_BIGRAM_dim_min_2 5 402 | CHORD_BIGRAM_maj_maj7_1 5 403 | DURATION_BASS_IS_THIRD_20 14 404 | ACCENT_BASS_IS_FIFTH_60 3 405 | FIG_DURATION_BASS_IS_THIRD_20 14 406 | FIG_ACCENT_BASS_IS_FIFTH_60 3 407 | CHORD_BIGRAM_maj4_min_7 10 408 | CHORD_BIGRAM_maj_maj7_9 2 409 | FIG_ACCENT_BASS_IS_ROOT_20 48 410 | CHORD_BIGRAM_min6_maj_5 1 411 | CHORD_BIGRAM_min_min6_0 2 412 | CHORD_BIGRAM_maj_min7_10 13 413 | CHORD_BIGRAM_dim7_min_3 1 414 | CHORD_BIGRAM_maj_dim7_4 2 415 | CHORD_BIGRAM_dim7_dim7_9 1 416 | ACCENTED_PURITY_10 5 417 | CHORD_BIGRAM_min_dim7_4 1 418 | CHORD_BIGRAM_dim6_dim_3 1 419 | CHORD_BIGRAM_dim_dim6_6 1 420 | CHORD_BIGRAM_min_dim_4 1 421 | CHORD_BIGRAM_maj7_maj_5 3 422 | DURATION_ROOT_COVERED_80 24 423 | FIG_DURATION_ROOT_COVERED_80 28 424 | DURATION_FIFTH_COVERED_80 2 425 | FIG_DURATION_FIFTH_COVERED_80 3 426 | CHORD_BIGRAM_maj_maj_11 6 427 | ACCENT_BASS_IS_ROOT_50 25 428 | FIG_ACCENT_BASS_IS_ROOT_50 25 429 | CHORD_BIGRAM_dim7_min_2 3 430 | CHORD_BIGRAM_min_dim7_3 1 431 | FIG_ACCENTED_PURITY_10 4 432 | CHORD_BIGRAM_min_maj_4 16 433 | CHORD_BIGRAM_maj7_maj_11 3 434 | ACCENT_BASS_IS_ADDED_NOTE_70 10 435 | FIG_ACCENT_BASS_IS_ADDED_NOTE_70 10 436 | CHORD_BIGRAM_min_min_10 10 437 | ACCENT_THIRD_COVERED_100 12 438 | CHORD_BIGRAM_min7_maj_4 1 439 | FIG_PURITY_70 22 440 | FIG_DURATION_PURITY_70 22 441 | CHORD_BIGRAM_min7_min_7 1 442 | CHORD_BIGRAM_maj_min7_1 1 443 | CHORD_BIGRAM_min_min_3 2 444 | CHORD_BIGRAM_maj_min_0 5 445 | CHORD_BIGRAM_min7_maj_9 9 446 | CHORD_BIGRAM_min6_min_0 6 447 | PURITY_30 4 448 | DURATION_PURITY_30 6 449 | FIG_PURITY_30 3 450 | FIG_DURATION_PURITY_30 3 451 | ADDED_NOTE_NOT_COVERED 3 452 | CHORD_BIGRAM_maj_min6_3 3 453 | ACCENTED_PURITY_30 3 454 | FIG_ACCENTED_PURITY_30 3 455 | CHORD_BIGRAM_maj6_maj_5 9 456 | CHORD_BIGRAM_maj7_maj6_2 1 457 | CHORD_BIGRAM_maj_maj6_2 10 458 | FIG_ACCENT_ROOT_COVERED_80 30 459 | CHORD_BIGRAM_maj_maj_3 7 460 | SEGMENT_DURATION_THIRD_COVERED_30 6 461 | CHORD_BIGRAM_dim7_min_4 3 462 | CHORD_BIGRAM_min_dim7_6 2 463 | ACCENT_ROOT_COVERED_80 22 464 | SEGMENT_DURATION_FIFTH_COVERED_20 2 465 | CHORD_BIGRAM_min_maj7_2 5 466 | CHORD_BIGRAM_dim7_maj_8 2 467 | CHORD_BIGRAM_maj_dim7_8 1 468 | FIG_DURATION_ROOT_COVERED_90 3 469 | CHORD_BIGRAM_maj7_maj_9 6 470 | CHORD_BIGRAM_maj_maj_4 18 471 | ACCENT_FIFTH_COVERED_60 10 472 | CHORD_BIGRAM_min_min_1 1 473 | CHORD_BIGRAM_min_min_9 2 474 | SEGMENT_DURATION_ADDED_NOTE_COVERED_30 1 475 | DURATION_BASS_IS_ADDED_NOTE_30 3 476 | FIG_DURATION_BASS_IS_ADDED_NOTE_30 3 477 | CHORD_BIGRAM_maj4_maj7_0 2 478 | DURATION_BASS_IS_FIFTH_20 5 479 | FIG_DURATION_BASS_IS_FIFTH_20 5 480 | SEGMENT_DURATION_ROOT_COVERED_60 1 481 | SEGMENT_DURATION_THIRD_COVERED_60 1 482 | CHORD_BIGRAM_maj7_maj7_2 3 483 | CHORD_BIGRAM_maj7_maj7_7 1 484 | DURATION_THIRD_COVERED_70 1 485 | CHORD_BIGRAM_min_dim_10 4 486 | CHORD_BIGRAM_maj_min6_7 2 487 | ACCENT_BASS_IS_ADDED_NOTE_80 3 488 | FIG_ACCENT_BASS_IS_ADDED_NOTE_80 3 489 | CHORD_BIGRAM_maj_maj7_0 1 490 | CHORD_BIGRAM_dim_min_9 3 491 | CHORD_BIGRAM_dim7_maj_11 4 492 | CHORD_BIGRAM_maj_dim7_1 6 493 | ACCENT_BASS_IS_FIFTH_90 8 494 | FIG_ACCENT_BASS_IS_FIFTH_90 8 495 | CHORD_BIGRAM_min_dim7_10 2 496 | CHORD_BIGRAM_maj4_min_5 1 497 | CHORD_BIGRAM_maj7_maj4_0 7 498 | ACCENT_THIRD_COVERED_90 1 499 | CHORD_BIGRAM_min_min7_10 2 500 | CHORD_BIGRAM_maj_dim_5 1 501 | CHORD_BIGRAM_min6_maj7_5 1 502 | CHORD_BIGRAM_min_min6_5 1 503 | CHORD_BIGRAM_maj4_min_2 3 504 | SEGMENT_DURATION_FIFTH_COVERED_30 5 505 | CHORD_BIGRAM_maj_min6_10 5 506 | SEGMENT_DURATION_ADDED_NOTE_COVERED_80 5 507 | CHORD_BIGRAM_maj_min_9 1 508 | CHORD_BIGRAM_maj_maj_6 3 509 | CHORD_BIGRAM_min6_min_3 1 510 | CHORD_BIGRAM_maj7_maj7_5 3 511 | CHORD_BIGRAM_min_maj7_9 2 512 | CHORD_BIGRAM_dim_maj_4 1 513 | CHORD_BIGRAM_dim_maj_3 1 514 | ACCENT_BASS_IS_FIFTH_80 4 515 | FIG_ACCENT_BASS_IS_FIFTH_80 5 516 | CHORD_BIGRAM_maj7_dim7_10 1 517 | CHORD_BIGRAM_maj7_min_3 5 518 | CHORD_BIGRAM_maj7_min_0 2 519 | CHORD_BIGRAM_min6_min7_5 1 520 | CHORD_BIGRAM_min_maj_6 1 521 | CHORD_BIGRAM_maj_dim7_5 3 522 | DURATION_BASS_IS_THIRD_10 2 523 | FIG_DURATION_BASS_IS_THIRD_10 2 524 | CHORD_BIGRAM_maj_dim_8 1 525 | CHORD_BIGRAM_dim_min7_4 1 526 | ACCENT_ROOT_COVERED_100 4 527 | FIG_ACCENT_ROOT_COVERED_100 4 528 | CHORD_BIGRAM_dim6_maj4_1 1 529 | CHORD_BIGRAM_min_dim6_1 1 530 | CHORD_BIGRAM_dim7_min_6 1 531 | CHORD_BIGRAM_dim_min6_11 1 532 | CHORD_BIGRAM_maj4_min6_2 1 533 | CHORD_BIGRAM_maj7_maj_3 2 534 | ACCENT_FIFTH_COVERED_100 5 535 | FIG_ACCENT_FIFTH_COVERED_100 6 536 | CHORD_BIGRAM_dim7_maj_1 1 537 | SEGMENT_DURATION_THIRD_COVERED_40 4 538 | SEGMENT_DURATION_ROOT_COVERED_30 5 539 | PURITY_0 1 540 | ACCENTED_PURITY_0 1 541 | DURATION_PURITY_0 1 542 | FIG_PURITY_0 1 543 | FIG_ACCENTED_PURITY_0 1 544 | FIG_DURATION_PURITY_0 1 545 | CHORD_BIGRAM_min_maj7_10 1 546 | ACCENTED_PURITY_40 9 547 | DURATION_ROOT_COVERED_90 1 548 | ACCENT_ROOT_COVERED_90 1 549 | FIG_ACCENT_ROOT_COVERED_90 1 550 | FIG_ACCENT_ADDED_NOTE_COVERED_60 1 551 | CHORD_BIGRAM_maj4_min7_5 2 552 | CHORD_BIGRAM_maj_maj4_5 1 553 | FIG_PURITY_40 3 554 | FIG_DURATION_PURITY_40 3 555 | BEGINNING_ACCENTED_0.0625 2 556 | CHORD_BIGRAM_maj_dim_6 1 557 | DURATION_BASS_IS_FIFTH_80 1 558 | FIG_DURATION_BASS_IS_FIFTH_80 1 559 | CHORD_BIGRAM_dim_min_6 2 560 | FIG_ACCENTED_PURITY_40 2 561 | CHORD_BIGRAM_dim6_min_8 1 562 | CHORD_BIGRAM_maj_dim6_0 1 563 | CHORD_BIGRAM_maj7_dim_5 1 564 | CHORD_BIGRAM_min_min6_2 3 565 | CHORD_BIGRAM_min6_min_10 1 566 | CHORD_BIGRAM_maj4_maj_2 1 567 | ACCENT_BASS_IS_ADDED_NOTE_90 2 568 | FIG_ACCENT_BASS_IS_ADDED_NOTE_90 2 569 | CHORD_BIGRAM_maj_maj7_3 1 570 | DURATION_PURITY_40 4 571 | CHORD_BIGRAM_min7_maj7_0 1 572 | CHORD_BIGRAM_min7_min_10 2 573 | CHORD_BIGRAM_min7_maj7_2 1 574 | CHORD_BIGRAM_min_maj6_9 1 575 | CHORD_BIGRAM_maj4_maj6_2 1 576 | CHORD_BIGRAM_maj4_dim_1 1 577 | CHORD_BIGRAM_maj6_maj_0 4 578 | CHORD_BIGRAM_dim_maj7_6 1 579 | DURATION_BASS_IS_THIRD_80 1 580 | ACCENT_BASS_IS_THIRD_100 1 581 | FIG_DURATION_BASS_IS_THIRD_80 1 582 | FIG_ACCENT_BASS_IS_THIRD_100 1 583 | CHORD_BIGRAM_maj4_maj_0 1 584 | CHORD_BIGRAM_dim7_min_9 1 585 | CHORD_BIGRAM_dim7_min_7 1 586 | CHORD_BIGRAM_min6_min_7 1 587 | CHORD_BIGRAM_dim7_maj_5 2 588 | CHORD_BIGRAM_maj7_dim7_1 2 589 | CHORD_BIGRAM_maj7_maj7_9 1 590 | CHORD_BIGRAM_dim_min_5 1 591 | CHORD_BIGRAM_maj_dim_2 1 592 | SEGMENT_DURATION_ROOT_COVERED_40 1 593 | DURATION_BASS_IS_FIFTH_70 1 594 | FIG_DURATION_BASS_IS_FIFTH_70 1 595 | CHORD_BIGRAM_maj4_min_10 1 596 | -------------------------------------------------------------------------------- /sample_output_files/feature_count6.txt: -------------------------------------------------------------------------------- 1 | PURITY_90 273 2 | ACCENTED_PURITY_100 628 3 | DURATION_PURITY_90 901 4 | FIG_PURITY_101 2329 5 | FIG_ACCENTED_PURITY_101 2329 6 | FIG_DURATION_PURITY_101 2329 7 | ROOT_COVERED 2804 8 | THIRD_COVERED 2750 9 | FIFTH_COVERED 2727 10 | ALL_NOTES_COVERED 2618 11 | DURATION_ROOT_COVERED_50 894 12 | FIG_DURATION_ROOT_COVERED_60 231 13 | SEGMENT_DURATION_ROOT_COVERED_101 2497 14 | DURATION_THIRD_COVERED_20 596 15 | FIG_DURATION_THIRD_COVERED_30 1565 16 | SEGMENT_DURATION_THIRD_COVERED_101 2318 17 | DURATION_FIFTH_COVERED_20 607 18 | FIG_DURATION_FIFTH_COVERED_30 1581 19 | SEGMENT_DURATION_FIFTH_COVERED_101 2350 20 | ACCENT_ROOT_COVERED_60 173 21 | FIG_ACCENT_ROOT_COVERED_60 191 22 | ACCENT_THIRD_COVERED_20 310 23 | FIG_ACCENT_THIRD_COVERED_20 246 24 | ACCENT_FIFTH_COVERED_20 408 25 | FIG_ACCENT_FIFTH_COVERED_20 295 26 | DURATION_ADDED_NOTE_COVERED_0 2361 27 | FIG_DURATION_ADDED_NOTE_COVERED_0 2361 28 | SEGMENT_DURATION_ADDED_NOTE_COVERED_0 2361 29 | ACCENT_ADDED_NOTE_COVERED_0 2361 30 | FIG_ACCENT_ADDED_NOTE_COVERED_0 2362 31 | BEGINNING_ACCENTED_0.25 981 32 | FIRST_BASS_IS_ROOT 1813 33 | FIG_FIRST_BASS_IS_ROOT 1815 34 | SEGMENT_BASS_IS_ROOT 1695 35 | FIG_SEGMENT_BASS_IS_ROOT 1876 36 | DURATION_BASS_IS_ROOT_101 1422 37 | DURATION_BASS_IS_THIRD_0 1943 38 | DURATION_BASS_IS_FIFTH_0 2666 39 | DURATION_BASS_IS_ADDED_NOTE_0 2748 40 | ACCENT_BASS_IS_ROOT_101 1422 41 | ACCENT_BASS_IS_THIRD_0 1943 42 | ACCENT_BASS_IS_FIFTH_0 2666 43 | ACCENT_BASS_IS_ADDED_NOTE_0 2748 44 | FIG_DURATION_BASS_IS_ROOT_101 1423 45 | FIG_DURATION_BASS_IS_THIRD_0 1941 46 | FIG_DURATION_BASS_IS_FIFTH_0 2666 47 | FIG_DURATION_BASS_IS_ADDED_NOTE_0 2748 48 | FIG_ACCENT_BASS_IS_ROOT_101 1423 49 | FIG_ACCENT_BASS_IS_THIRD_0 1941 50 | FIG_ACCENT_BASS_IS_FIFTH_0 2666 51 | FIG_ACCENT_BASS_IS_ADDED_NOTE_0 2748 52 | CHORD_BIGRAM_maj_min_3 34 53 | PURITY_80 868 54 | DURATION_PURITY_80 324 55 | DURATION_ROOT_COVERED_10 36 56 | FIG_DURATION_ROOT_COVERED_20 254 57 | SEGMENT_DURATION_ROOT_COVERED_50 231 58 | DURATION_THIRD_COVERED_50 195 59 | FIG_DURATION_THIRD_COVERED_70 21 60 | ACCENT_ROOT_COVERED_20 162 61 | FIG_ACCENT_ROOT_COVERED_20 100 62 | ACCENT_THIRD_COVERED_60 28 63 | FIG_ACCENT_THIRD_COVERED_60 30 64 | BEGINNING_ACCENTED_1.0 871 65 | FIRST_BASS_IS_THIRD 730 66 | FIG_FIRST_BASS_IS_THIRD 732 67 | SEGMENT_BASS_IS_THIRD 638 68 | FIG_SEGMENT_BASS_IS_THIRD 671 69 | DURATION_BASS_IS_ROOT_0 883 70 | DURATION_BASS_IS_THIRD_101 493 71 | ACCENT_BASS_IS_ROOT_0 883 72 | ACCENT_BASS_IS_THIRD_101 493 73 | FIG_DURATION_BASS_IS_ROOT_0 882 74 | FIG_DURATION_BASS_IS_THIRD_101 493 75 | FIG_ACCENT_BASS_IS_ROOT_0 882 76 | FIG_ACCENT_BASS_IS_THIRD_101 493 77 | CHORD_BIGRAM_maj_maj_5 510 78 | ACCENTED_PURITY_90 462 79 | DURATION_ROOT_COVERED_40 675 80 | FIG_DURATION_ROOT_COVERED_50 1122 81 | DURATION_THIRD_COVERED_30 1524 82 | FIG_DURATION_THIRD_COVERED_40 243 83 | DURATION_FIFTH_COVERED_10 82 84 | FIG_DURATION_FIFTH_COVERED_20 508 85 | SEGMENT_DURATION_FIFTH_COVERED_50 291 86 | ACCENT_ROOT_COVERED_40 299 87 | FIG_ACCENT_ROOT_COVERED_40 294 88 | ACCENT_THIRD_COVERED_40 330 89 | FIG_ACCENT_THIRD_COVERED_40 328 90 | CHORD_BIGRAM_maj_maj_7 281 91 | PURITY_70 255 92 | DURATION_ROOT_COVERED_30 710 93 | FIG_DURATION_ROOT_COVERED_40 453 94 | SEGMENT_DURATION_ROOT_COVERED_80 48 95 | SEGMENT_DURATION_THIRD_COVERED_80 94 96 | DURATION_FIFTH_COVERED_30 1558 97 | FIG_DURATION_FIFTH_COVERED_40 321 98 | ACCENT_ROOT_COVERED_30 782 99 | FIG_ACCENT_ROOT_COVERED_30 767 100 | FIG_ACCENT_THIRD_COVERED_50 441 101 | ACCENT_FIFTH_COVERED_30 1675 102 | FIG_ACCENT_FIFTH_COVERED_30 1713 103 | BEGINNING_ACCENTED_0.5 925 104 | DURATION_BASS_IS_ROOT_50 390 105 | DURATION_BASS_IS_THIRD_30 76 106 | ACCENT_BASS_IS_ROOT_40 54 107 | ACCENT_BASS_IS_THIRD_50 17 108 | FIG_DURATION_BASS_IS_ROOT_50 390 109 | FIG_DURATION_BASS_IS_THIRD_30 76 110 | FIG_ACCENT_BASS_IS_ROOT_40 54 111 | FIG_ACCENT_BASS_IS_THIRD_50 17 112 | DURATION_PURITY_100 167 113 | DURATION_ROOT_COVERED_70 33 114 | FIG_DURATION_ROOT_COVERED_70 69 115 | FIG_DURATION_THIRD_COVERED_20 492 116 | ACCENT_THIRD_COVERED_30 1612 117 | FIG_ACCENT_THIRD_COVERED_30 1581 118 | CHORD_BIGRAM_min7_maj_2 30 119 | PURITY_101 1310 120 | ACCENTED_PURITY_101 1310 121 | DURATION_PURITY_101 1310 122 | ADDED_NOTE_COVERED 475 123 | FIG_DURATION_THIRD_COVERED_50 318 124 | DURATION_FIFTH_COVERED_0 109 125 | FIG_DURATION_FIFTH_COVERED_0 109 126 | SEGMENT_DURATION_FIFTH_COVERED_0 109 127 | ACCENT_ROOT_COVERED_50 1164 128 | FIG_ACCENT_ROOT_COVERED_50 1198 129 | ACCENT_THIRD_COVERED_50 360 130 | ACCENT_FIFTH_COVERED_0 109 131 | FIG_ACCENT_FIFTH_COVERED_0 110 132 | DURATION_ADDED_NOTE_COVERED_10 19 133 | FIG_DURATION_ADDED_NOTE_COVERED_10 16 134 | SEGMENT_DURATION_ADDED_NOTE_COVERED_101 405 135 | ACCENT_ADDED_NOTE_COVERED_10 61 136 | FIG_ACCENT_ADDED_NOTE_COVERED_10 60 137 | CHORD_BIGRAM_maj7_min7_5 6 138 | DURATION_ADDED_NOTE_GREATER_THAN_ROOT 112 139 | DURATION_ROOT_COVERED_20 283 140 | ACCENT_FIFTH_COVERED_10 214 141 | FIG_ACCENT_FIFTH_COVERED_10 209 142 | DURATION_ADDED_NOTE_COVERED_50 6 143 | FIG_DURATION_ADDED_NOTE_COVERED_50 9 144 | BEGINNING_ACCENTED_0.125 57 145 | FIRST_BASS_IS_FIFTH 112 146 | FIG_FIRST_BASS_IS_FIFTH 112 147 | SEGMENT_BASS_IS_FIFTH 133 148 | FIG_SEGMENT_BASS_IS_FIFTH 141 149 | DURATION_BASS_IS_FIFTH_101 86 150 | ACCENT_BASS_IS_FIFTH_101 86 151 | FIG_DURATION_BASS_IS_FIFTH_101 86 152 | FIG_ACCENT_BASS_IS_FIFTH_101 86 153 | CHORD_BIGRAM_maj_maj7_10 3 154 | DURATION_FIFTH_COVERED_70 12 155 | FIG_DURATION_FIFTH_COVERED_70 17 156 | ACCENT_ROOT_COVERED_10 131 157 | FIG_ACCENT_ROOT_COVERED_10 123 158 | ACCENT_FIFTH_COVERED_80 2 159 | FIG_ACCENT_FIFTH_COVERED_80 2 160 | DURATION_ROOT_COVERED_60 144 161 | CHORD_BIGRAM_min_maj_2 69 162 | FIG_PURITY_90 276 163 | FIG_ACCENTED_PURITY_100 215 164 | FIG_DURATION_PURITY_90 276 165 | CHORD_BIGRAM_min_min_7 51 166 | SEGMENT_DURATION_FIFTH_COVERED_80 44 167 | DURATION_BASS_IS_ROOT_80 29 168 | ACCENT_BASS_IS_ROOT_90 89 169 | FIG_DURATION_BASS_IS_ROOT_80 29 170 | FIG_ACCENT_BASS_IS_ROOT_90 89 171 | CHORD_BIGRAM_min_min_5 67 172 | DURATION_THIRD_COVERED_60 25 173 | FIG_DURATION_THIRD_COVERED_60 71 174 | FIG_DURATION_FIFTH_COVERED_10 41 175 | ACCENT_THIRD_COVERED_70 8 176 | FIG_ACCENT_THIRD_COVERED_70 20 177 | CHORD_BIGRAM_dim_min_11 11 178 | PURITY_50 31 179 | ACCENTED_PURITY_70 37 180 | DURATION_PURITY_50 22 181 | SEGMENT_DURATION_THIRD_COVERED_50 286 182 | DURATION_BASS_IS_THIRD_50 284 183 | ACCENT_BASS_IS_THIRD_70 90 184 | FIG_DURATION_BASS_IS_THIRD_50 286 185 | FIG_ACCENT_BASS_IS_THIRD_70 90 186 | CHORD_BIGRAM_dim7_dim_0 2 187 | FIG_DURATION_ADDED_NOTE_COVERED_20 154 188 | SEGMENT_DURATION_ADDED_NOTE_COVERED_50 63 189 | ACCENT_ADDED_NOTE_COVERED_20 74 190 | FIG_ACCENT_ADDED_NOTE_COVERED_20 65 191 | CHORD_BIGRAM_min_dim7_1 10 192 | DURATION_THIRD_COVERED_10 64 193 | CHORD_BIGRAM_min7_min_5 21 194 | FIG_DURATION_THIRD_COVERED_10 38 195 | DURATION_ADDED_NOTE_COVERED_20 168 196 | CHORD_BIGRAM_maj_min7_2 7 197 | FIG_ACCENTED_PURITY_90 89 198 | ACCENT_FIFTH_COVERED_40 179 199 | FIG_ACCENT_FIFTH_COVERED_40 225 200 | CHORD_BIGRAM_min_maj_5 152 201 | PURITY_60 79 202 | DURATION_PURITY_70 85 203 | SEGMENT_DURATION_ROOT_COVERED_70 10 204 | DURATION_THIRD_COVERED_40 343 205 | SEGMENT_DURATION_FIFTH_COVERED_70 18 206 | DURATION_BASS_IS_THIRD_70 4 207 | ACCENT_BASS_IS_THIRD_90 52 208 | FIG_DURATION_BASS_IS_THIRD_70 4 209 | FIG_ACCENT_BASS_IS_THIRD_90 54 210 | FIG_PURITY_100 93 211 | FIG_DURATION_PURITY_100 93 212 | ACCENTED_PURITY_80 320 213 | FIG_DURATION_ROOT_COVERED_30 626 214 | FIG_DURATION_ADDED_NOTE_COVERED_30 247 215 | CHORD_BIGRAM_min_min7_0 3 216 | CHORD_BIGRAM_maj_min_2 38 217 | ACCENT_BASS_IS_ROOT_70 129 218 | FIG_ACCENT_BASS_IS_ROOT_70 130 219 | DURATION_FIFTH_COVERED_40 287 220 | FIG_DURATION_FIFTH_COVERED_50 202 221 | CHORD_BIGRAM_maj7_min_7 12 222 | FIG_PURITY_80 80 223 | FIG_ACCENTED_PURITY_70 20 224 | FIG_DURATION_PURITY_80 80 225 | ACCENT_BASS_IS_THIRD_40 65 226 | FIG_ACCENT_BASS_IS_THIRD_40 65 227 | CHORD_BIGRAM_min_maj7_5 60 228 | CHORD_BIGRAM_maj_maj_1 7 229 | CHORD_BIGRAM_maj_maj_2 62 230 | FIG_ACCENT_FIFTH_COVERED_50 246 231 | DURATION_BASS_IS_ROOT_30 48 232 | ACCENT_BASS_IS_ROOT_60 17 233 | ACCENT_BASS_IS_THIRD_30 27 234 | FIG_DURATION_BASS_IS_ROOT_30 48 235 | FIG_ACCENT_BASS_IS_ROOT_60 17 236 | FIG_ACCENT_BASS_IS_THIRD_30 27 237 | CHORD_BIGRAM_maj7_maj_2 41 238 | CHORD_BIGRAM_maj_maj7_2 7 239 | DURATION_BASS_IS_FIFTH_30 21 240 | ACCENT_BASS_IS_FIFTH_30 1 241 | FIG_DURATION_BASS_IS_FIFTH_30 21 242 | FIG_ACCENT_BASS_IS_FIFTH_30 1 243 | CHORD_BIGRAM_maj_min_10 97 244 | CHORD_BIGRAM_min_maj_7 19 245 | CHORD_BIGRAM_maj_min_5 40 246 | ACCENT_BASS_IS_ROOT_80 109 247 | ACCENT_BASS_IS_THIRD_10 7 248 | FIG_ACCENT_BASS_IS_ROOT_80 109 249 | FIG_ACCENT_BASS_IS_THIRD_10 7 250 | CHORD_BIGRAM_maj_min_7 63 251 | CHORD_BIGRAM_maj_maj_8 7 252 | DURATION_ADDED_NOTE_COVERED_40 43 253 | ACCENT_ADDED_NOTE_COVERED_40 37 254 | FIG_ACCENT_ADDED_NOTE_COVERED_40 44 255 | FIRST_BASS_IS_ADDED_NOTE 74 256 | FIG_FIRST_BASS_IS_ADDED_NOTE 74 257 | SEGMENT_BASS_IS_ADDED_NOTE 77 258 | FIG_SEGMENT_BASS_IS_ADDED_NOTE 77 259 | DURATION_BASS_IS_ADDED_NOTE_101 57 260 | ACCENT_BASS_IS_ADDED_NOTE_101 57 261 | FIG_DURATION_BASS_IS_ADDED_NOTE_101 57 262 | FIG_ACCENT_BASS_IS_ADDED_NOTE_101 57 263 | CHORD_BIGRAM_maj_maj7_5 130 264 | FIG_ACCENT_THIRD_COVERED_80 5 265 | ACCENT_BASS_IS_THIRD_80 64 266 | FIG_ACCENT_BASS_IS_THIRD_80 64 267 | ACCENT_BASS_IS_ROOT_20 55 268 | ACCENTED_PURITY_50 28 269 | DURATION_PURITY_60 16 270 | FIG_ACCENTED_PURITY_60 22 271 | DURATION_ROOT_COVERED_0 32 272 | FIG_DURATION_ROOT_COVERED_0 32 273 | SEGMENT_DURATION_ROOT_COVERED_0 32 274 | ACCENT_ROOT_COVERED_0 32 275 | FIG_ACCENT_ROOT_COVERED_0 32 276 | DURATION_BASS_IS_FIFTH_50 49 277 | ACCENT_BASS_IS_FIFTH_40 17 278 | FIG_DURATION_BASS_IS_FIFTH_50 49 279 | FIG_ACCENT_BASS_IS_FIFTH_40 17 280 | CHORD_BIGRAM_maj6_min_8 1 281 | CHORD_BIGRAM_maj_maj6_7 1 282 | FIG_PURITY_60 17 283 | FIG_DURATION_PURITY_60 17 284 | FIG_ACCENT_ROOT_COVERED_70 89 285 | CHORD_BIGRAM_min6_maj_2 1 286 | CHORD_BIGRAM_maj_min6_2 23 287 | ACCENT_BASS_IS_FIFTH_20 23 288 | FIG_ACCENT_BASS_IS_FIFTH_20 23 289 | CHORD_BIGRAM_dim_maj_6 20 290 | DURATION_FIFTH_COVERED_50 165 291 | ACCENT_FIFTH_COVERED_50 228 292 | CHORD_BIGRAM_maj_dim_1 24 293 | ACCENT_ROOT_COVERED_70 63 294 | CHORD_BIGRAM_maj7_maj_0 48 295 | DURATION_THIRD_COVERED_0 86 296 | FIG_DURATION_THIRD_COVERED_0 86 297 | SEGMENT_DURATION_THIRD_COVERED_0 86 298 | ACCENT_THIRD_COVERED_0 86 299 | FIG_ACCENT_THIRD_COVERED_0 87 300 | DURATION_ADDED_NOTE_COVERED_30 239 301 | ACCENT_ADDED_NOTE_COVERED_30 267 302 | FIG_ACCENT_ADDED_NOTE_COVERED_30 266 303 | CHORD_BIGRAM_dim_maj_11 8 304 | ACCENT_THIRD_COVERED_10 90 305 | FIG_ACCENT_THIRD_COVERED_10 85 306 | PURITY_100 7 307 | DURATION_BASS_IS_ROOT_70 16 308 | DURATION_BASS_IS_THIRD_40 19 309 | FIG_DURATION_BASS_IS_ROOT_70 16 310 | FIG_DURATION_BASS_IS_THIRD_40 19 311 | CHORD_BIGRAM_min_maj_9 89 312 | DURATION_FIFTH_COVERED_60 14 313 | FIG_DURATION_FIFTH_COVERED_60 54 314 | CHORD_BIGRAM_min7_min_0 12 315 | FIG_ACCENT_ADDED_NOTE_COVERED_50 16 316 | CHORD_BIGRAM_maj7_min7_10 4 317 | CHORD_BIGRAM_maj7_maj_7 21 318 | ACCENT_ADDED_NOTE_COVERED_50 14 319 | FIG_ACCENTED_PURITY_80 130 320 | SEGMENT_DURATION_THIRD_COVERED_90 20 321 | DURATION_BASS_IS_ROOT_90 23 322 | ACCENT_BASS_IS_ROOT_100 22 323 | FIG_DURATION_BASS_IS_ROOT_90 23 324 | FIG_ACCENT_BASS_IS_ROOT_100 22 325 | CHORD_BIGRAM_maj_maj_9 21 326 | ACCENT_BASS_IS_FIFTH_10 12 327 | FIG_ACCENT_BASS_IS_FIFTH_10 12 328 | CHORD_BIGRAM_min6_min_5 22 329 | CHORD_BIGRAM_maj7_min6_2 7 330 | CHORD_BIGRAM_min_min6_7 3 331 | FIG_DURATION_ADDED_NOTE_COVERED_40 49 332 | CHORD_BIGRAM_min_maj_10 2 333 | ACCENT_FIFTH_COVERED_70 8 334 | FIG_ACCENT_FIFTH_COVERED_70 16 335 | ACCENT_BASS_IS_ROOT_30 30 336 | FIG_ACCENT_BASS_IS_ROOT_30 30 337 | CHORD_BIGRAM_min7_min_2 5 338 | FIG_DURATION_THIRD_COVERED_80 2 339 | CHORD_BIGRAM_maj_min7_3 1 340 | ACCENT_BASS_IS_FIFTH_50 5 341 | FIG_ACCENT_BASS_IS_FIFTH_50 5 342 | ACCENT_ADDED_NOTE_COVERED_100 20 343 | FIG_ACCENT_ADDED_NOTE_COVERED_100 20 344 | PURITY_40 9 345 | FIG_PURITY_50 8 346 | FIG_ACCENTED_PURITY_50 21 347 | FIG_DURATION_PURITY_50 8 348 | CHORD_BIGRAM_maj_min7_8 3 349 | CHORD_BIGRAM_dim7_maj_6 5 350 | CHORD_BIGRAM_maj4_maj_7 28 351 | CHORD_BIGRAM_maj_maj4_0 41 352 | FIG_ACCENT_THIRD_COVERED_100 13 353 | FIG_DURATION_ROOT_COVERED_10 14 354 | SEGMENT_DURATION_ROOT_COVERED_90 12 355 | DURATION_BASS_IS_FIFTH_40 8 356 | FIG_DURATION_BASS_IS_FIFTH_40 8 357 | CHORD_BIGRAM_maj_min_1 18 358 | CHORD_BIGRAM_maj_min7_5 27 359 | ACCENT_THIRD_COVERED_80 1 360 | FIG_ACCENT_FIFTH_COVERED_60 16 361 | CHORD_BIGRAM_maj7_min_5 25 362 | SEGMENT_DURATION_THIRD_COVERED_70 23 363 | DURATION_BASS_IS_ROOT_20 9 364 | ACCENT_BASS_IS_THIRD_60 27 365 | FIG_DURATION_BASS_IS_ROOT_20 9 366 | FIG_ACCENT_BASS_IS_THIRD_60 27 367 | CHORD_BIGRAM_maj_maj_10 22 368 | CHORD_BIGRAM_maj_min_8 32 369 | ACCENT_BASS_IS_THIRD_20 50 370 | FIG_ACCENT_BASS_IS_THIRD_20 50 371 | CHORD_BIGRAM_dim_maj_8 2 372 | CHORD_BIGRAM_min_dim_1 20 373 | CHORD_BIGRAM_dim7_min_11 6 374 | CHORD_BIGRAM_min_maj_0 6 375 | CHORD_BIGRAM_maj7_min_10 7 376 | DURATION_BASS_IS_ADDED_NOTE_50 29 377 | ACCENT_BASS_IS_ADDED_NOTE_40 9 378 | FIG_DURATION_BASS_IS_ADDED_NOTE_50 29 379 | FIG_ACCENT_BASS_IS_ADDED_NOTE_40 9 380 | ACCENT_BASS_IS_ROOT_10 3 381 | FIG_ACCENT_BASS_IS_ROOT_10 3 382 | CHORD_BIGRAM_maj7_dim7_8 1 383 | CHORD_BIGRAM_min4_min_7 1 384 | ACCENT_BASS_IS_FIFTH_70 11 385 | FIG_ACCENT_BASS_IS_FIFTH_70 11 386 | CHORD_BIGRAM_maj_min4_7 1 387 | CHORD_BIGRAM_min_maj_11 8 388 | CHORD_BIGRAM_min_min7_5 14 389 | CHORD_BIGRAM_min7_maj_11 1 390 | CHORD_BIGRAM_min7_min7_5 2 391 | CHORD_BIGRAM_min6_maj_9 14 392 | ACCENT_BASS_IS_ADDED_NOTE_20 6 393 | FIG_ACCENT_BASS_IS_ADDED_NOTE_20 6 394 | ACCENTED_PURITY_60 33 395 | CHORD_BIGRAM_min_min_2 12 396 | SEGMENT_DURATION_FIFTH_COVERED_90 16 397 | CHORD_BIGRAM_maj7_maj_4 7 398 | DURATION_BASS_IS_ROOT_40 16 399 | FIG_DURATION_BASS_IS_ROOT_40 16 400 | CHORD_BIGRAM_maj7_min_2 9 401 | CHORD_BIGRAM_dim_min_2 4 402 | CHORD_BIGRAM_maj_maj7_1 6 403 | DURATION_BASS_IS_THIRD_20 14 404 | ACCENT_BASS_IS_FIFTH_60 3 405 | FIG_DURATION_BASS_IS_THIRD_20 14 406 | FIG_ACCENT_BASS_IS_FIFTH_60 3 407 | CHORD_BIGRAM_maj4_min_7 9 408 | CHORD_BIGRAM_maj_maj7_9 2 409 | FIG_ACCENT_BASS_IS_ROOT_20 54 410 | CHORD_BIGRAM_min6_maj_5 1 411 | CHORD_BIGRAM_min_min6_0 2 412 | CHORD_BIGRAM_maj_min7_10 13 413 | CHORD_BIGRAM_dim7_min_3 1 414 | CHORD_BIGRAM_maj_dim7_4 2 415 | CHORD_BIGRAM_dim7_dim7_9 1 416 | ACCENTED_PURITY_10 6 417 | CHORD_BIGRAM_min_dim7_4 1 418 | CHORD_BIGRAM_dim6_dim_3 1 419 | CHORD_BIGRAM_dim_dim6_6 1 420 | CHORD_BIGRAM_min_dim_4 1 421 | CHORD_BIGRAM_maj7_maj_5 3 422 | DURATION_ROOT_COVERED_80 28 423 | FIG_DURATION_ROOT_COVERED_80 32 424 | DURATION_FIFTH_COVERED_80 2 425 | FIG_DURATION_FIFTH_COVERED_80 3 426 | CHORD_BIGRAM_maj_maj_11 6 427 | ACCENT_BASS_IS_ROOT_50 23 428 | FIG_ACCENT_BASS_IS_ROOT_50 23 429 | CHORD_BIGRAM_dim7_min_2 3 430 | CHORD_BIGRAM_min_dim7_3 1 431 | FIG_ACCENTED_PURITY_10 5 432 | CHORD_BIGRAM_min_maj_4 14 433 | CHORD_BIGRAM_maj7_maj_11 3 434 | ACCENT_BASS_IS_ADDED_NOTE_70 10 435 | FIG_ACCENT_BASS_IS_ADDED_NOTE_70 10 436 | CHORD_BIGRAM_min_min_10 12 437 | ACCENT_THIRD_COVERED_100 10 438 | CHORD_BIGRAM_min7_maj_4 1 439 | FIG_PURITY_70 26 440 | FIG_DURATION_PURITY_70 26 441 | CHORD_BIGRAM_min7_min_7 1 442 | CHORD_BIGRAM_maj_min7_1 1 443 | CHORD_BIGRAM_min_min_3 1 444 | CHORD_BIGRAM_maj_min_0 5 445 | CHORD_BIGRAM_min7_maj_9 9 446 | CHORD_BIGRAM_min6_min_0 6 447 | PURITY_30 4 448 | DURATION_PURITY_30 7 449 | FIG_PURITY_30 3 450 | FIG_DURATION_PURITY_30 3 451 | ADDED_NOTE_NOT_COVERED 3 452 | CHORD_BIGRAM_maj_min6_3 3 453 | ACCENTED_PURITY_30 3 454 | FIG_ACCENTED_PURITY_30 3 455 | CHORD_BIGRAM_maj6_maj_5 9 456 | CHORD_BIGRAM_maj7_maj6_2 1 457 | CHORD_BIGRAM_maj_maj6_2 10 458 | FIG_ACCENT_ROOT_COVERED_80 35 459 | CHORD_BIGRAM_maj_maj_3 5 460 | SEGMENT_DURATION_THIRD_COVERED_30 6 461 | CHORD_BIGRAM_dim7_min_4 3 462 | CHORD_BIGRAM_min_dim7_6 2 463 | ACCENT_ROOT_COVERED_80 23 464 | SEGMENT_DURATION_FIFTH_COVERED_20 2 465 | CHORD_BIGRAM_min_maj7_2 4 466 | CHORD_BIGRAM_dim7_maj_8 2 467 | CHORD_BIGRAM_maj_dim7_8 1 468 | FIG_DURATION_ROOT_COVERED_90 3 469 | CHORD_BIGRAM_maj7_maj_9 5 470 | CHORD_BIGRAM_maj_maj_4 21 471 | ACCENT_FIFTH_COVERED_60 10 472 | CHORD_BIGRAM_min_min_1 1 473 | CHORD_BIGRAM_min_min_9 3 474 | SEGMENT_DURATION_ADDED_NOTE_COVERED_30 1 475 | DURATION_BASS_IS_ADDED_NOTE_30 2 476 | FIG_DURATION_BASS_IS_ADDED_NOTE_30 2 477 | CHORD_BIGRAM_maj4_maj7_0 2 478 | DURATION_BASS_IS_FIFTH_20 4 479 | FIG_DURATION_BASS_IS_FIFTH_20 4 480 | SEGMENT_DURATION_ROOT_COVERED_60 1 481 | SEGMENT_DURATION_THIRD_COVERED_60 1 482 | CHORD_BIGRAM_maj7_maj7_2 3 483 | CHORD_BIGRAM_maj7_maj7_7 1 484 | DURATION_THIRD_COVERED_70 3 485 | CHORD_BIGRAM_min_dim_10 3 486 | CHORD_BIGRAM_maj_min6_7 2 487 | ACCENT_BASS_IS_ADDED_NOTE_80 3 488 | FIG_ACCENT_BASS_IS_ADDED_NOTE_80 3 489 | CHORD_BIGRAM_maj_maj7_0 2 490 | CHORD_BIGRAM_dim_min_9 3 491 | CHORD_BIGRAM_dim7_maj_11 4 492 | CHORD_BIGRAM_maj_dim7_1 4 493 | ACCENT_BASS_IS_FIFTH_90 7 494 | FIG_ACCENT_BASS_IS_FIFTH_90 7 495 | CHORD_BIGRAM_min_dim7_10 2 496 | CHORD_BIGRAM_maj4_min_5 1 497 | CHORD_BIGRAM_maj7_maj4_0 11 498 | ACCENT_THIRD_COVERED_90 1 499 | CHORD_BIGRAM_min_min7_10 2 500 | CHORD_BIGRAM_maj_dim_5 1 501 | CHORD_BIGRAM_min6_maj7_5 1 502 | CHORD_BIGRAM_min_min6_5 1 503 | CHORD_BIGRAM_maj4_min_2 3 504 | SEGMENT_DURATION_FIFTH_COVERED_30 5 505 | CHORD_BIGRAM_maj_min6_10 5 506 | SEGMENT_DURATION_ADDED_NOTE_COVERED_80 6 507 | CHORD_BIGRAM_maj_min_9 1 508 | CHORD_BIGRAM_maj_maj_6 3 509 | CHORD_BIGRAM_min6_min_3 1 510 | CHORD_BIGRAM_maj7_maj7_5 5 511 | CHORD_BIGRAM_min_maj7_9 3 512 | CHORD_BIGRAM_dim_maj_4 1 513 | CHORD_BIGRAM_dim_maj_3 1 514 | ACCENT_BASS_IS_FIFTH_80 5 515 | FIG_ACCENT_BASS_IS_FIFTH_80 5 516 | CHORD_BIGRAM_maj7_dim7_10 1 517 | CHORD_BIGRAM_maj7_min_3 5 518 | CHORD_BIGRAM_maj7_min_0 2 519 | CHORD_BIGRAM_min6_min7_5 1 520 | CHORD_BIGRAM_min_maj_6 1 521 | CHORD_BIGRAM_maj_dim7_5 3 522 | DURATION_BASS_IS_THIRD_10 2 523 | FIG_DURATION_BASS_IS_THIRD_10 2 524 | CHORD_BIGRAM_maj_dim_8 1 525 | CHORD_BIGRAM_dim_min7_4 1 526 | SEGMENT_DURATION_ROOT_COVERED_30 4 527 | ACCENTED_PURITY_40 9 528 | DURATION_ROOT_COVERED_90 1 529 | ACCENT_ROOT_COVERED_90 1 530 | FIG_ACCENT_ROOT_COVERED_90 1 531 | FIG_ACCENT_ADDED_NOTE_COVERED_60 1 532 | CHORD_BIGRAM_maj4_min7_5 4 533 | ACCENT_ROOT_COVERED_100 6 534 | FIG_ACCENT_ROOT_COVERED_100 6 535 | CHORD_BIGRAM_maj_maj4_5 2 536 | FIG_PURITY_40 4 537 | FIG_DURATION_PURITY_40 4 538 | BEGINNING_ACCENTED_0.0625 2 539 | CHORD_BIGRAM_maj_dim_6 1 540 | DURATION_BASS_IS_FIFTH_80 1 541 | FIG_DURATION_BASS_IS_FIFTH_80 1 542 | CHORD_BIGRAM_dim_min_6 2 543 | FIG_ACCENTED_PURITY_40 2 544 | CHORD_BIGRAM_dim6_min_8 1 545 | CHORD_BIGRAM_maj_dim6_0 1 546 | ACCENT_FIFTH_COVERED_100 3 547 | FIG_ACCENT_FIFTH_COVERED_100 4 548 | CHORD_BIGRAM_maj7_dim_5 1 549 | CHORD_BIGRAM_min_min6_2 3 550 | CHORD_BIGRAM_min6_min_10 1 551 | CHORD_BIGRAM_maj4_maj_2 1 552 | ACCENT_BASS_IS_ADDED_NOTE_90 2 553 | FIG_ACCENT_BASS_IS_ADDED_NOTE_90 2 554 | CHORD_BIGRAM_maj_maj7_3 1 555 | DURATION_PURITY_40 4 556 | CHORD_BIGRAM_min7_maj7_0 1 557 | CHORD_BIGRAM_min7_min_10 2 558 | CHORD_BIGRAM_min7_maj7_2 1 559 | CHORD_BIGRAM_min_maj6_9 1 560 | CHORD_BIGRAM_maj4_maj6_2 1 561 | CHORD_BIGRAM_maj4_dim_1 1 562 | CHORD_BIGRAM_maj6_maj_0 4 563 | CHORD_BIGRAM_dim_maj7_6 2 564 | SEGMENT_DURATION_THIRD_COVERED_40 2 565 | DURATION_BASS_IS_THIRD_80 1 566 | ACCENT_BASS_IS_THIRD_100 1 567 | FIG_DURATION_BASS_IS_THIRD_80 1 568 | FIG_ACCENT_BASS_IS_THIRD_100 1 569 | SEGMENT_DURATION_FIFTH_COVERED_40 1 570 | CHORD_BIGRAM_maj4_min_10 3 571 | ACCENT_ADDED_NOTE_COVERED_60 2 572 | FIG_ACCENT_ADDED_NOTE_COVERED_70 2 573 | CHORD_BIGRAM_min7_maj7_9 2 574 | CHORD_BIGRAM_min7_min_9 1 575 | CHORD_BIGRAM_dim_min_0 1 576 | CHORD_BIGRAM_maj7_dim_8 1 577 | CHORD_BIGRAM_dim6_maj_7 1 578 | CHORD_BIGRAM_maj7_dim6_7 1 579 | ACCENT_BASS_IS_ADDED_NOTE_60 1 580 | FIG_ACCENT_BASS_IS_ADDED_NOTE_60 1 581 | CHORD_BIGRAM_maj7_maj_1 1 582 | CHORD_BIGRAM_dim_min_7 1 583 | CHORD_BIGRAM_maj_dim_10 1 584 | CHORD_BIGRAM_maj4_maj_0 1 585 | CHORD_BIGRAM_dim7_min_9 1 586 | CHORD_BIGRAM_dim7_min_7 1 587 | CHORD_BIGRAM_min6_min_7 1 588 | CHORD_BIGRAM_dim7_maj_5 2 589 | CHORD_BIGRAM_maj7_dim7_1 2 590 | CHORD_BIGRAM_maj7_maj7_9 1 591 | CHORD_BIGRAM_dim_min_5 1 592 | CHORD_BIGRAM_maj_dim_2 1 593 | SEGMENT_DURATION_ROOT_COVERED_40 1 594 | DURATION_BASS_IS_FIFTH_70 1 595 | FIG_DURATION_BASS_IS_FIFTH_70 1 596 | --------------------------------------------------------------------------------