1#![cfg_attr(docsrs, feature(doc_cfg))]
40#![deny(missing_docs)]
41#![deny(missing_debug_implementations)]
42#![forbid(unsafe_code)]
43
44#[cfg(doctest)]
46#[doc = include_str!("../README.md")]
47mod readme {}
48pub mod abc;
54pub mod alpha;
56pub mod analysis;
58pub mod articulations;
60pub mod audiosearch;
62pub mod bar;
64pub mod braille;
65pub mod capella;
66pub mod chord;
68pub mod chordsymbol;
70pub mod clef;
72pub(crate) mod common;
73pub(crate) mod defaults;
74pub(crate) mod display;
75pub mod duration;
77pub mod dynamics;
79pub mod error;
81pub mod expressions;
83pub mod features;
85
86pub mod figuredbass;
88pub mod humdrum;
90pub mod instrument;
92
93pub mod interval;
95pub mod key;
97pub mod layout;
99pub mod lily;
101pub mod makenotation;
104pub mod mei;
106pub mod metadata;
108pub mod meter;
110pub mod midi;
112pub mod musedata;
115pub mod musescore;
116#[cfg(feature = "musicxml")]
119pub mod musicxml;
120pub mod notation;
122pub mod note;
124pub mod noteworthy;
125pub mod omr;
126pub mod percussion;
128pub mod pitch;
130pub mod polyrhythm;
132pub mod repeat;
134pub mod rest;
136pub mod roman;
138pub mod romantext;
140pub mod scale;
142pub mod search;
144pub mod serial;
146pub mod sieve;
147pub mod spanner;
149pub(crate) mod statistics;
150pub(crate) mod stepname;
151pub mod stream;
154pub mod style;
156pub mod tablature;
158pub mod tempo;
160pub mod text;
162pub mod tinynotation;
164pub mod tree;
167pub mod tuningsystem;
169pub mod variant;
170pub mod voiceleading;
172pub mod volpiano;
173pub mod volume;
174mod xml;
175pub use abc::{
179 abc_chord, abc_duration, abc_note, abc_rest, pitch_name_from_abc_note,
180 pitch_names_from_abc_chord,
181};
182pub use analysis::{
183 KeyEstimate, KeyProfile, estimate_key_from_chords, estimate_key_from_chords_with,
184 estimate_key_from_pitches, estimate_key_from_pitches_with,
185};
186pub use analysis::{tonal_certainty, tonal_certainty_from_scores};
187pub use articulations::{Articulation, ArticulationKind};
188pub use bar::{Barline, BarlineType, Ending, RepeatDirection};
189pub use chord::{
190 Chord, ChordResolutionSuggestion, ChordTableAddress, GuitarFingering, GuitarStringFingering,
191 GuitarTuning, GuitarTuningString, IntoNotes, KnownChordType, TriadQuality,
192 format_vector_string,
193};
194pub use chordsymbol::{
195 ChordAlteration, ChordQuality, ChordStepModification, ChordStepModificationType, ChordSymbol,
196 Music21ChordType, chord_symbol_figure_from_chord, chord_symbol_from_chord,
197 known_chord_symbol_types, realize_chord_symbol_durations,
198};
199pub use clef::{Clef, ClefKind};
200pub use defaults::{FloatType, FractionType, IntegerType, Octave, UnsignedIntegerType};
201pub use duration::{
202 Duration, DurationTuple, DurationType, Grace, Tuplet, TupletBracket, TupletShow, TupletType,
203 quarter_length_to_closest_type,
204};
205pub use dynamics::Dynamic;
206pub use error::{Error, Result};
207pub use instrument::{Instrument, SearchLanguage, ensemble_name_by_size};
208pub use interval::{
209 ChromaticInterval, DiatonicInterval, GenericInterval, Interval, IntervalDirection, Specifier,
210 absolute_higher_pitch, absolute_lower_pitch, convert_diatonic_number_to_step, convert_generic,
211 convert_semitone_to_specifier_generic, convert_semitone_to_specifier_generic_microtone,
212 intervals_to_diatonic, notes_to_chromatic, notes_to_generic, parse_specifier,
213 staff_distance_to_generic_number, written_higher_pitch, written_lower_pitch,
214};
215pub use key::{Key, KeySignature, convert_key_string_to_music21_key_string};
216pub use metadata::{Metadata, MetadataValue};
217pub use meter::{BeamedNote, BeatDivision, MeterTerminal, OffsetAlign, TimeSignature};
218pub use midi::{
219 DEFAULT_TICKS_PER_QUARTER, MidiNote, midi_notes_from_stream, read_midi_bytes,
220 read_midi_bytes_with_tempo, stream_from_midi_notes, write_midi_bytes,
221};
222pub use notation::{
223 Beam, BeamDirection, BeamType, Beams, Justification, Lyric, NoteSize, Notehead, Placement,
224 StemDirection, Syllabic, Tie, TieStyle, TieType,
225};
226pub use note::{IntoNote, Note};
227pub use percussion::{PercussionChord, PercussionNote, Unpitched};
228pub use pitch::{
229 Accidental, AccidentalAttribute, AccidentalDisplayOptions, AccidentalSpecifier,
230 CHROMATIC_PITCH_CLASS_NAMES, Microtone, MicrotoneSpecifier, Pitch, PitchClass,
231 PitchClassSpecifier, PitchName, PitchOptions, convert_pitch_class_to_str, dissonance_score,
232 pitch_class_name, simplify_multiple_enharmonics,
233};
234pub use polyrhythm::{Polyrhythm, PolyrhythmAnalysis, PolyrhythmEvent, PolyrhythmRatioTone};
235pub use repeat::{RepeatExpression, RepeatExpressionKind};
236pub use rest::Rest;
237pub use roman::roman_numeral_from_chord;
238pub use roman::{
239 ImpliedQuality, Minor67Default, NumeralAlone, RomanNumeral, analyze_chord,
240 analyze_chord_with_root, identify_as_tonic_or_dominant, roman_inversion_name,
241};
242pub use scale::{
243 BluesForm, DegreeComparison, Scale, ScaleType, Simplification, SolfegVariant, StepScale,
244 WeightedHexatonicBlues,
245};
246pub use serial::{
247 HISTORICAL_ROWS, HistoricalRow, IndexedTransformation, LinkClassification, ToneRow,
248 Transformation, TransformationConvention, TwelveToneMatrix, historical_row_by_name,
249 row_to_matrix,
250};
251pub use sieve::Sieve;
252pub use spanner::{
253 Glissando, LineEnd, LineEnds, OctaveShift, Pedal, PedalForm, PedalObject, PedalObjectKind,
254 PedalType, SlideType, Spanner, SpannerKind,
255};
256pub use stream::{BarTogether, StaffGroup, Stream, StreamElement, StreamEvent, StreamKind};
257pub use tempo::{
258 DEFAULT_TEMPO_VALUES, MetricModulation, MetronomeMark, ModulationSide, TempoText,
259 convert_tempo_by_referent, interpolate_elements,
260};
261pub use tuningsystem::{
262 ALL_TUNING_SYSTEMS, COMMON_EQUAL_TEMPERAMENTS, COMMON_TWELVE_TONE_TUNING_SYSTEMS,
263 EqualDivision, HISTORICAL_TEMPERAMENTS, Monzo, Mos, MosScale, OCTAVE_CENTS, Ratio,
264 TRITAVE_CENTS, Temperament, TuningSystem, Val, moment_of_symmetry_sizes,
265 scala::{ScalaArchive, ScalaDegree, ScalaScale},
266};
267pub use voiceleading::{
268 MotionType, QuartetOptions, VoiceLeadingQuartet, iterate_all_voice_leading_quartets,
269 verticality_at,
270};
271pub use volume::{DynamicContext, Volume, realize_volume};