UNPKG

smoosic

Version:

<sub>[Github site](https://github.com/Smoosic/smoosic) | [source documentation](https://smoosic.github.io/Smoosic/release/docs/modules.html) | [change notes](https://aarondavidnewman.github.io/Smoosic/changes.html) | [application](https://smoosic.github.i

258 lines 7.35 kB
import { XmlDurationAlteration, XmlLyricData, XmlSlurType, XmlTieType, XmlTupletType } from './xmlHelpers'; import { SmoScore } from '../data/score'; import { SmoFormattingManager, SmoSystemGroup } from '../data/scoreModifiers'; import { SmoSystemStaff } from '../data/systemStaff'; import { SmoInstrument, SmoInstrumentParams, SmoSlurParams } from '../data/staffModifiers'; import { SmoTempoText } from '../data/measureModifiers'; import { SmoPartInfo } from '../data/partInfo'; import { SmoMeasure } from '../data/measure'; import { SmoNote } from '../data/note'; import { SmoGraceNote } from '../data/noteModifiers'; import { SmoTuplet, SmoTupletTree } from '../data/tuplet'; import { SmoSelector } from '../xform/selections'; /** * @category serialization */ export interface XmlClefInfo { clef: string; staffId: number; } /** * @category serialization */ export interface XmlVoiceInfo { notes: SmoNote[]; ticksUsed: number; } /** * @category serialization */ export interface XmlStaffInfo { clefInfo: XmlClefInfo; measure: SmoMeasure | null; voices: Record<string | number, XmlVoiceInfo>; } /** * @category serialization */ export interface XmlBeamGroupInfo { ticks: number; notes: number; } /** * @category serialization */ export interface XmlSystemInfo { startSelector: SmoSelector; endSelector: SmoSelector; leftConnector: number; } /** * @category serialization */ export interface XmlStaffGroupInfo { start: number; length: number; } /** * Wedge is a hairpin/cresc. */ export interface XmlWedgeInfo { type: string; } /** * @category serialization */ export interface XmlWedgeState { type: string; start: number; } /** * @category serialization */ export interface XmlHairpinInfo { type: string; start: number; end: number; } /** * @category serialization */ export interface XmlDynamicInfo { dynamic: string; offset: number; } /** * @category serialization */ export interface XmlCompletedTies { startSelector: SmoSelector; endSelector: SmoSelector; fromPitch: number; toPitch: number; } /** * @category serialization */ export interface XmlCompletedTuplet { tuplet: SmoTuplet; staffId: number; voiceId: number; } /** * @category serialization */ export declare class XmlTupletStateTreeNode { tupletState: XmlTupletState; children: XmlTupletStateTreeNode[]; constructor(tupletState: XmlTupletState); } /** * @category serialization */ export interface XmlCompletedTupletState { tupletState: XmlTupletState; staffId: number; voiceId: number; } /** * @category serialization */ export interface XmlTupletState { start: SmoSelector | null; end: SmoSelector | null; data: XmlTupletData | null; } /** * @category serialization */ export interface XmlTupletData { numNotes: number; notesOccupied: number; stemTicks: number; } /** * @category serialization */ export interface XmlEnding { start: number; end: number; number: number; } /** * @category serialization */ export interface XmlPartGroup { partNum: number; group: SmoSystemGroup; parts: number[]; } /** * Keep state of musical objects while parsing music xml * @category serialization * */ export declare class XmlState { static get defaults(): { divisions: number; tempo: SmoTempoText; timeSignature: string; keySignature: string; clefInfo: never[]; staffGroups: never[]; smoStaves: never[]; }; clefInfo: XmlClefInfo[]; systems: XmlSystemInfo[]; staffGroups: XmlStaffGroupInfo[]; smoStaves: SmoSystemStaff[]; slurs: Record<number, XmlSlurType | null>; wedges: XmlWedgeState; hairpins: XmlHairpinInfo[]; instrument: SmoInstrumentParams; instrumentMap: Record<number, SmoInstrument>; globalCursor: number; staffVoiceHash: Record<string | number, number[]>; endingMap: Record<number, XmlEnding[]>; startRepeatMap: Record<number, number>; endRepeatMap: Record<number, number>; startBarline: number; endBarline: number; measureIndex: number; completedSlurs: SmoSlurParams[]; completedTies: XmlTieType[]; verseMap: Record<number | string, number>; measureNumber: number; formattingManager: SmoFormattingManager; completedTupletStates: XmlCompletedTupletState[]; tupletStatesInProgress: Record<number, XmlTupletState>; tickCursor: number; tempo: SmoTempoText; staffArray: XmlStaffInfo[]; staffIndex: number; graceNotes: SmoGraceNote[]; currentDuration: number; beamGroups: Record<number, XmlBeamGroupInfo | null>; dynamics: XmlDynamicInfo[]; previousNote: SmoNote; completedTuplets: XmlCompletedTuplet[]; newTitle: boolean; divisions: number; keySignature: string; timeSignature: string; voiceIndex: number; pixelsPerTenth: number; musicFontSize: number; partId: string; rehearsalMark: string; rehearsalMarks: Record<number, string>; parts: Record<string, SmoPartInfo>; openPartGroup: XmlPartGroup | null; initializeForPart(): void; initializeForMeasure(measureElement: Element): void; initializeStaff(staffIndex: number, voiceIndex: number): void; updateStaffGroups(): void; addLyric(note: SmoNote, lyricData: XmlLyricData): void; /** * process a wedge aka hairpin dynamic * @param wedgeInfo */ processWedge(wedgeInfo: XmlWedgeInfo): void; backtrackHairpins(smoStaff: SmoSystemStaff, staffId: number): void; updateDynamics(): void; backtrackBeamGroup(voice: XmlVoiceInfo, beamGroup: XmlBeamGroupInfo): void; updateBeamState(beamState: number, alteration: XmlDurationAlteration, voice: XmlVoiceInfo, voiceIndex: number): void; updateTieStates(tieInfos: XmlTieType[]): void; updateEndings(barlineNode: Element): void; /** * While parsing a measure, * on a slur element, either complete a started * slur or start a new one. * @param slurInfos */ updateSlurStates(slurInfos: XmlSlurType[]): void; assignRehearsalMarks(): void; /** * After reading in a measure, update any completed slurs and make them * into SmoSlur and add them to the SmoSystemGroup objects. * staffIndexOffset is the offset from the xml staffId and the score staff Id * (i.e. the staves that have already been parsed in other parts) */ completeSlurs(): void; /** * Go through saved start ties, try to find the endpoint of the tie. Ties in music xml * are a little ambiguous, we assume we are tying to the same pitch * @param score */ completeTies(score: SmoScore): void; updateTupletStates(tupletInfos: XmlTupletType[], voice: XmlVoiceInfo, staffIndex: number, voiceIndex: number): void; addTupletsToMeasure(smoMeasure: SmoMeasure, staffId: number, voiceId: number): void; private findAndRemoveCompletedTupletStatesByStaffAndVoice; private buildXmlTupletStateTrees; private sortTupletStates; /** * Create SmoTuplets out of completedTupletStates */ buildSmoTupletTreesFromXmlTupletStateTrees(xmlTupletStateTrees: XmlTupletStateTreeNode[], notes: SmoNote[]): SmoTupletTree[]; getSystems(): SmoSystemGroup[]; } //# sourceMappingURL=xmlState.d.ts.map