def testStaffs(self): score = Score() settings = ASCIISettings() settings.omitEmpty = False score.drumKit = DrumKit.DrumKit() score.drumKit.addDrum(Drum.Drum("HiHat", "Hh", "x")) score.drumKit.addDrum(Drum.Drum("Crash", "Cr", "x")) counter = MeasureCount.counterMaker(4, 16) score.insertMeasureByIndex(16, counter=counter) score.insertMeasureByIndex(16, counter=counter) score.insertMeasureByIndex(16, counter=counter) score.addNote(NotePosition(0, 0, 0, 0), "x") score.addNote(NotePosition(0, 1, 0, 0), "y") score.addNote(NotePosition(0, 2, 0, 0), "z") score.formatScore(40) output = self.getOutput(score, settings) self.assertEqual(output, [ 'Tabbed with DrumBurp, a drum tab editor from www.whatang.org', '', 'Title : ', 'Artist : ', 'BPM : 120', 'Tabbed by : ', 'Date : ' + self.exportDate, '', 'Cr - Crash', 'Hh - HiHat', '', 'Cr|----------------|----------------|', 'Hh|x---------------|y---------------|', ' 1e+a2e+a3e+a4e+a 1e+a2e+a3e+a4e+a ', '', 'Cr|----------------|', 'Hh|z---------------|', ' 1e+a2e+a3e+a4e+a ', '', 'Tabbed with DrumBurp, a drum tab editor from www.whatang.org' ])
def testWrite(self): kit = DrumKit.DrumKit() drum = Drum("One", "d1", "x", True) drum.addNoteHead("x", HeadData()) drum.addNoteHead("g", HeadData(effect="ghost", notationEffect="ghost")) drum.checkShortcuts() kit.addDrum(drum) drum = Drum("Two", "d2", "o") drum.addNoteHead("o", HeadData(notationLine=-5, stemDirection=1)) drum.addNoteHead( "O", HeadData(effect="accent", notationEffect="accent", notationLine=-5, stemDirection=1)) drum.checkShortcuts() kit.addDrum(drum) handle = StringIO() indenter = fileUtils.Indenter(handle) dbfsv0.DrumKitStructureV0().write(kit, indenter) outlines = handle.getvalue().splitlines() self.assertEqual(outlines, [ "KIT_START", " DRUM One,d1,x,True", " NOTEHEAD x 71,96,normal,default,0,none,0,x", " NOTEHEAD g 71,96,ghost,default,0,ghost,0,g", " DRUM Two,d2,o,False", " NOTEHEAD o 71,96,normal,default,-5,none,1,o", " NOTEHEAD O 71,96,accent,default,-5,accent,1,a", "KIT_END" ])
def getNewKit(self): newKit = DrumKit.DrumKit() oldLines = [] for drum in reversed(self._currentKit): newKit.addDrum(drum) if self._oldLines[drum] == -1: oldLines.append(-1) else: oldLines.append(len(self._initialKit) - self._oldLines[drum] - 1) return newKit, oldLines
def testWithKit(self): score = Score() settings = ASCIISettings() score.drumKit = DrumKit.DrumKit() score.drumKit.addDrum(Drum.Drum("HiHat", "Hh", "x")) score.drumKit.addDrum(Drum.Drum("Crash", "Cr", "x")) output = self.getOutput(score, settings) self.assertEqual(output, [ 'Tabbed with DrumBurp, a drum tab editor from www.whatang.org', '', 'Title : ', 'Artist : ', 'BPM : 120', 'Tabbed by : ', 'Date : ' + self.exportDate, '', 'Cr - Crash', 'Hh - HiHat', '', 'Tabbed with DrumBurp, a drum tab editor from www.whatang.org' ])
def getKit(self): item = self.defaultKitList.currentItem() isUser = item.data(_IS_USER_KIT).toBool() kitName = unicode(item.text()) if isUser: kitString = str(self._settings.value(kitName).toString()) handle = StringIO(kitString) dbfile = fileUtils.dbFileIterator(handle) kit = DrumKit.DrumKit() kit.read(dbfile) return kit else: return DrumKit.getNamedDefaultKit(kitName)
def getValues(self): mc = self.measureTabs.getCounter() kitName = unicode(self.kitCombobox.currentText()) kitIndex = self.kitCombobox.currentIndex() isUserKit = self.kitCombobox.itemData(kitIndex).toBool() if isUserKit: kitString = str(self._settings.value(kitName).toString()) handle = StringIO(kitString) dbfile = fileUtils.dbFileIterator(handle) kit = DrumKit.DrumKit() kit.read(dbfile) else: kit = DrumKit.getNamedDefaultKit(kitName) return (self.numMeasuresSpinBox.value(), mc, kit)
def testRead_NoNoteHeads(self): kitData = """KIT_START DRUM Snare,Sn,x,True DRUM Kick,Bd,o,True KIT_END """ handle = StringIO(kitData) iterator = fileUtils.dbFileIterator(handle) kit = DrumKit.DrumKit() kit.read(iterator) self.assertEqual(len(kit), 2) self.assertEqual(kit[0].name, "Snare") self.assertEqual(len(kit[0]), 6) self.assertEqual(kit[1].name, "Kick") self.assertEqual(len(kit[1]), 4)
def testRead_BadLine(self): kitData = """KIT_START DRUM Snare,Sn,x,True NOTEHEAD x 1,100,default NOTEHEAD g 1,50,ghost DRUM Kick,Bd,o,True NOTEHEAD o 2,100,default NOTEHEAD O 2,127,accent BAD_LINE KIT_END """ handle = StringIO(kitData) iterator = fileUtils.dbFileIterator(handle) kit = DrumKit.DrumKit() self.assertRaises(DBErrors.UnrecognisedLine, kit.read, iterator)
def testNoteHeads(self): kitData = """KIT_START DRUM Snare,Sn,x,True NOTEHEAD x 1,100,default NOTEHEAD g 1,50,ghost DRUM Kick,Bd,o,True NOTEHEAD o 2,100,default NOTEHEAD O 2,127,accent KIT_END """ handle = StringIO(kitData) iterator = fileUtils.dbFileIterator(handle) kit = DrumKit.DrumKit() kit.read(iterator) self.assertEqual(kit.getDefaultHead(0), "x") self.assertEqual(kit.getDefaultHead(1), "o") self.assertEqual(kit.allowedNoteHeads(0), ["x", "g"]) self.assertEqual(kit.shortcutsAndNoteHeads(0), [("x", "x"), ("g", "g")])
def _loadKit(self): directory = self._scoreDirectory if directory is None: home = QDesktopServices.HomeLocation directory = unicode(QDesktopServices.storageLocation(home)) fname = QFileDialog.getOpenFileName(parent = self, caption = "Load DrumBurp kit", directory = directory, filter = _KIT_FILTER) if len(fname) == 0: return with open(fname, 'rU') as handle: fileIterator = fileUtils.dbFileIterator(handle) newKit = DrumKit.DrumKit() newKit.read(fileIterator) self._currentKit = list(reversed(newKit)) self._oldLines.clear() for drum in self._currentKit: self._oldLines[drum] = -1 self._populate()
def testRead_NewNoteHeads(self): kitData = """KIT_START DRUM Snare,Sn,x,True NOTEHEAD x 1,100,normal,default,0,none,0,x NOTEHEAD g 1,50,ghost,default,0,ghost,0,g DRUM Kick,Bd,o,True NOTEHEAD o 2,100,normal,default,-5,none,1,o NOTEHEAD O 2,127,accent,default,-5,accent,1,a KIT_END """ handle = StringIO(kitData) iterator = fileUtils.dbFileIterator(handle) kit = DrumKit.DrumKit() kit.read(iterator) self.assertEqual(len(kit), 2) self.assertEqual(len(kit), 2) self.assertEqual(kit[0].name, "Snare") self.assertEqual(len(kit[0]), 2) self.assertEqual(kit[1].name, "Kick") self.assertEqual(len(kit[1]), 2)
def emptyKit(): return DrumKit.DrumKit()
def testWrite(self): kit = DrumKit.DrumKit() drum = Drum("One", "d1", "x", True) drum.addNoteHead("x", HeadData()) drum.addNoteHead("g", HeadData(effect="ghost", notationEffect="ghost")) drum.checkShortcuts() kit.addDrum(drum) drum = Drum("Two", "d2", "o") drum.addNoteHead("o", HeadData(notationLine=-5, stemDirection=1)) drum.addNoteHead("O", HeadData(effect="accent", notationEffect="accent", notationLine=-5, stemDirection=1)) drum.checkShortcuts() kit.addDrum(drum) handle = StringIO() indenter = fileUtils.Indenter(handle) dbfsv1.DrumKitStructureV1().write(kit, indenter) outlines = handle.getvalue().splitlines() self.assertEqual(outlines, ['START_KIT', ' START_DRUM', ' NAME One', ' ABBR d1', ' DEFAULT_HEAD x', ' LOCKED True', ' HEADLIST xg', ' START_NOTEHEAD', ' MIDINOTE 71', ' MIDIVOLUME 96', ' EFFECT normal', ' NOTATIONHEAD default', ' NOTATIONLINE 0', ' NOTATIONEFFECT none', ' STEM 0', ' SHORTCUT x', ' END_NOTEHEAD', ' START_NOTEHEAD', ' MIDINOTE 71', ' MIDIVOLUME 96', ' EFFECT ghost', ' NOTATIONHEAD default', ' NOTATIONLINE 0', ' NOTATIONEFFECT ghost', ' STEM 0', ' SHORTCUT g', ' END_NOTEHEAD', ' END_DRUM', ' START_DRUM', ' NAME Two', ' ABBR d2', ' DEFAULT_HEAD o', ' LOCKED False', ' HEADLIST oO', ' START_NOTEHEAD', ' MIDINOTE 71', ' MIDIVOLUME 96', ' EFFECT normal', ' NOTATIONHEAD default', ' NOTATIONLINE -5', ' NOTATIONEFFECT none', ' STEM 1', ' SHORTCUT o', ' END_NOTEHEAD', ' START_NOTEHEAD', ' MIDINOTE 71', ' MIDIVOLUME 96', ' EFFECT accent', ' NOTATIONHEAD default', ' NOTATIONLINE -5', ' NOTATIONEFFECT accent', ' STEM 1', ' SHORTCUT a', ' END_NOTEHEAD', ' END_DRUM', 'END_KIT'])
def setUp(self): self.kit = DrumKit.DrumKit()