Skip to content
Open
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions AugmentedNet/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,15 @@ class DefaultArguments(object):
"outputRepresentations": [
"Alto35",
"Bass35",
# "ChordQuality11",
# "ChordRoot35",
"ChordQuality11",
"ChordRoot35",
"HarmonicRhythm7",
# "Inversion4",
"Inversion4",
"LocalKey38",
"PitchClassSet121",
# "PrimaryDegree22",
"PrimaryDegree22",
"RomanNumeral31",
# "SecondaryDegree22",
"SecondaryDegree22",
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Interesting. Are you running your experiments with all of these classification outputs turned on? I actually think I've never done that :).

"Soprano35",
"Tenor35",
"TonicizedKey38",
Expand Down
2 changes: 1 addition & 1 deletion AugmentedNet/output_representations.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ class Inversion4(OutputRepresentationTI):
classList = list(range(4))
dfFeature = "a_inversion"

def run(self):
def run(self, transposition="P1"):
array = np.zeros(self.shape, dtype=self.dtype)
for frame, inversion in enumerate(self.df[self.dfFeature]):
if inversion > 3:
Expand Down
118 changes: 118 additions & 0 deletions AugmentedNet/texturizers.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
"""Templates for texturizing annotation files and turn them into scores."""

import random
from music21 import note
from music21 import interval


class TextureTemplate(object):
Expand Down Expand Up @@ -218,6 +220,118 @@ def templateSeventh(self):
"""


class AuxiliaryNotesUp(TextureTemplate):
"""A pitch pattern that creates a minor second interval in the middle of the chord.
"""

supported_durations = [1.0, 2.0]

def templateTriad(self):
transposed_note = note.Note(self.notes[2]).transpose(1)
transposed_name = transposed_note.nameWithOctave
transposed_interval = interval.Interval(noteStart=note.Note(self.notes[0]), noteEnd=transposed_note).name
dur = self.duration / 4
return f"""\
0.0,{dur},,"['{self.notes[0]}', '{self.notes[1]}', '{self.notes[2]}']","['{self.intervals[0]}', '{self.intervals[1]}']","[True, True, True]"
{dur},{dur},,"['{self.notes[0]}', '{self.notes[1]}', '{transposed_name}']","['{self.intervals[0]}', '{transposed_interval}']","[False, False, True]"
{dur*2},{dur*2},,"['{self.notes[0]}', '{self.notes[1]}', '{self.notes[2]}']","['{self.intervals[0]}', '{self.intervals[1]}']","[False, False, True]"
"""

def templateSeventh(self):
transposed_note = note.Note(self.notes[3]).transpose(1)
transposed_name = transposed_note.nameWithOctave
transposed_interval = interval.Interval(noteStart=note.Note(self.notes[0]), noteEnd=transposed_note).name
dur = self.duration / 4
return f"""\
0.0,{dur},,"['{self.notes[0]}', '{self.notes[1]}', '{self.notes[2]}', '{self.notes[3]}']","['{self.intervals[0]}', '{self.intervals[1]}', '{self.intervals[2]}']","[True, True, True, True]"
{dur},{dur},,"['{self.notes[0]}', '{self.notes[1]}', '{self.notes[2]}', '{transposed_name}']","['{self.intervals[0]}', '{self.intervals[1]}', '{transposed_interval}']","[False, False, False, True]"
{dur*2},{dur*2},,"['{self.notes[0]}', '{self.notes[1]}', '{self.notes[2]}', '{self.notes[3]}']","['{self.intervals[0]}', '{self.intervals[1]}', '{self.intervals[2]}']","[False, False, False, True]"
"""


class AuxiliaryNotesDown(TextureTemplate):
"""A pitch pattern that creates a minor second interval in the middle of the chord.
"""

supported_durations = [1.0, 2.0]

def templateTriad(self):
transposed_note = note.Note(self.notes[2]).transpose(-1)
transposed_name = transposed_note.nameWithOctave
transposed_interval = interval.Interval(noteStart=note.Note(self.notes[0]), noteEnd=transposed_note).name
dur = self.duration / 4
return f"""\
0.0,{dur},,"['{self.notes[0]}', '{self.notes[1]}', '{self.notes[2]}']","['{self.intervals[0]}', '{self.intervals[1]}']","[True, True, True]"
{dur},{dur},,"['{self.notes[0]}', '{self.notes[1]}', '{transposed_name}']","['{self.intervals[0]}', '{transposed_interval}']","[False, False, True]"
{dur*2},{dur*2},,"['{self.notes[0]}', '{self.notes[1]}', '{self.notes[2]}']","['{self.intervals[0]}', '{self.intervals[1]}']","[False, False, True]"
"""

def templateSeventh(self):
transposed_note = note.Note(self.notes[3]).transpose(-1)
transposed_name = transposed_note.nameWithOctave
transposed_interval = interval.Interval(noteStart=note.Note(self.notes[0]), noteEnd=transposed_note).name
dur = self.duration / 4
return f"""\
0.0,{dur},,"['{self.notes[0]}', '{self.notes[1]}', '{self.notes[2]}', '{self.notes[3]}']","['{self.intervals[0]}', '{self.intervals[1]}', '{self.intervals[2]}']","[True, True, True, True]"
{dur},{dur},,"['{self.notes[0]}', '{self.notes[1]}', '{self.notes[2]}', '{transposed_name}']","['{self.intervals[0]}', '{self.intervals[1]}', '{transposed_interval}']","[False, False, False, True]"
{dur*2},{dur*2},,"['{self.notes[0]}', '{self.notes[1]}', '{self.notes[2]}', '{self.notes[3]}']","['{self.intervals[0]}', '{self.intervals[1]}', '{self.intervals[2]}']","[False, False, False, True]"
"""


class AppoggiaturaUp(TextureTemplate):
"""A pitch pattern that creates a minor second interval at the beggining of the chord.
"""

supported_durations = [1.0, 2.0]

def templateTriad(self):
transposed_note = note.Note(self.notes[2]).transpose(1)
transposed_name = transposed_note.nameWithOctave
transposed_interval = interval.Interval(noteStart=note.Note(self.notes[0]), noteEnd=transposed_note).name
dur = self.duration / 4
return f"""\
0.0,{dur},,"['{self.notes[0]}', '{self.notes[1]}', '{transposed_name}']","['{self.intervals[0]}', '{transposed_interval}']","[False, False, True]"
{dur},{dur*3},,"['{self.notes[0]}', '{self.notes[1]}', '{self.notes[2]}']","['{self.intervals[0]}', '{self.intervals[1]}']","[False, False, True]"
"""

def templateSeventh(self):
transposed_note = note.Note(self.notes[3]).transpose(1)
transposed_name = transposed_note.nameWithOctave
transposed_interval = interval.Interval(noteStart=note.Note(self.notes[0]), noteEnd=transposed_note).name
dur = self.duration / 4
return f"""\
0.0,{dur},,"['{self.notes[0]}', '{self.notes[1]}', '{self.notes[2]}', '{transposed_name}']","['{self.intervals[0]}', '{self.intervals[1]}', '{transposed_interval}']","[False, False, False, True]"
{dur},{dur*3},,"['{self.notes[0]}', '{self.notes[1]}', '{self.notes[2]}', '{self.notes[3]}']","['{self.intervals[0]}', '{self.intervals[1]}', '{self.intervals[2]}']","[False, False, False, True]"
"""


class AppoggiaturaDown(TextureTemplate):
"""A pitch pattern that creates a minor second interval at the beggining of the chord.
"""

supported_durations = [1.0, 2.0]

def templateTriad(self):
transposed_note = note.Note(self.notes[2]).transpose(-1)
transposed_name = transposed_note.nameWithOctave
transposed_interval = interval.Interval(noteStart=note.Note(self.notes[0]), noteEnd=transposed_note).name
dur = self.duration / 4
return f"""\
0.0,{dur},,"['{self.notes[0]}', '{self.notes[1]}', '{transposed_name}']","['{self.intervals[0]}', '{transposed_interval}']","[False, False, True]"
{dur},{dur*3},,"['{self.notes[0]}', '{self.notes[1]}', '{self.notes[2]}']","['{self.intervals[0]}', '{self.intervals[1]}']","[False, False, True]"
"""

def templateSeventh(self):
transposed_note = note.Note(self.notes[3]).transpose(-1)
transposed_name = transposed_note.nameWithOctave
transposed_interval = interval.Interval(noteStart=note.Note(self.notes[0]), noteEnd=transposed_note).name
dur = self.duration / 4
return f"""\
0.0,{dur},,"['{self.notes[0]}', '{self.notes[1]}', '{self.notes[2]}', '{transposed_name}']","['{self.intervals[0]}', '{self.intervals[1]}', '{transposed_interval}']","[False, False, False, True]"
{dur},{dur*3},,"['{self.notes[0]}', '{self.notes[1]}', '{self.notes[2]}', '{self.notes[3]}']","['{self.intervals[0]}', '{self.intervals[1]}', '{self.intervals[2]}']","[False, False, False, True]"
"""


class BlockChord(TextureTemplate):
"""A block-chord texture. The default texture in music21-generated scores."""

Expand All @@ -239,6 +353,10 @@ def templateSeventh(self):
"Alberti": Alberti,
"Syncopation": Syncopation,
"BlockChord": BlockChord,
"AuxiliaryNotesUp": AuxiliaryNotesUp,
"AuxiliaryNotesDown": AuxiliaryNotesDown,
"AppoggiaturaUp": AppoggiaturaUp,
"AppoggiaturaDown": AppoggiaturaDown,
}

available_durations = list(
Expand Down
10 changes: 5 additions & 5 deletions AugmentedNet/train.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,11 +113,11 @@ class ModdedModelCheckpoint(keras.callbacks.ModelCheckpoint):
def on_epoch_end(self, epoch, logs={}):
monitored = list(availableOutputs.keys())
nonMonitored = [
"ChordQuality11",
"ChordRoot35",
"Inversion4",
"PrimaryDegree22",
"SecondaryDegree22",
# "ChordQuality11",
# "ChordRoot35",
# "Inversion4",
# "PrimaryDegree22",
# "SecondaryDegree22",
]
monitored = [a for a in monitored if a not in nonMonitored]
print(f"monitored_outputs: {monitored}")
Expand Down