blob: 5fb6111afd83949c54d0aca34397e888d49a6153 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
import random
import common.Config as Config
# remplacer position dans notesList par l'attribut de CSoundNote
class RythmShuffle:
def getNewList( self, notesList, nbeats ):
self.barLength = Config.TICKS_PER_BEAT * nbeats
self.onsetDelta = 0
self.newOnsetList = []
self.oldDuration = []
self.newDuration = []
self.extractOnsetValue(notesList)
self.newOnsetList = random.sample(range(len(self.originalList)), len(self.originalList))
self.getOldDuration(notesList)
self.getNewDuration(notesList)
for i in range(len(notesList)):
notesList[i].onset = self.onsetDelta
notesList[i].duration = self.oldDuration[i] * self.newDuration[i]
self.onsetDelta = self.onsetDelta + self.originalList[self.newOnsetList[i]]
return notesList
def extractOnsetValue( self, notesList ):
self.originalList = []
for note in notesList:
self.originalList.append(note.onset)
for i in range(len(self.originalList) -1):
self.originalList[i] = self.originalList[i+1] - self.originalList[i]
self.originalList[-1] = self.barLength - (self.originalList[-1] % self.barLength)
def getOldDuration( self, notesList ):
for i in range(len(notesList)):
if (i+1) == len(notesList):
self.oldDuration.append(notesList[i].duration / (self.barLength - (notesList[i].onset % self.barLength)))
else:
self.oldDuration.append(notesList[i].duration / (notesList[i+1].onset - notesList[i].onset))
def getNewDuration( self, notesList ):
for i in self.newOnsetList:
if (i+1) == len(notesList):
self.newDuration.append(self.barLength - (notesList[i].onset % self.barLength))
else:
self.newDuration.append(notesList[i+1].onset - notesList[i].onset)
class RythmReverse( RythmShuffle ):
def getNewList( self, notesList, nbeats ):
self.barLength = Config.TICKS_PER_BEAT * nbeats
self.onsetDelta = 0
self.newOnsetList = []
self.oldDuration = []
self.newDuration = []
RythmShuffle.extractOnsetValue( self, notesList )
for i in range( len( self.originalList ) ):
self.newOnsetList.append( i )
self.newOnsetList.reverse()
RythmShuffle.getOldDuration( self, notesList )
RythmShuffle.getNewDuration( self, notesList )
for i in range(len(notesList)):
notesList[i].onset = self.onsetDelta
notesList[i].duration = self.oldDuration[i] * self.newDuration[i]
self.onsetDelta = self.onsetDelta + self.originalList[self.newOnsetList[i]]
return notesList
|