Zrythm
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
scale.h File Reference

Musical scales. More...

#include <stdint.h>
#include "dsp/chord_descriptor.h"
#include <glib/gi18n.h>
Include dependency graph for scale.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  MusicalScale
 Musical scale descriptor. More...
 

Macros

#define SCALE_SCHEMA_VERSION   2
 

Enumerations

enum  MusicalScaleType {
  SCALE_CHROMATIC , SCALE_MAJOR , SCALE_MINOR , SCALE_IONIAN ,
  SCALE_DORIAN , SCALE_PHRYGIAN , SCALE_LYDIAN , SCALE_MIXOLYDIAN ,
  SCALE_AEOLIAN , SCALE_LOCRIAN , SCALE_MELODIC_MINOR , SCALE_HARMONIC_MINOR ,
  SCALE_WHOLE_TONE , SCALE_MAJOR_PENTATONIC , SCALE_MINOR_PENTATONIC , SCALE_OCTATONIC_HALF_WHOLE ,
  SCALE_OCTATONIC_WHOLE_HALF , SCALE_ACOUSTIC , SCALE_HARMONIC_MAJOR , SCALE_PHRYGIAN_DOMINANT ,
  SCALE_MAJOR_LOCRIAN , SCALE_ALGERIAN , SCALE_AUGMENTED , SCALE_DOUBLE_HARMONIC ,
  SCALE_CHINESE , SCALE_DIMINISHED , SCALE_DOMINANT_DIMINISHED , SCALE_EGYPTIAN ,
  SCALE_EIGHT_TONE_SPANISH , SCALE_ENIGMATIC , SCALE_GEEZ , SCALE_HINDU ,
  SCALE_HIRAJOSHI , SCALE_HUNGARIAN_GYPSY , SCALE_INSEN , SCALE_NEAPOLITAN_MAJOR ,
  SCALE_NEAPOLITAN_MINOR , SCALE_ORIENTAL , SCALE_ROMANIAN_MINOR , SCALE_ALTERED ,
  SCALE_MAQAM , SCALE_YO , SCALE_BEBOP_LOCRIAN , SCALE_BEBOP_DOMINANT ,
  SCALE_BEBOP_MAJOR , SCALE_SUPER_LOCRIAN , SCALE_ENIGMATIC_MINOR , SCALE_COMPOSITE ,
  SCALE_BHAIRAV , SCALE_HUNGARIAN_MINOR , SCALE_PERSIAN , SCALE_IWATO ,
  SCALE_KUMOI , SCALE_PELOG , SCALE_PROMETHEUS , SCALE_PROMETHEUS_NEAPOLITAN ,
  SCALE_PROMETHEUS_LISZT , SCALE_BALINESE , SCALE_RAGATODI , SCALE_JAPANESE1 ,
  SCALE_JAPANESE2 , SCALE_BLUES , SCALE_FLAMENCO , SCALE_GYPSY ,
  SCALE_HALF_DIMINISHED , SCALE_IN , SCALE_ISTRIAN , SCALE_LYDIAN_AUGMENTED ,
  SCALE_TRITONE , SCALE_UKRANIAN_DORIAN , NUM_SCALES
}
 Scale type (name) eg Aeolian. More...
 

Functions

MusicalScalemusical_scale_new (MusicalScaleType type, MusicalNote root)
 Creates new scale using type and root note.
 
const bool * musical_scale_get_notes (MusicalScaleType scale_type, bool ascending)
 Returns the notes in the given scale.
 
RETURNS_NONNULL const ChordTypemusical_scale_get_triad_types (MusicalScaleType scale_type, bool ascending)
 Returns the triads in the given scale.
 
MusicalScalemusical_scale_clone (MusicalScale *src)
 Clones the scale.
 
const char * musical_scale_type_to_string (const MusicalScaleType type)
 
char * musical_scale_to_string (const MusicalScale *const self)
 Prints the MusicalScale to a string.
 
void musical_scale_strcpy (MusicalScale *scale, char *buf)
 Same as above but uses a buffer instead of allocating.
 
bool musical_scale_contains_chord (const MusicalScale *const scale, const ChordDescriptor *const chord)
 Returns if all of the chord's notes are in the scale.
 
int musical_scale_is_accent_in_scale (MusicalScale *scale, MusicalNote chord_root, ChordType type, ChordAccent chord_accent)
 Returns if the accent is in the scale.
 
bool musical_scale_contains_note (const MusicalScale *scale, MusicalNote note)
 Returns if the given key is in the given MusicalScale.
 
char * musical_scale_as_string (MusicalScale *scale)
 Returns the scale in human readable string.
 
void musical_scale_free (MusicalScale *scale)
 Frees the MusicalScale.
 

Detailed Description

Musical scales.

See https://pianoscales.org/

Definition in file scale.h.