-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathVerticalize_Pattern.ino
More file actions
126 lines (106 loc) · 5.96 KB
/
Copy pathVerticalize_Pattern.ino
File metadata and controls
126 lines (106 loc) · 5.96 KB
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
//=========================================================================================================
//function which verticalizes the CaD pattern which takes each bit of each step to make a word of 16 bits
//fonction qui verticalize le pattern CaD qui prend chaque bit de chaque pas pour en faire un mot de 16bits
//=========================================================================================================
void Verticalize_Pattern_Init()
{
if ( selected_pattern_edited || selected_pattern_changed ){
selected_pattern_changed=0;
for (byte i=0;i<16;i++){//loop autant de fois que de step par parti soit 16
inst_step_buffer[i][!pattern_buffer]=0;//initialize a 0 le buffer
for(byte j=0;j<16;j++){//loop autant de fois que d'instrument soit 16
inst_step_buffer[i][!pattern_buffer]^=(bitRead(pattern[!pattern_buffer][j][0],i)<<j);
}
}
for (byte i=16;i<32;i++){//loop autant de fois que de step par parti soit 16
inst_step_buffer[i][!pattern_buffer]=0;//initialize a 0 le buffer
for(byte j=0;j<16;j++){//loop autant de fois que d'instrument soit 16
inst_step_buffer[i][!pattern_buffer]^=(bitRead(pattern[!pattern_buffer][j][1],i-16)<<j);
}
}
}
if((!play) && (old_pattern_nbr != pattern_nbr)){
pattern_buffer=!pattern_buffer;//permet de switcher entre les deux pattern present dans le buffer au debut de la mesure
old_pattern_nbr=pattern_nbr;
}
}
void Verticalize_Pattern()
{
//if the selected pattern has changed, we verticalize the pattern which was loaded in the buffer, in the buffer of the instrument and it will be played at the beggining of the next measure
//Si le pattern selectionner a changer on le verticalize le pattern qui a été loader dans le buffer, dans le buffer de l'inst et il sera jouer au debut de la mesure suivante
if ( selected_pattern_changed ) {
selected_pattern_changed=0;
//loop as many times as the counter becomes 2
//for (byte x=0;x<2;x++)//loop autant de fois que parti soit 2
for (byte i=0;i<16;i++){//loop autant de fois que de step par parti soit 16
inst_step_buffer[i][!pattern_buffer]=0;//initialize a 0 le buffer
for(byte j=0;j<16;j++){//loop autant de fois que d'instrument soit 16
inst_step_buffer[i][!pattern_buffer]^=(bitRead(pattern[!pattern_buffer][j][0],i)<<j);
}
}
for (byte i=16;i<32;i++){//loop autant de fois que de step par parti soit 16
inst_step_buffer[i][!pattern_buffer]=0;//initialize a 0 le buffer
for(byte j=0;j<16;j++){//loop autant de fois que d'instrument soit 16
inst_step_buffer[i][!pattern_buffer]^=(bitRead(pattern[!pattern_buffer][j][1],i-16)<<j);
}
}
}
//however, if the pattern has been edited, we verticalize the pattern played in the played instrument
//Par contre si le pattern a été editer on verticalize le pattern joué dans l'inst joué
if ( selected_pattern_edited ) {
selected_pattern_edited=0;
for (byte i=0;i<16;i++){//loop autant de fois que de step par parti soit 16
inst_step_buffer[i][pattern_buffer]=0;//initialize a 0 le buffer
for(byte j=0;j<16;j++){//loop autant de fois que d'instrument soit 16
inst_step_buffer[i][pattern_buffer]^=(bitRead(pattern[pattern_buffer][j][0],i)<<j);
}
}
for (byte i=16;i<32;i++){//loop autant de fois que de step par parti soit 16
inst_step_buffer[i][pattern_buffer]=0;//initialize a 0 le buffer
for(byte j=0;j<16;j++){//loop autant de fois que d'instrument soit 16
inst_step_buffer[i][pattern_buffer]^=(bitRead(pattern[pattern_buffer][j][1],i-16)<<j);
}
}
}
//Si on est en mode stop et que le pattern selectionné a changé on switch le buffer
//En mode play le switch du buffer se fait dans l'interruption pour etre calé au debut de la mesure
if( !play && load_pattern_ok ) {
//Serial.println("load_pattern ok");
pattern_buffer=!pattern_buffer;//permet de switcher entre les deux pattern present dans le buffer au debut de la mesure
load_pattern_ok=0;
}
}
void Verticalize_Pattern_After_Cleared()
{
//Si le pattern selectionner a changer on le verticalize le pattern qui a été loader dans le buffer, dans le buffer de l'inst et il sera jouer au debut de la mesure suivante
//for (byte x=0;x<2;x++)//loop autant de fois que parti soit 2
for (byte i=0;i<16;i++){//loop autant de fois que de step par parti soit 16
inst_step_buffer[i][!pattern_buffer]=0;//initialize a 0 le buffer
for(byte j=0;j<16;j++){//loop autant de fois que d'instrument soit 16
inst_step_buffer[i][!pattern_buffer]^=(bitRead(pattern[!pattern_buffer][j][0],i)<<j);
}
}
for (byte i=16;i<32;i++){//loop autant de fois que de step par parti soit 16
inst_step_buffer[i][!pattern_buffer]=0;//initialize a 0 le buffer
for(byte j=0;j<16;j++){//loop autant de fois que d'instrument soit 16
inst_step_buffer[i][!pattern_buffer]^=(bitRead(pattern[!pattern_buffer][j][1],i-16)<<j);
}
}
}
void Verticalize_Pattern_After_Paste()
{
//Si le pattern selectionner a changer on le verticalize le pattern qui a été loader dans le buffer, dans le buffer de l'inst et il sera jouer au debut de la mesure suivante
//for (byte x=0;x<2;x++)//loop autant de fois que parti soit 2
for (byte i=0;i<16;i++){//loop autant de fois que de step par parti soit 16
inst_step_buffer[i][pattern_buffer]=0;//initialize a 0 le buffer
for(byte j=0;j<16;j++){//loop autant de fois que d'instrument soit 16
inst_step_buffer[i][pattern_buffer]^=(bitRead(pattern[pattern_buffer][j][0],i)<<j);
}
}
for (byte i=16;i<32;i++){//loop autant de fois que de step par parti soit 16
inst_step_buffer[i][pattern_buffer]=0;//initialize a 0 le buffer
for(byte j=0;j<16;j++){//loop autant de fois que d'instrument soit 16
inst_step_buffer[i][pattern_buffer]^=(bitRead(pattern[pattern_buffer][j][1],i-16)<<j);
}
}
}