Added a default website
This commit is contained in:
1 parent
d3d55f96f7
commit
1a8c9147b8
34 files changed
+2420
No files matched your search
@@ -0,0 +1,294 @@
|
||||
---
|
||||
author: "Flávio Schiavoni"
|
||||
description:
|
||||
---
|
||||
|
||||
# sudo apt install python3-MIDIUtil
|
||||
from midiutil import MIDIFile
|
||||
|
||||
name = "Generate Midi"
|
||||
keys = ['C','C#','D','D#','E','F','F#','G','G#','A','A#','B']
|
||||
track = 0
|
||||
time = 0 # In beats
|
||||
channel = 0
|
||||
semibreve = 4 # In beats
|
||||
seminima = 1 # In beats
|
||||
colcheia = 0.5 # In beats
|
||||
volume = 100 # 0-127, as per the MIDI standard
|
||||
tempo = 120 # In BPM
|
||||
step = 48
|
||||
|
||||
def gerar_pedal(acordes, mf):
|
||||
global track, channel, time, duration, volume
|
||||
mf.addTrackName(track, time, "Pedal")
|
||||
for i, chord in enumerate(acordes):
|
||||
pitch = keys.index(chord[:1],0) + step
|
||||
if (chord[1:2] == '#'):
|
||||
pitch = pitch + 1
|
||||
if (chord[1:2] == 'b'):
|
||||
pitch = pitch - 1
|
||||
mf.addNote(track, channel, pitch, i*4 + 0, seminima, volume)
|
||||
mf.addNote(track, channel, pitch, i*4 + 1, seminima, volume)
|
||||
mf.addNote(track, channel, pitch, i*4 + 2, seminima, volume)
|
||||
mf.addNote(track, channel, pitch, i*4 + 3, seminima, volume)
|
||||
track = track + 1
|
||||
|
||||
def gerar_tonica(acordes, mf):
|
||||
global track, channel, time, duration, volume
|
||||
mf.addTrackName(track, time, "Tonica")
|
||||
for i, chord in enumerate(acordes):
|
||||
pitch = keys.index(chord[:1],0) + step + 36
|
||||
if (chord[1:2] == '#'):
|
||||
pitch = pitch + 1
|
||||
if (chord[1:2] == 'b'):
|
||||
pitch = pitch - 1
|
||||
print("Tônica: ", chord, pitch)
|
||||
mf.addNote(track, channel, pitch, i*4, semibreve, volume)
|
||||
track = track + 1
|
||||
|
||||
def gerar_quinta(acordes, mf):
|
||||
global track, channel, time, duration, volume
|
||||
mf.addTrackName(track, time, "Quinta")
|
||||
for i, chord in enumerate(acordes):
|
||||
pitch = keys.index(chord[:1],0) + step + 36
|
||||
if (chord[1:2] == '#'):
|
||||
pitch = pitch + 1
|
||||
if (chord[1:2] == 'b'):
|
||||
pitch = pitch - 1
|
||||
pitch = pitch + 7
|
||||
print("Quinta: ", chord, pitch)
|
||||
mf.addNote(track, channel, pitch, i*4, semibreve, volume)
|
||||
track = track + 1
|
||||
|
||||
def gerar_terca(acordes, mf):
|
||||
global track, channel, time, duration, volume
|
||||
mf.addTrackName(track, time, "Terca")
|
||||
for i, chord in enumerate(acordes):
|
||||
pitch = keys.index(chord[:1],0) + step + 36
|
||||
if (chord[1:2] == '#'):
|
||||
pitch = pitch + 1
|
||||
if (chord[1:2] == 'b'):
|
||||
pitch = pitch - 1
|
||||
pitch = pitch + 4
|
||||
if ("m" in chord):
|
||||
pitch = pitch - 1
|
||||
print("terça: ", chord, pitch)
|
||||
mf.addNote(track, channel, pitch, i*4, semibreve, volume)
|
||||
track = track + 1
|
||||
|
||||
def gerar_acordes(acordes, mf):
|
||||
global track, channel, time, duration, volume
|
||||
mf.addTrackName(track, time, "acordes")
|
||||
for i, chord in enumerate(acordes):
|
||||
pitch = keys.index(chord[:1],0) + step + 24
|
||||
if (chord[1:2] == '#'):
|
||||
pitch = pitch + 1
|
||||
if (chord[1:2] == 'b'):
|
||||
pitch = pitch - 1
|
||||
mf.addNote(track, channel, pitch, i*4, semibreve, volume)
|
||||
quinta = pitch + 7
|
||||
mf.addNote(track, channel, quinta, i*4, semibreve, volume)
|
||||
terca = pitch + 4
|
||||
if ("m" in chord):
|
||||
terca = terca - 1
|
||||
mf.addNote(track, channel, terca, i*4, semibreve, volume)
|
||||
track = track + 1
|
||||
|
||||
def gerar_reaggae(acordes, mf):
|
||||
global track, channel, time, duration, volume
|
||||
mf.addTrackName(track, time, "reggae")
|
||||
for i, chord in enumerate(acordes):
|
||||
pitch = keys.index(chord[:1],0) + step + 24
|
||||
if (chord[1:2] == '#'):
|
||||
pitch = pitch + 1
|
||||
if (chord[1:2] == 'b'):
|
||||
pitch = pitch - 1
|
||||
quinta = pitch + 7
|
||||
terca = pitch + 4
|
||||
if ("m" in chord):
|
||||
terca = terca - 1
|
||||
mf.addNote(track, channel, pitch, i*4 + 1, seminima, volume)
|
||||
mf.addNote(track, channel, pitch, i*4 + 3, seminima, volume)
|
||||
mf.addNote(track, channel, terca, i*4 + 1, seminima, volume)
|
||||
mf.addNote(track, channel, terca, i*4 + 3, seminima, volume)
|
||||
mf.addNote(track, channel, quinta, i*4 + 1, seminima, volume)
|
||||
mf.addNote(track, channel, quinta, i*4 + 3, seminima, volume)
|
||||
track = track + 1
|
||||
|
||||
def gerar_baixo1(acordes, mf):
|
||||
global track, channel, time, duration, volume
|
||||
mf.addTrackName(track, time, "Baixo1")
|
||||
for i, chord in enumerate(acordes):
|
||||
pitch = keys.index(chord[:1],0) + step + 12
|
||||
if (chord[1:2] == '#'):
|
||||
pitch = pitch + 1
|
||||
if (chord[1:2] == 'b'):
|
||||
pitch = pitch - 1
|
||||
quinta = pitch + 7
|
||||
terca = pitch + 4
|
||||
if ("m" in chord):
|
||||
terca = terca - 1
|
||||
mf.addNote(track, channel, pitch, i*4 + 0, seminima + colcheia, volume)
|
||||
mf.addNote(track, channel, terca, i*4 + 1.5, colcheia, volume)
|
||||
mf.addNote(track, channel, quinta, i*4 + 2, seminima, volume)
|
||||
mf.addNote(track, channel, pitch, i*4 + 3, seminima, volume)
|
||||
track = track + 1
|
||||
|
||||
def gerar_baixo2(acordes, mf):
|
||||
global track, channel, time, duration, volume
|
||||
mf.addTrackName(track, time, "Baixo2")
|
||||
for i, chord in enumerate(acordes):
|
||||
pitch = keys.index(chord[:1],0) + step + 12
|
||||
mf.addNote(track, channel, pitch, i*4 + 0, seminima, volume)
|
||||
mf.addNote(track, channel, pitch + 7, i*4 + 1, seminima, volume)
|
||||
mf.addNote(track, channel, pitch, i*4 + 2, seminima, volume)
|
||||
mf.addNote(track, channel, pitch + 7, i*4 + 3, seminima, volume)
|
||||
track = track + 1
|
||||
|
||||
def gerar_baixo3(acordes, mf):
|
||||
global track, channel, time, duration, volume
|
||||
mf.addTrackName(track, time, "Baixo3")
|
||||
for i, chord in enumerate(acordes):
|
||||
pitch = keys.index(chord[:1],0) + step + 12
|
||||
mf.addNote(track, channel, pitch, i*4 + 0, colcheia, volume)
|
||||
mf.addNote(track, channel, pitch + 7, i*4 + 0.5, colcheia, volume)
|
||||
mf.addNote(track, channel, pitch, i*4 + 1, colcheia, volume)
|
||||
mf.addNote(track, channel, pitch + 7, i*4 + 1.5, colcheia, volume)
|
||||
mf.addNote(track, channel, pitch, i*4 + 2, colcheia, volume)
|
||||
mf.addNote(track, channel, pitch + 7, i*4 + 2.5, colcheia, volume)
|
||||
mf.addNote(track, channel, pitch, i*4 + 3, colcheia, volume)
|
||||
mf.addNote(track, channel, pitch + 7, i*4 + 3.5, colcheia, volume)
|
||||
track = track + 1
|
||||
|
||||
|
||||
def gerar_bateria1(acordes, mf):
|
||||
global track, channel, time, duration, volume
|
||||
mf.addTrackName(track, time, "Bateria1")
|
||||
# Bumbo
|
||||
mf.addNote(track, channel, 48, 0, seminima, volume)
|
||||
mf.addNote(track, channel, 48, 4, seminima, volume)
|
||||
# Caixa
|
||||
mf.addNote(track, channel, 53, 2, seminima, volume)
|
||||
mf.addNote(track, channel, 53, 6, seminima, volume)
|
||||
# Cimbal
|
||||
mf.addNote(track, channel, 60, 0, colcheia, volume + 10)
|
||||
mf.addNote(track, channel, 61, 0.5, colcheia, volume - 10)
|
||||
mf.addNote(track, channel, 60, 1, colcheia, volume)
|
||||
mf.addNote(track, channel, 62, 1.5, colcheia, volume + 10)
|
||||
mf.addNote(track, channel, 61, 2, colcheia, volume - 10)
|
||||
mf.addNote(track, channel, 60, 2.5, colcheia, volume)
|
||||
mf.addNote(track, channel, 61, 3, colcheia, volume + 10)
|
||||
mf.addNote(track, channel, 62, 3.5, colcheia, volume - 10)
|
||||
mf.addNote(track, channel, 60, 4, colcheia, volume - 10)
|
||||
mf.addNote(track, channel, 61, 4.5, colcheia, volume + 10)
|
||||
mf.addNote(track, channel, 60, 5, colcheia, volume)
|
||||
mf.addNote(track, channel, 61, 5.5, colcheia, volume - 10)
|
||||
mf.addNote(track, channel, 62, 6, colcheia, volume + 10)
|
||||
mf.addNote(track, channel, 60, 6.5, colcheia, volume - 10)
|
||||
mf.addNote(track, channel, 61, 7, colcheia, volume - 10)
|
||||
mf.addNote(track, channel, 62, 7.5, colcheia, volume)
|
||||
track = track + 1
|
||||
|
||||
def gerar_bateria2(acordes, mf):
|
||||
global track, channel, time, duration, volume
|
||||
mf.addTrackName(track, time, "Bateria2")
|
||||
# Bumbo
|
||||
mf.addNote(track, channel, 48, 0, seminima, volume)
|
||||
mf.addNote(track, channel, 48, 2, colcheia, volume)
|
||||
mf.addNote(track, channel, 48, 2.5, colcheia, volume)
|
||||
mf.addNote(track, channel, 48, 4, seminima, volume)
|
||||
mf.addNote(track, channel, 48, 6, colcheia, volume)
|
||||
mf.addNote(track, channel, 48, 6.5, colcheia, volume)
|
||||
# Caixa
|
||||
mf.addNote(track, channel, 53, 1, seminima, volume)
|
||||
mf.addNote(track, channel, 53, 3, seminima, volume)
|
||||
mf.addNote(track, channel, 53, 5, seminima, volume)
|
||||
mf.addNote(track, channel, 53, 7, seminima, volume)
|
||||
# Cimbal
|
||||
mf.addNote(track, channel, 60, 0, colcheia, volume + 10)
|
||||
mf.addNote(track, channel, 61, 0.5, colcheia, volume - 10)
|
||||
mf.addNote(track, channel, 60, 1, colcheia, volume)
|
||||
mf.addNote(track, channel, 62, 1.5, colcheia, volume + 10)
|
||||
mf.addNote(track, channel, 61, 2, colcheia, volume - 10)
|
||||
mf.addNote(track, channel, 60, 2.5, colcheia, volume)
|
||||
mf.addNote(track, channel, 61, 3, colcheia, volume + 10)
|
||||
mf.addNote(track, channel, 62, 3.5, colcheia, volume - 10)
|
||||
mf.addNote(track, channel, 60, 4, colcheia, volume - 10)
|
||||
mf.addNote(track, channel, 61, 4.5, colcheia, volume + 10)
|
||||
mf.addNote(track, channel, 60, 5, colcheia, volume)
|
||||
mf.addNote(track, channel, 61, 5.5, colcheia, volume - 10)
|
||||
mf.addNote(track, channel, 62, 6, colcheia, volume + 10)
|
||||
mf.addNote(track, channel, 60, 6.5, colcheia, volume - 10)
|
||||
mf.addNote(track, channel, 61, 7, colcheia, volume - 10)
|
||||
mf.addNote(track, channel, 62, 7.5, colcheia, volume)
|
||||
track = track + 1
|
||||
|
||||
def gerar_percussao(acordes, mf):
|
||||
global track, channel, time, duration, volume
|
||||
mf.addTrackName(track, time, "Percussao")
|
||||
# Bumbo
|
||||
mf.addNote(track, channel, 72, 0, seminima, volume)
|
||||
mf.addNote(track, channel, 73, 0.5, seminima, volume)
|
||||
mf.addNote(track, channel, 73, 3, seminima, volume)
|
||||
mf.addNote(track, channel, 72, 3.5, seminima, volume)
|
||||
mf.addNote(track, channel, 73, 5, seminima, volume)
|
||||
mf.addNote(track, channel, 72, 5.5, seminima, volume)
|
||||
mf.addNote(track, channel, 72, 6.5, seminima, volume)
|
||||
track = track + 1
|
||||
|
||||
def gerar_percussao2(acordes, mf):
|
||||
global track, channel, time, duration, volume
|
||||
mf.addTrackName(track, time, "Percussao 2")
|
||||
# Bumbo
|
||||
mf.addNote(track, channel, 77, 0.5, colcheia, volume)
|
||||
mf.addNote(track, channel, 78, 1.5, colcheia, volume)
|
||||
mf.addNote(track, channel, 79, 2, colcheia, volume)
|
||||
mf.addNote(track, channel, 77, 2.5, colcheia, volume)
|
||||
mf.addNote(track, channel, 79, 3, colcheia, volume)
|
||||
track = track + 1
|
||||
|
||||
mf = MIDIFile(13, deinterleave=True) # One track, defaults to format 1 (tempo track is created
|
||||
|
||||
# name = "Alagados"
|
||||
# acordes = ['A', 'A', 'E', 'D']
|
||||
# mf.addTempo(track, time, 200)
|
||||
|
||||
# name = "Vapor Barato"
|
||||
# acordes = ['Am', 'Am', 'G', 'G', 'F', 'F', 'Dm', 'E']
|
||||
# mf.addTempo(track, time, 132)
|
||||
|
||||
# name = "Hey Joe"
|
||||
# acordes = ['C', 'G', 'D', 'A', 'E', 'E', 'E', 'E']
|
||||
# mf.addTempo(track, time, 132)
|
||||
|
||||
# name = "Ainda é cedo"
|
||||
# acordes = ['Dm', 'C', 'Am', 'Am']
|
||||
# mf.addTempo(track, time, 132)
|
||||
|
||||
# name = "Creep"
|
||||
# acordes = ['G', 'G', 'B', 'B', 'C', 'C', 'Cm', 'Cm']
|
||||
# mf.addTempo(track, time, 100)
|
||||
|
||||
# name = "Não chores mais"
|
||||
# acordes = ['C', 'G', 'Am', 'F']
|
||||
# mf.addTempo(track, time, 100)
|
||||
|
||||
name = "Naquela Mesa"
|
||||
acordes = ['Am', 'Am', 'Am', 'Dm', 'Dm', 'Dm', 'Dm', 'Am', 'Am', 'Am', 'A', 'Dm', 'Dm', 'Am', 'E', 'Am']
|
||||
mf.addTempo(track, time, 100)
|
||||
|
||||
gerar_bateria1(acordes,mf)
|
||||
gerar_bateria2(acordes,mf)
|
||||
gerar_percussao(acordes,mf)
|
||||
gerar_percussao2(acordes,mf)
|
||||
gerar_tonica(acordes,mf)
|
||||
gerar_quinta(acordes,mf)
|
||||
gerar_terca(acordes,mf)
|
||||
gerar_acordes(acordes,mf)
|
||||
gerar_reaggae(acordes,mf)
|
||||
gerar_pedal(acordes,mf)
|
||||
gerar_baixo1(acordes,mf)
|
||||
gerar_baixo2(acordes,mf)
|
||||
gerar_baixo3(acordes,mf)
|
||||
with open(name + ".mid", "wb") as output_file:
|
||||
mf.writeFile(output_file)
|
||||
@@ -0,0 +1,333 @@
|
||||
---
|
||||
author: "Flávio Schiavoni"
|
||||
description:
|
||||
---
|
||||
|
||||
from __future__ import print_function
|
||||
from unittest import TestCase
|
||||
|
||||
|
||||
class NoteEvent(TestCase):
|
||||
|
||||
def test(self):
|
||||
from alsamidi import noteevent
|
||||
|
||||
midi_event = (1, 60, 127, 1000, 10)
|
||||
data = (1, 60, 127, 0, 10)
|
||||
expected = (5, 1, 0, 0, (1, 0), (0, 0), (0, 0), data)
|
||||
self.assertEqual(expected, noteevent(*midi_event))
|
||||
|
||||
|
||||
class NoteOnEvent(TestCase):
|
||||
|
||||
def test(self):
|
||||
from alsamidi import noteonevent
|
||||
|
||||
midi_event = (1, 60, 127)
|
||||
data = (1, 60, 127, 0, 0)
|
||||
expected = (6, 1, 0, 253, (0, 0), (0, 0), (0, 0), data)
|
||||
self.assertEqual(expected, noteonevent(*midi_event))
|
||||
|
||||
|
||||
class NoteOffEvent(TestCase):
|
||||
|
||||
def test(self):
|
||||
from alsamidi import noteoffevent
|
||||
|
||||
midi_event = (1, 60, 10)
|
||||
data = (1, 60, 10, 0, 0)
|
||||
expected = (7, 1, 0, 253, (0, 0), (0, 0), (0, 0), data)
|
||||
self.assertEqual(expected, noteoffevent(*midi_event))
|
||||
|
||||
|
||||
class PgmChangeEvent(TestCase):
|
||||
|
||||
def test_sent_directly(self):
|
||||
from alsamidi import pgmchangeevent
|
||||
|
||||
data = (1, 0, 0, 0, 0, 9)
|
||||
expected = (11, 1, 0, 253, (0, 0), (0, 0), (0, 0), data)
|
||||
self.assertEqual(expected, pgmchangeevent(1, 9))
|
||||
|
||||
def test_scheduled(self):
|
||||
from alsamidi import pgmchangeevent
|
||||
|
||||
data = (1, 0, 0, 0, 0, 9)
|
||||
expected = (11, 1, 0, 0, (1, 0), (0, 0), (0, 0), data)
|
||||
self.assertEqual(expected, pgmchangeevent(1, 9, 1000))
|
||||
|
||||
|
||||
class PitchbendEvent(TestCase):
|
||||
|
||||
def test_sent_directly(self):
|
||||
from alsamidi import pitchbendevent
|
||||
|
||||
data = (1, 0, 9)
|
||||
expected = (13, 1, 0, 253, (0, 0), (0, 0), (0, 0), data)
|
||||
self.assertEqual(expected, pitchbendevent(1, 9))
|
||||
|
||||
def test_scheduled(self):
|
||||
from alsamidi import pitchbendevent
|
||||
|
||||
data = (1, 0, 9)
|
||||
expected = (13, 1, 0, 0, (1, 0), (0, 0), (0, 0), data)
|
||||
self.assertEqual(expected, pitchbendevent(1, 9, 1000))
|
||||
|
||||
|
||||
class ChanPress(TestCase):
|
||||
|
||||
def test_sent_directly(self):
|
||||
from alsamidi import chanpress
|
||||
|
||||
data = (1, 0, 9)
|
||||
expected = (12, 1, 0, 253, (0, 0), (0, 0), (0, 0), data)
|
||||
self.assertEqual(expected, chanpress(1, 9))
|
||||
|
||||
def test_scheduled(self):
|
||||
from alsamidi import chanpress
|
||||
|
||||
data = (1, 0, 9)
|
||||
expected = (12, 1, 0, 0, (1, 0), (0, 0), (0, 0), data)
|
||||
self.assertEqual(expected, chanpress(1, 9, 1000))
|
||||
|
||||
|
||||
class Tuple2Time(TestCase):
|
||||
|
||||
def test(self):
|
||||
from alsamidi import tuple2time
|
||||
|
||||
self.assertEqual(1.5, tuple2time((1, 500000000)))
|
||||
|
||||
|
||||
class Time2Tuple(TestCase):
|
||||
|
||||
def test(self):
|
||||
from alsamidi import time2tuple
|
||||
|
||||
self.assertEqual((1, 500000000), time2tuple(1.5))
|
||||
|
||||
|
||||
class ModifyEvent(TestCase):
|
||||
|
||||
def test(self):
|
||||
from alsamidi import modifyevent
|
||||
|
||||
data = (1, 60, 127, 0, 10)
|
||||
event = (5, 1, 0, 0, (1, 0), (0, 0), (0, 0), data)
|
||||
modified_data = (15, 72, 127, 0, 10)
|
||||
modified_event = (5, 1, 0, 250, (2, 0), (2, 0), (3, 0), modified_data)
|
||||
self.assertEqual(modified_event, modifyevent(event, timedelta=1,
|
||||
ch=15, dest=(3, 0), source=(2, 0), queue=250, keydelta=12))
|
||||
|
||||
|
||||
class ModifyEvents(TestCase):
|
||||
|
||||
def test(self):
|
||||
from alsamidi import modifyevents
|
||||
|
||||
data = (1, 60, 127, 0, 10)
|
||||
event = (5, 1, 0, 0, (1, 0), (0, 0), (0, 0), data)
|
||||
modified_data = (15, 72, 127, 0, 10)
|
||||
modified_event = (5, 1, 0, 250, (2, 0), (2, 0), (3, 0), modified_data)
|
||||
self.assertEqual([modified_event], modifyevents([event], timedelta=1,
|
||||
ch=15, dest=(3, 0), source=(2, 0), queue=250, keydelta=12))
|
||||
|
||||
|
||||
class Merge(TestCase):
|
||||
|
||||
def test_no_tracks(self):
|
||||
from alsamidi import merge
|
||||
|
||||
self.assertEqual([], merge([]))
|
||||
|
||||
def test_track(self):
|
||||
from alsamidi import merge
|
||||
|
||||
event = (0, 0, 0, 0, 0)
|
||||
self.assertEqual([event], merge([[event]]))
|
||||
|
||||
|
||||
class UniqueNotes(TestCase):
|
||||
|
||||
def test(self):
|
||||
from alsamidi import uniquenotes
|
||||
|
||||
data = (1, 60, 127, 0, 10)
|
||||
event = (5, 1, 0, 0, (1, 0), (0, 0), (0, 0), data)
|
||||
expected = {1: [60]}
|
||||
self.assertEqual(expected, uniquenotes([event]))
|
||||
|
||||
|
||||
class TestSeq(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
try:
|
||||
from mock import Mock
|
||||
except:
|
||||
from unittest.mock import Mock
|
||||
import alsamidi
|
||||
|
||||
alsamidi.print = Mock()
|
||||
|
||||
def tearDown(self):
|
||||
import alsamidi
|
||||
|
||||
del alsamidi.print
|
||||
|
||||
def test_instance(self):
|
||||
from alsamidi import Seq
|
||||
|
||||
self.assertTrue(isinstance(Seq(), Seq))
|
||||
|
||||
def test_info(self):
|
||||
from alsamidi import Seq
|
||||
import alsamidi
|
||||
|
||||
data = (9, 60, 127, 0, 10)
|
||||
event = (5, 1, 0, 0, (1, 0), (0, 0), (0, 0), data)
|
||||
track = [event]
|
||||
|
||||
seq = Seq()
|
||||
seq.names = ['name']
|
||||
seq.tags = 'tags'
|
||||
seq.tracks = [track]
|
||||
seq.info()
|
||||
alsamidi.print.assert_any_call('tags')
|
||||
args = '0:', 'name ', 0, 'Sec.', 1, 'events,', {9: [60]}, 'Hi Bongo'
|
||||
alsamidi.print.assert_called_with(*args)
|
||||
|
||||
|
||||
class SeqRead(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
import os
|
||||
try:
|
||||
from mock import Mock
|
||||
except:
|
||||
from unittest.mock import Mock
|
||||
import alsamidi
|
||||
|
||||
self.file = Mock()
|
||||
text = 'track melody\n' \
|
||||
'6,1,0,1,2 5430786,20 0,130 0,1 108 82 0 0\n' \
|
||||
'name = value'
|
||||
lines = text.split('\n')
|
||||
self.file.readlines.return_value = lines
|
||||
lines[0] = lines[0] + '\n'
|
||||
alsamidi.open = Mock(return_value=self.file)
|
||||
|
||||
alsamidi.print = Mock()
|
||||
|
||||
self.exits = os.path.exists
|
||||
os.path.exists = Mock(return_value=True)
|
||||
|
||||
def tearDown(self):
|
||||
import os
|
||||
import alsamidi
|
||||
|
||||
del alsamidi.open
|
||||
del alsamidi.print
|
||||
|
||||
def test_read_not_found(self):
|
||||
import os
|
||||
from alsamidi import Seq
|
||||
|
||||
os.path.exists.return_value = False
|
||||
seq = Seq()
|
||||
seq.read('path')
|
||||
self.assertEqual([], seq.tracks)
|
||||
|
||||
def test_read_named_track(self):
|
||||
from alsamidi import Seq
|
||||
|
||||
seq = Seq()
|
||||
seq.read('path')
|
||||
self.assertEqual(['track melody'], seq.names)
|
||||
|
||||
def test_read_default_track(self):
|
||||
from alsamidi import Seq
|
||||
|
||||
text = '6,1,0,1,2 5430786,20 0,130 0,1 108 82 0 0'
|
||||
|
||||
self.file.readlines.return_value = text.split('\n')
|
||||
seq = Seq()
|
||||
seq.read('path')
|
||||
self.assertEqual(['Default'], seq.names)
|
||||
|
||||
def test_read_track(self):
|
||||
from alsamidi import Seq
|
||||
|
||||
seq = Seq()
|
||||
seq.read('path')
|
||||
self.assertEqual([[
|
||||
(6, 1, 0, 1,
|
||||
(2, 5430786),
|
||||
(20, 0),
|
||||
(130, 0), (1, 108, 82, 0, 0))]], seq.tracks)
|
||||
|
||||
|
||||
class SeqWrite(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
try:
|
||||
from mock import Mock
|
||||
except:
|
||||
from unittest.mock import Mock
|
||||
import alsamidi
|
||||
|
||||
self.file = Mock()
|
||||
alsamidi.open = Mock(return_value=self.file)
|
||||
|
||||
alsamidi.print = Mock()
|
||||
|
||||
def tearDown(self):
|
||||
import alsamidi
|
||||
|
||||
del alsamidi.open
|
||||
del alsamidi.print
|
||||
|
||||
def test_write(self):
|
||||
from alsamidi import Seq
|
||||
|
||||
data = (9, 60, 127, 0, 10)
|
||||
event = (5, 1, 0, 0, (1, 0), (0, 0), (0, 0), data)
|
||||
track = [event]
|
||||
|
||||
seq = Seq()
|
||||
seq.names = ['name']
|
||||
seq.tags = {'name': 'value'}
|
||||
seq.orderedtags = ['name']
|
||||
seq.tracks = [track]
|
||||
|
||||
seq.write('path')
|
||||
line = '5,1,0,0,1 0,0 0,0 0,9 60 127 0 10\n'
|
||||
self.file.write.assert_called_with(line)
|
||||
|
||||
def test_write_no_name(self):
|
||||
from alsamidi import Seq
|
||||
|
||||
data = (9, 60, 127, 0, 10)
|
||||
event = (5, 1, 0, 0, (1, 0), (0, 0), (0, 0), data)
|
||||
track = [event]
|
||||
|
||||
seq = Seq()
|
||||
seq.names = []
|
||||
seq.tags = {'name': 'value'}
|
||||
seq.orderedtags = ['name']
|
||||
seq.tracks = [track]
|
||||
|
||||
seq.write('path')
|
||||
line = '5,1,0,0,1 0,0 0,0 0,9 60 127 0 10\n'
|
||||
self.file.write.assert_called_with(line)
|
||||
|
||||
def test_error(self):
|
||||
from alsamidi import Seq
|
||||
import alsamidi
|
||||
|
||||
alsamidi.open.side_effect = IOError
|
||||
seq = Seq()
|
||||
seq.write('path')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in new issue
Block a user