README.md
author wim
Thu, 08 Jun 2023 09:40:19 +0200
changeset 6 193999e56a90
parent 5 377c84f956dc
permissions -rw-r--r--
- veranderingen voor python3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3
b89a27b9bd9e - add readme
wim
parents:
diff changeset
     1
### Chordal Analysis
b89a27b9bd9e - add readme
wim
parents:
diff changeset
     2
b89a27b9bd9e - add readme
wim
parents:
diff changeset
     3
*xmlChordAna* is a python script that makes a chordal analysis of a MusicXML file.
4
319d42cc33d8 - extended the readme
wim
parents: 3
diff changeset
     4
5
377c84f956dc - extended README
wim
parents: 4
diff changeset
     5
An [interactive demo][1] is avaiable on the
377c84f956dc - extended README
wim
parents: 4
diff changeset
     6
[Chord Analysis][1] page. It runs the script on
4
319d42cc33d8 - extended the readme
wim
parents: 3
diff changeset
     7
my server and formats the output in some neat html.
319d42cc33d8 - extended the readme
wim
parents: 3
diff changeset
     8
319d42cc33d8 - extended the readme
wim
parents: 3
diff changeset
     9
At the command line *xmlChordAna* is used as follows:
3
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    10
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    11
        > ./xmlChordAna.py scorefile.xml
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    12
4
319d42cc33d8 - extended the readme
wim
parents: 3
diff changeset
    13
The output is printed in plain text looks like this:
3
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    14
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    15
        File: bwv539p_arr.xml, ticks per quarternote: 384
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    16
        342 note groups, 102 chord segments
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    17
        Key: Am, confidence: 33%
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    18
        ---- chord Dmin, score: 90%
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    19
           0     D3, D4, F4, A4
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    20
           2     D3, F4, A4, D5
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    21
           2 1/2 F4, A4, D5, D3
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    22
           3     F4, A4, D5, C#3
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    23
           3 1/2 F4, A4, D5, D3
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    24
        ---- chord Ehdim, score: 75%
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    25
           4     D5, E3, E4, G4
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    26
        ---- chord C#hdim, score: 92%
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    27
           5     E3, E4, G4, C#5
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    28
           5 1/2 E3, E4, G4, B4
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    29
           6     E3, E4, G4, C#5
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    30
           6 1/2 E4, G4, C#5, E3
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    31
           7     E4, G4, C#5, D3
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    32
           7 1/2 E4, G4, C#5, E3
5
377c84f956dc - extended README
wim
parents: 4
diff changeset
    33
        ...
3
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    34
4
319d42cc33d8 - extended the readme
wim
parents: 3
diff changeset
    35
See [this explanation](https://wim.vree.org/keys09/uitleg.html) for more info.
319d42cc33d8 - extended the readme
wim
parents: 3
diff changeset
    36
319d42cc33d8 - extended the readme
wim
parents: 3
diff changeset
    37
### KeyScape
3
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    38
4
319d42cc33d8 - extended the readme
wim
parents: 3
diff changeset
    39
On the [KeyScape](../keys09) page you can find two other interactive demos. One makes
319d42cc33d8 - extended the readme
wim
parents: 3
diff changeset
    40
a *keyscape* from a MIDI file. The other runs the same chordal analysis as *xmlChordAna*,
319d42cc33d8 - extended the readme
wim
parents: 3
diff changeset
    41
but for a MIDI file. There is no download page (yet) for these programs.
319d42cc33d8 - extended the readme
wim
parents: 3
diff changeset
    42
5
377c84f956dc - extended README
wim
parents: 4
diff changeset
    43
### Base-40 note numbers
3
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    44
5
377c84f956dc - extended README
wim
parents: 4
diff changeset
    45
*xml2b40* is a python script to convert a MusicXML file to a list of base-40 events.
3
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    46
It is invoked from the command line as follows:
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    47
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    48
        > ./xml2b40.py -t 384 scorefile.xml
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    49
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    50
and produces the following output:
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    51
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    52
        0 129
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    53
        0 169
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    54
        0 180
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    55
        0 192
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    56
        768 -192
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    57
        768 -169
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    58
        768 192
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    59
        768 209
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    60
        960 -129
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    61
        960 129
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    62
        1152 -129
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    63
        1152 124
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    64
        1344 -124
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    65
        1344 129
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    66
        1536 -192
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    67
        1536 -180
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    68
        ...
b89a27b9bd9e - add readme
wim
parents:
diff changeset
    69
5
377c84f956dc - extended README
wim
parents: 4
diff changeset
    70
Each line contains two numbers: the time and a base-40 note.
377c84f956dc - extended README
wim
parents: 4
diff changeset
    71
The time is in ticks, where a quarter note is 384 ticks. The base-40 note number is positive
377c84f956dc - extended README
wim
parents: 4
diff changeset
    72
when the note starts sounding and negative when the note stops sounding.
377c84f956dc - extended README
wim
parents: 4
diff changeset
    73
377c84f956dc - extended README
wim
parents: 4
diff changeset
    74
The base-40 note number system encodes 40 pitches in an octave.
377c84f956dc - extended README
wim
parents: 4
diff changeset
    75
It is maps all single and double accidentals.
377c84f956dc - extended README
wim
parents: 4
diff changeset
    76
For instance, the first 10 numbers are:
4
319d42cc33d8 - extended the readme
wim
parents: 3
diff changeset
    77
5
377c84f956dc - extended README
wim
parents: 4
diff changeset
    78
        1:  Cbb
377c84f956dc - extended README
wim
parents: 4
diff changeset
    79
        2:  Cb
377c84f956dc - extended README
wim
parents: 4
diff changeset
    80
        3:  C
377c84f956dc - extended README
wim
parents: 4
diff changeset
    81
        4:  C#
377c84f956dc - extended README
wim
parents: 4
diff changeset
    82
        5:  C##
377c84f956dc - extended README
wim
parents: 4
diff changeset
    83
        6:  not used 
377c84f956dc - extended README
wim
parents: 4
diff changeset
    84
        7:  Dbb
377c84f956dc - extended README
wim
parents: 4
diff changeset
    85
        8:  Db
377c84f956dc - extended README
wim
parents: 4
diff changeset
    86
        9:  D
377c84f956dc - extended README
wim
parents: 4
diff changeset
    87
        10: D#
377c84f956dc - extended README
wim
parents: 4
diff changeset
    88
377c84f956dc - extended README
wim
parents: 4
diff changeset
    89
Base-40 numbers allow precise matching of chord patterns. For instance, chord pattern
377c84f956dc - extended README
wim
parents: 4
diff changeset
    90
C7 only matches
377c84f956dc - extended README
wim
parents: 4
diff changeset
    91
C-E-Bb and not C-E-A# or C-Fb-Bb or B#-E-Bb etc.
377c84f956dc - extended README
wim
parents: 4
diff changeset
    92
377c84f956dc - extended README
wim
parents: 4
diff changeset
    93
The idea of base-40 note numbers is due to B. Hewlett and described in
377c84f956dc - extended README
wim
parents: 4
diff changeset
    94
[this paper][2]
377c84f956dc - extended README
wim
parents: 4
diff changeset
    95
377c84f956dc - extended README
wim
parents: 4
diff changeset
    96
[1]: ../keys09/abc2chord.html?../js/pre_wind.js
377c84f956dc - extended README
wim
parents: 4
diff changeset
    97
[2]: http://www.ccarh.org/publications/reprints/base40/