theHarmonicAlgorithm-3.1.1: Real-time harmonic progression generation for TidalCycles live performance
Safe HaskellNone
LanguageGHC2021

Harmonic.Rules.Import.CSV

Description

Parses Yale Classical Archives Corpus data from CSV format into typed Haskell records for downstream transformation and graph storage.

Synopsis

Corpus rows

data YCACLRow Source #

One row of the YCACL artifact exported by scripts/export_ycacl.R.

The CSV carries pitches as a space-separated string in a single column; the FromNamedRecord instance splits and parses that into yrPitches.

Constructors

YCACLRow 

Fields

Instances

Instances details
FromNamedRecord YCACLRow Source # 
Instance details

Defined in Harmonic.Rules.Import.CSV

Methods

parseNamedRecord :: NamedRecord -> Parser YCACLRow

Show YCACLRow Source # 
Instance details

Defined in Harmonic.Rules.Import.CSV

Eq YCACLRow Source # 
Instance details

Defined in Harmonic.Rules.Import.CSV

Nested corpus map

type ComposerId = Text Source #

Composer name, used as the outer key of YCACLData. Case is preserved here; composer matching is case-insensitive and happens downstream.

type PieceId = Text Source #

Piece identifier, unique within one composer.

type YCACLData = Map ComposerId (Map PieceId [ChordSlice]) Source #

The whole corpus, grouped composer then piece, with each piece reduced to its ordered list of slices.

Loading

loadYCACLData :: FilePath -> IO YCACLData Source #

Load YCACL artifact (composer, piece, order, pitches, fundamental) into nested maps.