def setUp(self): self.i = Instrument() self.p = Piano() self.g = Guitar() self.notes = NoteContainer(["A", "B", "C", "D", "E"]) self.noteslow = NoteContainer(["C-0", "D-0", "E-0"]) self.noteshigh = NoteContainer(["A-12", "B-12", "C-12", "D-12", "E-12"])
def setUp(self): self.i = Instrument() self.p = Piano() self.g = Guitar() self.notes = NoteContainer(['A', 'B', 'C', 'D', 'E']) self.noteslow = NoteContainer(['C-0', 'D-0', 'E-0']) self.noteshigh = NoteContainer( ['A-12', 'B-12', 'C-12', 'D-12', 'E-12'])
class test_Instrument(unittest.TestCase): def setUp(self): self.i = Instrument() self.p = Piano() self.g = Guitar() self.notes = NoteContainer(["A", "B", "C", "D", "E"]) self.noteslow = NoteContainer(["C-0", "D-0", "E-0"]) self.noteshigh = NoteContainer( ["A-12", "B-12", "C-12", "D-12", "E-12"]) def test_note_in_range(self): for x in self.notes: self.assertTrue(self.i.note_in_range(x)) self.assertTrue(self.p.note_in_range(x)) self.assertTrue(self.g.note_in_range(x)) for x in self.noteslow + self.noteshigh: self.assertEqual( False, self.p.note_in_range(x), "%s should not be able to be played by a Piano" % x, ) self.assertEqual( False, self.g.note_in_range(x), "%s should not be able to be played by a Guitar" % x, ) def test_can_play_notes(self): self.assertTrue(self.i.can_play_notes(self.notes)) self.assertTrue(self.p.can_play_notes(self.notes)) self.assertTrue(self.g.can_play_notes(self.notes)) self.assertEqual(False, self.p.can_play_notes(self.noteslow)) self.assertEqual(False, self.g.can_play_notes(self.noteslow)) self.assertEqual(False, self.p.can_play_notes(self.noteshigh)) self.assertEqual(False, self.g.can_play_notes(self.noteshigh)) self.assertEqual( False, self.g.can_play_notes( NoteContainer([ "A", "B", "C", "D", "E", "F", "G", ])), )
def setUp(self): self.i = Instrument() self.p = Piano() self.g = Guitar() self.notes = NoteContainer(['A', 'B', 'C', 'D', 'E']) self.noteslow = NoteContainer(['C-0', 'D-0', 'E-0']) self.noteshigh = NoteContainer(['A-12', 'B-12', 'C-12', 'D-12', 'E-12'])
class test_Instrument(unittest.TestCase): def setUp(self): self.i = Instrument() self.p = Piano() self.g = Guitar() self.notes = NoteContainer(['A', 'B', 'C', 'D', 'E']) self.noteslow = NoteContainer(['C-0', 'D-0', 'E-0']) self.noteshigh = NoteContainer( ['A-12', 'B-12', 'C-12', 'D-12', 'E-12']) def test_note_in_range(self): for x in self.notes: self.assert_(self.i.note_in_range(x)) self.assert_(self.p.note_in_range(x)) self.assert_(self.g.note_in_range(x)) for x in self.noteslow + self.noteshigh: self.assertEqual( False, self.p.note_in_range(x), '%s should not be able to be played by a Piano' % x) self.assertEqual( False, self.g.note_in_range(x), '%s should not be able to be played by a Guitar' % x) def test_can_play_notes(self): self.assert_(self.i.can_play_notes(self.notes)) self.assert_(self.p.can_play_notes(self.notes)) self.assert_(self.g.can_play_notes(self.notes)) self.assertEqual(False, self.p.can_play_notes(self.noteslow)) self.assertEqual(False, self.g.can_play_notes(self.noteslow)) self.assertEqual(False, self.p.can_play_notes(self.noteshigh)) self.assertEqual(False, self.g.can_play_notes(self.noteshigh)) self.assertEqual( False, self.g.can_play_notes( NoteContainer([ 'A', 'B', 'C', 'D', 'E', 'F', 'G', ])))
class test_Instrument(unittest.TestCase): def setUp(self): self.i = Instrument() self.p = Piano() self.g = Guitar() self.notes = NoteContainer(['A', 'B', 'C', 'D', 'E']) self.noteslow = NoteContainer(['C-0', 'D-0', 'E-0']) self.noteshigh = NoteContainer(['A-12', 'B-12', 'C-12', 'D-12', 'E-12']) def test_note_in_range(self): for x in self.notes: self.assert_(self.i.note_in_range(x)) self.assert_(self.p.note_in_range(x)) self.assert_(self.g.note_in_range(x)) for x in self.noteslow + self.noteshigh: self.assertEqual(False, self.p.note_in_range(x), '%s should not be able to be played by a Piano' % x) self.assertEqual(False, self.g.note_in_range(x), '%s should not be able to be played by a Guitar' % x) def test_can_play_notes(self): self.assert_(self.i.can_play_notes(self.notes)) self.assert_(self.p.can_play_notes(self.notes)) self.assert_(self.g.can_play_notes(self.notes)) self.assertEqual(False, self.p.can_play_notes(self.noteslow)) self.assertEqual(False, self.g.can_play_notes(self.noteslow)) self.assertEqual(False, self.p.can_play_notes(self.noteshigh)) self.assertEqual(False, self.g.can_play_notes(self.noteshigh)) self.assertEqual(False, self.g.can_play_notes(NoteContainer([ 'A', 'B', 'C', 'D', 'E', 'F', 'G', ])))
def export(melody_track, chords, key, time_sig, bpm, file): i = Instrument() i.instrument_nr = 1 t2 = Track() for i in range(0, len(chords)): b = Bar(key, time_sig) if len(chords[i][0]) > 5: b.place_notes(None, 1) else: b.place_notes(NoteContainer(chords[i]), 1) t2 + b c = Composition() c.add_track(melody_track) c.add_track(t2) out_dir = 'out' if not os.path.exists(out_dir): os.makedirs(out_dir) mid = file.split('/')[-1] if os.path.exists(out_dir + '/' + mid): os.remove(out_dir + '/' + mid) MidiFileOut.write_Composition(out_dir + '/' + mid, c, bpm) file = out_dir + '/' + mid sys.argv.append('') sys.argv.append('') sys.argv[1] = "--midi-file=" + file sys.argv[2] = "--out-dir=" + out_dir midi.main() if os.path.exists(file): os.remove(file)
c.augment() #升半音 c.diminish() #降半音 c.remove_redundant_accidentals() #清理多余升降号(只能成对清理,烂) #谱容器 from mingus.containers import NoteContainer #创建谱容器对象(继承列表,完全可以按列表操作,不用看下面的) n = NoteContainer(['A-3', 'C-5', 'B-4']) n.add_note('F-1') # 0位加音 n.remove_note('B', 4) #删音 n.empty() #清空 #乐器音色 from mingus.containers.instrument import Instrument, Piano, Guitar #创建乐器对象 i = Instrument() i.range #乐器音域 i.set_range((Note('C-2'), Note('E-4'))) #设定音域 i.note_in_range('F-4') #判断音是否在乐器音域内 #音轨 from mingus.containers import Track t = Track(i) #乐器放入音轨容器 #MIDI音乐播放(安装困难) #from mingus.midi import fluidsynth #fluidsynth.init("soundfont.SF2") #fluidsynth.play_Note( Note('C-5') ) from mingus.midi import MidiFileOut MidiFileOut.write_NoteContainer('test.mid', n)
def setUp(self): self.i = Track(Instrument()) self.p = Track(Piano()) self.g = Track(Guitar()) self.tr = Track()
def __init__(self, key="C", scale="Major", bpm=120, semitones=()): self.bpm = bpm print "BPM is: " print bpm print "scale is: " print scale print "key is: " print key self.meter_numerator = 4.0 self.meter_denominator = 4.0 self.mapping_dur_vals = [1,2,3,4,8,16] self.mapping_dur_max = max(self.mapping_dur_vals) self.mapping_dur_min = min(self.mapping_dur_vals) self.instrs = [ { "instr" : Guitar(), "mapping_vals" : [] } #, #{ # "instr" : Guitar(), # "mapping_vals" : [] #} ] self.scale = scale self.key = key if self.scale == "Diatonic": if semitones == None or semitones == () or len(semitones) == 0: self.semitones = (3, 7) elif len(semitones) != 2: raise SemitoneTupleLength('Length of semitone tuple is not 2' ' or 0 (default semitones)') elif len(semitones) == 2: self.semitones = semitones allowed_scale_names = [] scale_names = scales._Scale.__subclasses__() for curr_name in scale_names: allowed_scale_names.append(curr_name.__name__) print "Scale Names are: " print allowed_scale_names if scale not in allowed_scale_names: raise InvalidKey('The specified key is not a valid key') for instr in self.instrs: vals_to_map = self.gen_scale_mapping(instr) instr["mapping_vals"] = vals_to_map if not hasattr(self, 'overall_mapping_range_min') or instr["mapping_vals"][0] < self.overall_mapping_range_min: self.overall_mapping_range_min = instr["mapping_vals"][0] if not hasattr(self, 'overall_mapping_range_max') or instr["mapping_vals"][-1] > self.overall_mapping_range_max: self.overall_mapping_range_max = instr["mapping_vals"][-1] #set the overall mapping range overall_instr = Instrument() overall_instr.set_range((Note(self.overall_mapping_range_min), Note(self.overall_mapping_range_max))) self.overall_mapping_vals = self.gen_scale_mapping({"instr" : overall_instr})