78 lines
2.1 KiB
Python
78 lines
2.1 KiB
Python
|
# Copyright 2016 Google Inc. All Rights Reserved.
|
||
|
#
|
||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
# you may not use this file except in compliance with the License.
|
||
|
# You may obtain a copy of the License at
|
||
|
#
|
||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||
|
#
|
||
|
# Unless required by applicable law or agreed to in writing, software
|
||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
# See the License for the specific language governing permissions and
|
||
|
# limitations under the License.
|
||
|
"""Constants for music processing in Magenta."""
|
||
|
|
||
|
# Meter-related constants.
|
||
|
DEFAULT_QUARTERS_PER_MINUTE = 120.0
|
||
|
DEFAULT_STEPS_PER_BAR = 16 # 4/4 music sampled at 4 steps per quarter note.
|
||
|
DEFAULT_STEPS_PER_QUARTER = 4
|
||
|
|
||
|
# Standard pulses per quarter.
|
||
|
# https://en.wikipedia.org/wiki/Pulses_per_quarter_note
|
||
|
STANDARD_PPQ = 96
|
||
|
|
||
|
# Special melody events.
|
||
|
NUM_SPECIAL_MELODY_EVENTS = 2
|
||
|
MELODY_NOTE_OFF = -1
|
||
|
MELODY_NO_EVENT = -2
|
||
|
|
||
|
# Other melody-related constants.
|
||
|
MIN_MELODY_EVENT = -2
|
||
|
MAX_MELODY_EVENT = 127
|
||
|
MIN_MIDI_PITCH = 0 # Inclusive.
|
||
|
MAX_MIDI_PITCH = 127 # Inclusive.
|
||
|
NOTES_PER_OCTAVE = 12
|
||
|
|
||
|
# Chord symbol for "no chord".
|
||
|
NO_CHORD = 'N.C.'
|
||
|
|
||
|
# NOTE_KEYS[note] = The major keys that note belongs to.
|
||
|
# ex. NOTE_KEYS[0] lists all the major keys that contain the note C,
|
||
|
# which are:
|
||
|
# [0, 1, 3, 5, 7, 8, 10]
|
||
|
# [C, C#, D#, F, G, G#, A#]
|
||
|
#
|
||
|
# 0 = C
|
||
|
# 1 = C#
|
||
|
# 2 = D
|
||
|
# 3 = D#
|
||
|
# 4 = E
|
||
|
# 5 = F
|
||
|
# 6 = F#
|
||
|
# 7 = G
|
||
|
# 8 = G#
|
||
|
# 9 = A
|
||
|
# 10 = A#
|
||
|
# 11 = B
|
||
|
#
|
||
|
# NOTE_KEYS can be generated using the code below, but is explicitly declared
|
||
|
# for readability:
|
||
|
# scale = [1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1]
|
||
|
# NOTE_KEYS = [[j for j in range(12) if scale[(i - j) % 12]]
|
||
|
# for i in range(12)]
|
||
|
NOTE_KEYS = [
|
||
|
[0, 1, 3, 5, 7, 8, 10],
|
||
|
[1, 2, 4, 6, 8, 9, 11],
|
||
|
[0, 2, 3, 5, 7, 9, 10],
|
||
|
[1, 3, 4, 6, 8, 10, 11],
|
||
|
[0, 2, 4, 5, 7, 9, 11],
|
||
|
[0, 1, 3, 5, 6, 8, 10],
|
||
|
[1, 2, 4, 6, 7, 9, 11],
|
||
|
[0, 2, 3, 5, 7, 8, 10],
|
||
|
[1, 3, 4, 6, 8, 9, 11],
|
||
|
[0, 2, 4, 5, 7, 9, 10],
|
||
|
[1, 3, 5, 6, 8, 10, 11],
|
||
|
[0, 2, 4, 6, 7, 9, 11]
|
||
|
]
|