import { PaperSpeed, RollCopy } from "../model/RollCopy.js"; import { TrackerBar } from "../systems/TrackerBar.js"; /** * Rows of the image on an inch of paper. The player reads eight rows a * second per unit of roll tempo (tempo 80 comes with a sample rate of * 640 Hz), and the tempo counts tenths of a foot per minute, which puts * 400 rows on an inch. This is the file's own calibration; whether the * scanner kept it is for an alignment with other copies to tell. * @category Sources */ export declare const SPENCER_ROWS_PER_INCH = 400; /** * How `readFromSpencerBar` reads a file: the rows of its image on an * inch of paper, and the bar it numbers its positions by. * @category Sources */ export interface SpencerBarOptions { /** Rows of the image on an inch of paper. */ rowsPerInch?: number; /** * The bar the file numbers its positions by, which is the bar of * the roll it was scanned from. His Welte files are Licensee rolls. */ system?: TrackerBar; } /** * Reads the copy on the bar it was cut for, whose numbering it keeps. * A chain on a position that bar does not read is left out, as the bar * would leave it. * @category Sources */ export declare function readFromSpencerBar(buffer: ArrayBuffer, { rowsPerInch, system }?: SpencerBarOptions): RollCopy; /** * The `.ann` file beside a `.bar` holds the player's settings for the * roll as lines of "/key: value": title, composer, pianist, roll * number and class, and the tempo the roll is played at. * @category Sources */ export declare const readSpencerAnn: (text: string) => ReadonlyMap; /** * The paper speed a `.ann` states through its roll tempo, where it states one. * @category Sources */ export declare const paperSpeedOfSpencerAnn: (ann: ReadonlyMap) => PaperSpeed | undefined;