IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

matser

un générateur de lignes d'accords

Noter ce billet
par , 23/08/2022 à 10h00 (833 Affichages)
Générateur de ligne d'accords pour le reggae

introduction
selon le cycle des quintes, les accdord voisin du do majeur sont les accords suivants:
fa majeur,sol majeur,ré mineur,la mineur,mi minieur et si mineur diminué.
il parait que si on choisi quatre accords voisins du do dans le cycle des quintes, do y compris, on obtient quelque chose de potable.

le programme
chaque mesure sera joué en contre-temps avec le même accord. Ces mesures ne sont donc constitué que d'un seul accord. On les implémente dans le tableau accord:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
  std::string accord[7]={
    "z [CEG] z [CEG]|",//do majeur
    "z [DFA] z [DFA]|",//ré mineur
    "z [EGB] z [EGB]|",//mi mineur
    "z [FAc] z [FAc]|",//fa majeur
    "z [GBd] z [GBd]|",//sol majeur
    "z [Ace] z [Ace]|",//la mineur
    "z [Bdf] z [Bdf]|" //si mineur diminué
  };
Pour faire une ligne, le programme en choisira 4 accords aléatoirement, un accord pouvant se répéter (il y a donc 7^4=2401 lignes possibles).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
  std::string utilise[4];
  for(int i=0;i<4;i++)
    utilise[i]=accord[distr(eng)];
Pour l'entête, un std::cout sera utilisé ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
std::cout<<"X: 1\nK: C\nM: 4/4\nL: 1/4"<<std::endl;
La ligne se constitue de quatre accord et est répété à quatre reprises. Le programme écrit quatre mesures sur quatre portées.la dernière portée (i=3) se termine par "|]" qui est la barre verticale de premier trait fin (écrit grâce à la barre verticale des strings du tableau accords) et de deuxième trait épais indiqué par ']'.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
  for(int i=0;i<4;i++){
    for(int j=0;j<4;j++)
      std::cout<<utilise[j];
    if(i<3)
      std::cout<<std::endl;
    else
      std::cout<<']'<<std::endl;
  }
voici le programme complet:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
#include <iostream>
#include <random>
#include <string>

int main(){
  std::random_device rd;
  std::mt19937 eng(rd());
  std::uniform_int_distribution<int> distr(0,6);
  std::string accord[7]={
    "z [CEG] z [CEG]|",
    "z [DFA] z [DFA]|",
    "z [EGB] z [EGB]|",
    "z [FAc] z [FAc]|",
    "z [GBd] z [GBd]|",
    "z [Ace] z [Ace]|",
    "z [Bdf] z [Bdf]|"
  };
  std::string utilise[4];
  for(int i=0;i<4;i++)
    utilise[i]=accord[distr(eng)];
  std::cout<<"X: 1\nK: C\nM: 4/4\nL: 1/4"<<std::endl;
  for(int i=0;i<4;i++){//nombre de portées
    for(int j=0;j<4;j++)
      std::cout<<utilise[j];
    if(i<3)
      std::cout<<std::endl;
    else
      std::cout<<']'<<std::endl;
  }
}
cela pourrait donné ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
X: 1
K: C
M: 4/4
L: 1/4
z [GBd] z [GBd]|z [EGB] z [EGB]|z [Bdf] z [Bdf]|z [EGB] z [EGB]|
z [GBd] z [GBd]|z [EGB] z [EGB]|z [Bdf] z [Bdf]|z [EGB] z [EGB]|
z [GBd] z [GBd]|z [EGB] z [EGB]|z [Bdf] z [Bdf]|z [EGB] z [EGB]|
z [GBd] z [GBd]|z [EGB] z [EGB]|z [Bdf] z [Bdf]|z [EGB] z [EGB]|]
utilisation
il faudra installer abcmidi, timidity:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$  sudo apt install abcmidi timidity
supposons que l’exécutable se nome genR, ce programme s'utilise ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
$  genR | tee nomfichier.abc
$  abc2midi nomfichier.abc
$  timidity nomfichier1.mid (le 1 est ajouté par abc2midi)
on peut aussi convertir en wav, puis en mp3:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
$  sudo apt install lame
$  timidity -Ow nomfichier1.mid (pour convertir en wav)
$  lame nomfichier1.wav (pour convertir en mp3)
pour voir la partition écrite:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
$  sudo apt install abc2ps ps2pdf
$  genR > nomfichier.abc
$  abcm2ps -O nomfichier.ps nomfichier.abc
evince saura afficher ce fichier:
pour le convertir en pdf:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
$  ps2pdf nomfichier.ps
$  evince nomfichier.pdf

Envoyer le billet « un générateur de lignes d'accords » dans le blog Viadeo Envoyer le billet « un générateur de lignes d'accords » dans le blog Twitter Envoyer le billet « un générateur de lignes d'accords » dans le blog Google Envoyer le billet « un générateur de lignes d'accords » dans le blog Facebook Envoyer le billet « un générateur de lignes d'accords » dans le blog Digg Envoyer le billet « un générateur de lignes d'accords » dans le blog Delicious Envoyer le billet « un générateur de lignes d'accords » dans le blog MySpace Envoyer le billet « un générateur de lignes d'accords » dans le blog Yahoo

Mis à jour 18/09/2022 à 06h32 par matser

Catégories
Sans catégorie

Commentaires