coltrane v0.0.1 Coltrane.Theory.Interval
Intervals describe the relationship between 2 different notes
Link to this section Summary
Functions
iex> Interval.alter_quality(“M”, 0) “M”
This function gets the interval between 2 notes
iex> Interval.from_notation(“5P”)
...> |> Interval.circle
...> |> Enum.map(&Interval.name/1)
["1P", "2M", "3M", "4P", "5P", "6M", "7M"]
iex> Interval.expand_name(“1P”) “Perfect Unison”
iex> Interval.from_notation(“1P”)
%Interval{letter_distance: 0, alteration: 0}
iex> Interval.full_name(%Interval{letter_distance: 3, alteration: -1}) “Diminished Fourth”
Examples:
iex> Interval.letter_distance(“C”, “D”) 1
iex> Interval.name(%Interval{letter_distance: 0, alteration: 0}) “1P”
iex> “2M” |> Interval.from_notation |> Interval.semitones
2
iex> [“3M”, “3M”]
...> |> Enum.map(&Interval.from_notation/1)
...> |> Enum.reduce(&Interval.sum/2)
...> |> Interval.name
"5P"
Link to this section Functions
iex> Interval.alter_quality(“M”, 0) “M”
iex> Interval.alter_quality(“M”, 1) “A”
iex> Interval.alter_quality(“M”, -1) “m”
iex> Interval.alter_quality(“M”, -2) “D”
iex> Interval.alter_quality(“M”, -3) “DD”
iex> Interval.alter_quality(“P”, 0) “P”
iex> Interval.alter_quality(“P”, 1) “A”
iex> Interval.alter_quality(“P”, -1) “D”
iex> Interval.alter_quality(“P”, -2) “DD”
iex> Interval.alter_quality(“P”, 2) “AA”
This function gets the interval between 2 notes
Examples
iex> Interval.between(“C”, “C#”) %Interval{alteration: 1, letter_distance: 0}
iex> Interval.between(“C”, “D”) %Interval{alteration: 0, letter_distance: 1}
iex> Interval.between(“C”, “D”) %Interval{letter_distance: 1, alteration: 0}
iex> Interval.from_notation("5P")
...> |> Interval.circle
...> |> Enum.map(&Interval.name/1)
["1P", "2M", "3M", "4P", "5P", "6M", "7M"]
iex> Interval.expand_name(“1P”) “Perfect Unison”
iex> Interval.expand_name(“3m”) “Minor Third”
iex> Interval.expand_name(“5A”) “Augmented Fifth”
iex> Interval.expand_name(“5AAA”) “Triple Augmented Fifth”
iex> Interval.expand_name(“1DD”) “Double Diminished Unison”
iex> Interval.from_notation("1P")
%Interval{letter_distance: 0, alteration: 0}
iex> Interval.from_notation("2M")
%Interval{letter_distance: 1, alteration: 0}
iex> Interval.from_notation("3m")
%Interval{letter_distance: 2, alteration: -1}
iex> Interval.from_notation("4m")
%Coltrane.Theory.Interval{alteration: -1, letter_distance: 3}
iex> Interval.from_notation("5AA")
%Interval{letter_distance: 4, alteration: 2}
iex> Interval.full_name(%Interval{letter_distance: 3, alteration: -1}) “Diminished Fourth”
iex> Interval.full_name(%Interval{letter_distance: 2, alteration: 0}) “Major Third”
Examples:
iex> Interval.letter_distance(“C”, “D”) 1
iex> Interval.letter_distance(“D”, “C”) -1
iex> Interval.letter_distance(“C”, “B”) 6
iex> Interval.letter_distance(“B”, “C”) -6
iex> Interval.name(%Interval{letter_distance: 0, alteration: 0}) “1P”
iex> Interval.name(%Interval{letter_distance: 2, alteration: 0}) “3M”
iex> Interval.name(%Interval{letter_distance: 1, alteration: -1}) “2m”
iex> Interval.name(%Interval{letter_distance: 2, alteration: -1}) “3m”
iex> Interval.name(%Interval{letter_distance: 3, alteration: 1}) “4A”
iex> Interval.name(%Interval{letter_distance: 3, alteration: 2}) “4AA”
iex> "2M" |> Interval.from_notation |> Interval.semitones
2
iex> "1A" |> Interval.from_notation |> Interval.semitones
1
iex> "3D" |> Interval.from_notation |> Interval.semitones
3
iex> "3M" |> Interval.from_notation |> Interval.semitones
4
iex> "4A" |> Interval.from_notation |> Interval.semitones
6
iex> %Interval{letter_distance: 8} |> Interval.semitones
1
iex> ["3M", "3M"]
...> |> Enum.map(&Interval.from_notation/1)
...> |> Enum.reduce(&Interval.sum/2)
...> |> Interval.name
"5P"
iex> ["3M", "3m", "3M"]
...> |> Enum.map(&Interval.from_notation/1)
...> |> Enum.reduce(&Interval.sum/2)
...> |> Interval.name
"7m"