samer@0: # JRP Digital Scores #
samer@0:
samer@0: This repository contains digital music scores in the Humdrum data
samer@0: format from the [Josquin Research Project](http://josquin.stanford.edu).
samer@0: The primary web interface for these scores is http://josquin.stanford.edu
samer@0: which allows online searching and browsing, conversions into other
samer@0: data formats, such as MIDI and graphical notation, as well as
samer@0: interfaces to some online analysis tools. These scores encompass
samer@0: music of the early Renaissance (*c*1420 to *c*1520), mostly
samer@0: representing the [Franco-Flemish
samer@0: School](http://en.wikipedia.org/wiki/Franco-Flemish_School) and are
samer@0: mainly intended for computational analysis. As a result only a
samer@0: few works include text/lyrics suitable for vocal performance.
samer@0:
samer@0: A peculiar aspect in music of the sixteenth century (from a modern
samer@0: viewpoint) is an incomplete notation of accidentals needed for
samer@0: performance. Editorial accidentals have been added to these scores
samer@0: to realize the performance practice of the time. An "i" character
samer@0: immediately following an accidental indicates that it was not written
samer@0: in the original notation. When written without an "i" after it,
samer@0: the accidental is found in the original notation, either from the
samer@0: key signature, or an explicit accidental written immediately before
samer@0: the note.
samer@0:
samer@0: Another conceptual difference is the use of mensuration signs.
samer@0: These evolved (decayed) into time signatures. The most common
samer@0: mensuration in the music is Cut-C, from which modern cut-time
samer@0: originates. In this mensuration the *beat* is at the whole-note
samer@0: rhythmic level, and the metric cycle is two beats (a breve). Circle
samer@0: mensuration is the second most common mensuration in the music.
samer@0: This represents three whole-note beats per rhythmic cycle (dotted
samer@0: breve). Mensuration signs also convey tempo, so MIDI files on the
samer@0: [JRP](http://josquin.stanford.edu) website made from these scores
samer@0: typically interpret tempo from the mensuration signs in the data
samer@0: (with the tempo slowing down over the generations due to smaller
samer@0: rhythmic values becoming more common). Modern time signatures are
samer@0: present in the data as a result of using music notation software
samer@0: for data entry and are of secondary concern (notice that they are
samer@0: not displayed in the scores on the [JRP](http://josquin.stanford.edu)
samer@0: website.
samer@0:
samer@0: Barlines had not yet been invented in the fifteenth century, so all
samer@0: barlines in the data are interpreted; however, these are less open
samer@0: to interpretation compared to editorial accidentals. Typically
samer@0: barlines represent breves (double whole notes) durations, although
samer@0: they sometimes represent longs (quadruple whole notes), and may
samer@0: include patterns of dashed and solid lines to indicate the implied
samer@0: long (solid lines) and breve (dash line) metric grid of the music.
samer@0:
samer@0: All parts are encoded in modern notation that is sensitive to the
samer@0: original mensural notation intent of the fifteenth century. The
samer@0: main difference is that all rhythmic durations and augmentation
samer@0: dots are made explicit rather than dependent on a note's musical
samer@0: context. Since the original parts were not written in modern score
samer@0: layout during the fifteenth century (see an example of a
samer@0: [partbook](http://www.loc.gov/exhibits/vatican/images/music13.jpg)),
samer@0: mensuration changes sometimes do not occur at the same point in
samer@0: each part. For example, one part may have a whole note in Cut-C
samer@0: mensuration while another part has a dotted whole note in 3
samer@0: mensuration. This is represented in the data with the same rhythmic
samer@0: duration in each part, usually as a whole note and a triplet dotted
samer@0: whole note using an ```*rscale:3/2``` interpretation in the second
samer@0: part to indicate that it is to be displayed with a rhythmic duration
samer@0: 3/2 longer (i.e., convert the triplet dotted whole note into a
samer@0: non-triplet dotted whole note).
samer@0:
samer@0: In mensural music (particularly in masses) the voices are sometimes
samer@0: notated in conflicting note values. (Colloquially we refer to a
samer@0: voice being "augmented" or "diminished" relative to the others.)
samer@0: The most common situation is for a half-note in the tenor to have
samer@0: the same duration as a whole-note in another part. The ```*rscale```
samer@0: rhythmic-scaling interpretation will also be used in these cases.
samer@0: All parts in the data have a 1:1 rhythmic scaling against each other
samer@0: for analytic purposes. Applying the ```*rscale``` factor will cause
samer@0: a part to be displayed in its original rhythmic values (i.e., reverse
samer@0: the resolution of the autmentation/diminution).
samer@0:
samer@0: Triplet brackets are given explicitly in the data using "V" and "Z"
samer@0: characters (this will change in the future). Triplet brackets
samer@0: indicate music that was originally in colored notation, which is a
samer@0: mensural equivalent of triplets. Music in 3 mensuration (an alternate
samer@0: mensural method of showing triplets) may be represented as modern
samer@0: rhythmic triplets in the data, but will not contain triplet brackets.
samer@0:
samer@0: Ligatures are groups of notes with their heads attached to each other which
samer@0: typically gives information about the rhythm of the notes in mensural
samer@0: notation. Usually modern notation of mensural music will place brackets
samer@0: around individual notes which were originally part of a ligature group.
samer@0: However, ligatures are not indicated in this data.
samer@0:
samer@0:
samer@0: # Composers #
samer@0:
samer@0: Individual composer's works are archived independently, and each of their
samer@0: repositories can be viewed by clicking in the first column of the
samer@0: table below. Each composer is assigned a unique three-letter code
samer@0: listed in the first column that is the name of the directory in
samer@0: the meta-repository which contains each composer's works.
samer@0:
samer@0:
samer@0:
samer@0:
samer@0: Within each directory of the repository is a subdirectory
samer@0: called ```kern``` that contains the actual scores in the **kern data
samer@0: type of the Humdrum data file format.
samer@0:
samer@0: Currently, composers with complete (or nearly complete) sets of
samer@0: encoded works include: Josquin, Ockeghem, La Rue and de Orto.
samer@0:
samer@0:
samer@0: # Filenames #
samer@0:
samer@0: Each file in the database starts with a unique JRP catalog number.
samer@0: This consists of a three-letter composer ID as listed above,
samer@0: followed by a four-digit number to represent a specific work by
samer@0: that composer. Typically the first digit of the catalog number
samer@0: will indicate the genre of the work: 1 for masses, 2 for motets,
samer@0: and 3 for secular songs (see the ```!!!AGN``` reference record
samer@0: inside of the file for the actual genre designations). The music
samer@0: of Josquin is an exception, where the first two digits indicate its
samer@0: volume number in the New Josquin Edition, and the last two digits
samer@0: indicate the enumerated position of the work within that volume.
samer@0:
samer@0: After the four-digit work number, an optional letter indicates that
samer@0: a *movement*-level encoding of a work is found in the file. This
samer@0: system is used for storing mass sections in separate files, where
samer@0: "a" is the first section (usually the Kyrie section), "b" is the
samer@0: second section (usually the Gloria section), and so on.
samer@0:
samer@0: Work-level variants are indicated in the catalog number by adding
samer@0: a dot after the work number, followed by a variant number (of any
samer@0: digit length). Variants at the movement level are indicated by
samer@0: placing a dot after the variant letter(s) followed by a variant
samer@0: letter (or more than one lower-case letter). If a file contains
samer@0: an enumerable subsection of a movement, an optional digit will be
samer@0: appended to the catalog number (which may itself be followed by a
samer@0: dot and variant digits). Movement subsection numbers are not yet
samer@0: present in any datafile (and neither are Movement sub-subsections
samer@0: which would alternate back to letters like movement-level labels).
samer@0:
samer@0: After the catalog number, each filename contains a dash followed
samer@0: by title information. The title information may have up to three
samer@0: fixed fields, each separated by a dash from the other. The first
samer@0: component of the title information is the title of the work. This
samer@0: is optionally followed by the title of the movement (i.e., mass
samer@0: section names, such as the standard sections: kyrie, gloria, credo,
samer@0: sanctus, and agnus [dei]). A third optional section of the title
samer@0: in the filename is variant information. Spaces in the title are
samer@0: encoded as underscore characters in the filenames. Two underscores
samer@0: in a row indicate a slash in the title. No accent marks are given
samer@0: in the filename titles since they are
samer@0: [POSIX](http://en.wikipedia.org/wiki/POSIX) compliant; see the
samer@0: ```!!!OTL``` reference record within each file for the proper
samer@0: accentuation of work titles.
samer@0:
samer@0: Title information in filenames are a courtesy for human beings. As
samer@0: such they can be removed from filenames, leaving only the unique
samer@0: catalog numbers. (Removing catalog numbers will not result in
samer@0: unique filenames since a composer may write several songs with the
samer@0: same title).
samer@0:
samer@0:
samer@0: # Download #
samer@0:
samer@0: To download this Github repository using
samer@0: [git](http://en.wikipedia.org/wiki/Git_%29software%29) in a terminal, type:
samer@0:
samer@0: git clone --recursive https://github.com/josquin-research-project/jrp-scores
samer@0:
samer@0: The ```--recursive``` option is needed to download each of the
samer@0: individual composer repositories inside of the meta-repository.
samer@0:
samer@0: In a unix terminal, you can check to see if git is installed by
samer@0: typing ```which git```. If the terminal replies with a path to
samer@0: git, then you can proceed with the above cloning to download the
samer@0: repository. If not, then typically you can use a package manager
samer@0: to install git, such as ```apt-get install git``` or ```yum install
samer@0: git``` in linux. On Apple OS X computers, git can be installed
samer@0: directly from [here](http://git-scm.com/download/mac) or by more
samer@0: experienced users from a mac package manager such as
samer@0: [Homebrew](http://brew.sh). If you have a comicbook-like view of the
samer@0: computer world, you can download GUI interfaces for git
samer@0: [here](http://git-scm.com/downloads/guis). A [Github/git
samer@0: plugin](http://eclipse.github.com) is also available for the Eclipse
samer@0: IDE ([watch video](http://www.youtube.com/watch?v=ptK9-CNms98)).
samer@0:
samer@0: This repository cannot be downloaded in a very useful format from
samer@0: the ZIP link on the Github website, since the included repositories
samer@0: for each composer will not be included in that ZIP file. You must
samer@0: either use [git](http://en.wikipedia.org/wiki/Git_%29software%29)
samer@0: software or separately download each of the individual composer's
samer@0: ZIP files linked from the table above. Use [this bash
samer@0: script](https://gist.github.com/josquin-research-project/8177804)
samer@0: to download manually using wget (usually for linux &
samer@0: [cygwin](http://www.cygwin.com)), or [this bash
samer@0: script](https://gist.github.com/josquin-research-project/8177884)
samer@0: for OS X.
samer@0:
samer@0:
samer@0: # Update #
samer@0:
samer@0: After you have downloaded this repository with `git`, you can check
samer@0: periodically for updates for all composers' works using this command:
samer@0:
samer@0:
samer@0: git pull --recurse-submodules
samer@0: git submodule foreach git checkout master
samer@0:
samer@0:
samer@0: Alternatively, the makefile in the base directory can be used to
samer@0: run this command:
samer@0:
samer@0: make update
samer@0:
samer@0: If the scores were downloaded manually with one of the two gist
samer@0: scripts below, you must re-download all files to check for updates.
samer@0: Re-run one of these two scripts using either
samer@0: [wget](https://gist.github.com/josquin-research-project/8177804)
samer@0: (linux & cygwin) or
samer@0: [curl](https://gist.github.com/josquin-research-project/8177884)
samer@0: (Apple OS X).
samer@0:
samer@0: # Processing scores #
samer@0:
samer@0: The digital scores in this repository are designed to work with the
samer@0: [Humdrum Toolkit](http://www.humdrum.org/Humdrum)
samer@0: ([github](https://github.com/kroger/humdrum)) as well as [Humdrum
samer@0: Extras](http://extra.humdrum.org)
samer@0: ([github](https://github.com/craigsapp/humextra)).
samer@0: A makefile in the base directory of the repository contains some
samer@0: basic processing commands which either require
samer@0: [Humdrum Extras](http://extras.humdrum.org) to manipulate the
samer@0: data files, or commands (starting with "web") which download data
samer@0: generated online by the [JRP website](http://josquin.stanford.edu).
samer@0:
samer@0: Here are some of the make commands which you can run in the base directory
samer@0: of the downloaded repository:
samer@0:
samer@0:
samer@0: No additional software needed: |
samer@0: make |
samer@0: List all of the possible make commands (i.e., this list).
samer@0: |
samer@0: make update |
samer@0: Download any updates to the online repository.
samer@0: |
samer@0: make clean |
samer@0: Delete directories of data created by this makefile, such as
samer@0: kern-reduced, midi, pdf,
samer@0: pdf-notext.
samer@0: |
samer@0: make notitle |
samer@0: Remove titles from files names and store in directory
samer@0: called kern-notitle in each composer's directory.
samer@0: |
samer@0: make web-pdf |
samer@0: Download PDF files for graphical music scores for each piece from the
samer@0: JRP website.
samer@0: |
samer@0: make web-pdf-notext |
samer@0: Download PDF files for graphical music scores for each piece from the
samer@0: JRP website with lyrics removed
samer@0: from all parts.
samer@0: |
samer@0: make web-reduced |
samer@0: Download version of the data file which divides all note durations
samer@0: by a factor of four. This data is useful for doing rhythmic
samer@0: analysis with the standard Humdrum Toolkit.
samer@0: |
samer@0: Humdrum Extras
samer@0: installation required: |
samer@0: make reduced |
samer@0: Decrease all note durations by a factor of four. Output data
samer@0: will be stored in a directory called kern-reduced within
samer@0: each composer's directory. Similar to make web-reduced, but
samer@0: much faster.
samer@0: |
samer@0: make notext |
samer@0: Remove lyrics from all parts. Resulting data
samer@0: will be stored in a directory called kern-notext within
samer@0: each composer's directory.
samer@0: |
samer@0: make genres |
samer@0: Download works organized by genre from kernScores.
samer@0: |
samer@0: Humdrum Toolkit
samer@0: installation required: |
samer@0: make census |
samer@0: Run census -k on all works.
samer@0: |
samer@0:
samer@0:
samer@0:
samer@0:
samer@0: ### Rhythm representation considerations ###
samer@0:
samer@0: For proper rhythmic parsing in the Humdrum Toolkit, some files
samer@0: containing rational rhythmic values need to be diminuted by a factor
samer@0: of four to convert whole notes (typically the rhythmic level of a
samer@0: beat in the early Renaissance), into quarter notes (the typical
samer@0: modern rhythmic level for beats). This can be done with the
samer@0: [rscale](http://extras.humdrum.org/man/rscale) tool to apply a
samer@0: rhythmic scaling of 1/4 to all notes in all scores:
samer@0:
samer@0: rscale -f 1/4 oldfile > newfile
samer@0:
samer@0: A makefile in the base directory of this repository ([this
samer@0: one](https://github.com/josquin-research-project/jrp-scores/blob/master/Makefile)
samer@0: contains instructions to generate reduced rhythmic versions of all
samer@0: files. Type (if [Humdrum Extras](https://github.com/craigsapp/humextra)
samer@0: is installed):
samer@0:
samer@0: make reduced
samer@0:
samer@0: or if humextras is not installed, type:
samer@0:
samer@0: make web-reduced
samer@0:
samer@0: to download the reduced form from the JRP website ([example](http://josquin.stanford.edu/data?a=humdrumreduced&f=Jos2721-La_Bernardina)). This will create
samer@0: subdirectories in each composer directory named
samer@0: ```kern-reduced``` with the reduced rhythmic versions of the data files.
samer@0:
samer@0:
samer@0:
samer@0: ### Other example processing ###
samer@0:
samer@0: Here are some other interesting processing actions:
samer@0:
samer@0: * Determine works that include text/lyrics: grep -rl '\*\*text' \*/kern/\*
samer@0:
samer@0:
samer@0: # Alternate data access #
samer@0:
samer@0: ### JRP website ###
samer@0:
samer@0: The website http://josquin.stanford.edu is a high-level interface
samer@0: to these scores, but also includes lower-level access to the data,
samer@0: data conversions, and analytic tools using URL parameters in the
samer@0: web address. On the JRP website, each score has a "work info" page
samer@0: generated with this format:
samer@0:
samer@0: http://jrp.stanford.edu/cgi-bin/jrp?a=info&f=Jos2721
samer@0:
samer@0: Where ```Jos2721``` is the JRP catalog number 2721 from Josquin's
samer@0: collection of works, and ```info``` is the *action* being applied
samer@0: to the given work (file) which causes the work-info page to be
samer@0: displayed. A title may optionally follow the catalog number (with
samer@0: exact spelling of the title in the database):
samer@0:
samer@0: http://jrp.stanford.edu/cgi-bin/jrp?a=info&f=Jos2721-La_Bernardina
samer@0:
samer@0: A file extension can also be given (.krn in this case) but will
samer@0: always be ignored. Example Humdrum data file access by setting the
samer@0: *action* to "humdrum":
samer@0:
samer@0: http://jrp.stanford.edu/cgi-bin/jrp?a=humdrum&f=Jos2721-La_Bernardina
samer@0:
samer@0: Example MIDI data file access by setting the *action* to "midi":
samer@0:
samer@0: http://jrp.stanford.edu/cgi-bin/jrp?a=midi&f=Jos2721-La_Bernardina
samer@0:
samer@0: Example graphical music scores in PDF format with four possible styles:
samer@0: * Without editorial accidentals or text: http://jrp.stanford.edu/cgi-bin/jrp?a=notationnoedit&f=Duf1005a-Missa_Se_la_face_ay_pale-Kyrie
samer@0: * Without editorial accidentals but with text: http://jrp.stanford.edu/cgi-bin/jrp?a=notationnoeditwithtext&f=Duf1005a-Missa_Se_la_face_ay_pale-Kyrie
samer@0: * With editorial accidentals but without text: http://jrp.stanford.edu/cgi-bin/jrp?a=notationwitheditorial&f=Duf1005a-Missa_Se_la_face_ay_pale-Kyrie
samer@0: * With editorial accidentals and with text: http://jrp.stanford.edu/cgi-bin/jrp?a=notationwitheditorialwithtext&f=Duf1005a-Missa_Se_la_face_ay_pale-Kyrie
samer@0:
samer@0: Scores are generated from the original Humdrum **kern scores found
samer@0: in this repository for each work, so music notation in the PDF files
samer@0: should match exactly. Online PDF files of the scores are created
samer@0: using the [hum2muse](http://extra.humdrum.org/man/hum2muse) converter
samer@0: which translates Humdrum files into MuseData file which can then
samer@0: be converted into PostScript files with
samer@0: [muse2ps](http://muse2ps.ccarh.org).
samer@0:
samer@0:
samer@0: ### kernScores website ###
samer@0:
samer@0: The [kernScores](http://kern.humdrum.org) library of musical scores
samer@0: for analysis in the Humdrum Toolkit has a page dedicated to the JRP
samer@0: scores:
samer@0:
samer@0: http://kern.humdrum.org/browse?l=jrp
samer@0:
samer@0:
samer@0: ### Humdrum Extras tools/library ###
samer@0:
samer@0: The [Humdrum Extras](http://extra.humdrum.org) tools/library
samer@0: ([github](https://github.com/craigsapp/humextra)) contains internal
samer@0: knowledge for how to download the digital scores on the command
samer@0: line. To download from the JRP website, the filename is prefixed
samer@0: by ```jrp://```. To download from the kernScores website, the
samer@0: prefix is ```humdrum://```, or ```h://``` for short. KernScores
samer@0: access requires the exact file name (catalog number, title, file
samer@0: extension), while JRP access requires only the catalog number.
samer@0:
samer@0: Examples:
samer@0:
samer@0: humcat h://jrp/Jos/Jos2721-La_Bernardina.krn
samer@0: humcat jrp://Jos2721-La_Bernardina.krn
samer@0: humcat jrp://Jos2721
samer@0:
samer@0: Since it requires the full filename for accessing individual
samer@0: files, the kernScores downloading method is instead mostly useful
samer@0: for downloading an entire set of composer's works. Try the following
samer@0: humextra command to download all of the works for Ockeghem:
samer@0:
samer@0: mkdir Ock; cd Ock; humsplit h://jrp/Ock
samer@0:
samer@0: The kernScores website has five meta-collections of the scores: two for Josquin
samer@0: authenticity levels, and three for the main genres of mass, motet and song. These
samer@0: can be downloaded like this on the command line:
samer@0:
samer@0:
samer@0:
samer@0:
samer@0:
samer@0: Secure Josquin set:
samer@0: |
samer@0: mkdir -p Joa/kern; (cd Joa/kern; humsplit h://jrp/Joa)
samer@0: |
samer@0:
samer@0: Not secure Josquin set:
samer@0: |
samer@0: mkdir -p Job/kern; (cd Job/kern; humsplit h://jrp/Job)
samer@0: |
samer@0:
samer@0: All mass sections:
samer@0: |
samer@0: mkdir -p Zma/kern; (cd Zma/kern; humsplit h://jrp/Zma)
samer@0: |
samer@0:
samer@0: All motets:
samer@0: |
samer@0: mkdir -p Zmo/kern; (cd Zmo/kern; humsplit h://jrp/Zmo)
samer@0: |
samer@0:
samer@0: All songs:
samer@0: |
samer@0: mkdir -p Zso/kern; (cd Zso/kern; humsplit h://jrp/Zso)
samer@0: |
samer@0:
samer@0:
samer@0:
samer@0: Type ```make genres``` in the base directory of the repository if
samer@0: [Humdrum Extras](https://github.com/craigsapp/humextras) is installed to
samer@0: download the Zma, Zmo, and Zso genre groupings from the kernScores website.
samer@0:
samer@0: Type ```make Joa; make Job``` in the base directory of the repository if
samer@0: [Humdrum Extras](https://github.com/craigsapp/humextras) is installed to
samer@0: download the secure and not secure groupings of Josquin music.
samer@0:
samer@0:
samer@0:
samer@0: