On peut utiliser le langage python pour construire des applications musicales qui créent des fichiers .mid à partir de tablatures écrites dans des fichiers de texte.
Vous trouverez des exemples de fonctions qui traitent un langage proche du langage abc pour les tablatures dans le fichier moduletabla.txt
Liste alphabétique des fonctions du module moduletabla
moduletabla.txt pour le traitement des tablatures en langage python
Vous pouvez utiliser ce module si vous avez installé une version de python sur votre PC.
Pour pouvoir utiliser ce module dans la console python,copiez puis collez le fichier moduletabla.txt dans un fichier que vous appelerez moduletabla.py
Vous aurez besoin des modules musicpy et midiutil que vous installerez avec la commande pip
Sous DOS, vous exécuterez pip install midiutil et pip install musicpy
Vous utiliserez les fonctions du module moduletabla.py pour créer des petits fichiers .mid pour le travail de l'harmonie.
Vous trouverez la liste de ces fonctions dans la page :
Description des fonctions du module moduletabla.py
On peut construire un logiciel analogue à abc2midi.exe pour windows, qui crée un fichier .mid à partir d'un fichier .abc
Pour cela, après avoir installé python sur votre PC, tapez sous DOS, la commande :
pip install music21
Consultez le fichier helpmusic21.txt pour connaitre l'origine de ce module.
Copiez le fichier rythme.txt dans un répertoire de votre PC
Fichier source rythme.txtLancez la commande :
python rythme.txt
Vous retrouverez dans le répertoire où vous avez placé rythme.txt, le fichier tabla.mid qui contient un rythme blues.
On peut utiliser le module musicpy pour traiter les notes, les accords, la batterie...
Fichier musicpy2.txt : Exemples de codes avec le module musicpySi vous n'arrivez pas à télécharger le fichier musicpy2.txt, copiez le code ci-dessous :
Les exemples sont indépendants les uns des autres.
On n'a pas figuré les indentations de 4 espaces des conditions else que vous rajouterez si vous voulez tout copier.
#https://github.com/Rainbow-Dreamer/musicpy/wiki/musicpy-composition-code-examples-part-1
#https://github.com/Rainbow-Dreamer/musicpy/wiki/musicpy-composition-code-examples-part-2
import musicpy
from musicpy import *
print("Entrez un nombre entre 0 et 21 :")
i=input()
i=int(i)
if i==0 :
c = get_chord('D', 'm7', intervals=1)*2 + get_chord('E', 'maj9', intervals=0).reverse()
'K[l:1/4;i:n;v:80]'
play(c, 100)
elif i==1 :
a = C('Cm7',4,1,1/8) @ [1,3,4,2.1,4.1] | 3/8
piano = a * 4 | (a - 3) * 4
bass = (chord('C2, C2, G2, C2, A#2, C2, C3, C2') * 4) % (1/8, 1/8)
bass += (bass - 3)
play(P([piano, bass], [1, 34], 165, [0, 0]) * 2)
elif i==2 :
a = C('Cm9',4,1,1/8) @ [1,3,5,2.1,4.1] | 3/8
piano = a * 4 | (a + 3) * 4
bass = (chord('C2, C2, G2, C2, A#2, C2, C3, C2') * 4) % (1/8, 1/8)
bass += (bass + 3)
import random
drum = concat([chord(random.choice(['D2','E2','G2'])) for i in range(64)]) % (1/8, 1/8)
play(P([piano, bass, drum], [1, 34, 1], 500, [0, 0, 0], channels=[1,2,9]) * 2)
elif i==3 :
a = C('Cm9',2,1/4,1/8) @ [1,3,5,2.1,4.1] | 3/8
piano = a * 4 | (a + 3) * 4
bass = (chord('C2, C2, G2, C2, A#2, C2, C3, C2') * 4) % (1/8, 1/8)
bass += (bass + 3)
import random
drum = concat([chord(random.choice(['D2','E2','G2'])) for i in range(64)]) % (1/8, 1/8)
play(P([piano, bass, drum], [31, 34, 1], 25, [0, 0, 0], channels=[1,2,9]) * 8)
elif i==4 :
a = C('Caug9') @ [1,3,5,2.1,4.1,5.1] % (1, 1/8) | 1/4
bass = chord('C2, A#1') % (1, 1) * 4
piano = (a | a - 2) * 4
string = C('Caug9', 4) % (1, 0)
string |= string - 2
string.set_volume(60)
play(P([piano, bass, string * 4], [9, 34, 49], 80, [0, 0, 0]))
elif i==5 :
guitar = C('CM7',4, 1)^2 | C('G7sus', 3, 1)^2 | C('A7sus', 3, 1)^2 | C('FM7', 3, 1)^2
play((guitar%(1/4, 1/8) * 2)-database.octave, 100, instrument=25)
elif i==6 :
guitar = (C('CM7',4, 1/4, 1/8)^2 | C('G7sus', 3, 1/4, 1/8)^2
| C('A7sus', 3, 1/4, 1/8)^2 | C('Em7', 3, 1/4, 1/8)^2 |
C('FM7', 3, 1/4, 1/8)^2 | C('CM7', 4, 1/4, 1/8)@1 |
C('AbM7', 3, 1/4, 1/8)^2 | C('G7sus', 3, 1/4, 1/8)^2)
play((guitar * 2)-database.octave, 100, instrument=25) elif i==7 :
rule = lambda x: x @ [1, 3, 4, 2.1, 3.1, 4, 1.1, 3.1] % (1/4, 1/8)
rule2 = lambda x: x @ [1, 3, 4, 2.1, 3.1, 4, 2.1, 3.1] % (1/4, 1/8)
a = (rule(C('Cmaj7',4)) | rule(C('Fmaj7',3)) |
rule2(C('G7, b9, omit 5',3)) |
rule(C('Bdim7',3)) |
rule(C('Am7', 3)) |
rule2(C('D7', 3) ^ 2) |
rule2(C('FmM7', 3) ^ 2) |
rule2(C('G7,#5', 3)))
play(a * 2, 150, instrument=5)
elif i==8 :
a = (C('Cmaj7') | C('D7') | C('Fmaj7',3) | C('Cmaj7/-3')) % (1, 1/4) * 4
b_duration = [3/4, 1/8, 1/8, 3/4, 1/8, 1/8, 1/4, 1/4, 1/2, 1/2, 1/2]
b_interval = b_duration
b = (chord('G5, F5, E5, F5, E5, D5, E5, D5, C5, B4, G4')
% (b_duration, b_interval)) * 2
song = build([a, 5, 0],
[b, 49, 4],
bpm=165)
play(song)
elif i==9 :
a = (C('Cmaj7') | C('D7') | C('Fmaj7',3) | C('Cmaj7/-3')) % (1, 1/4) * 4
b_duration = [3/4, 1/8, 1/8, 3/4, 1/8, 1/8, 1/4, 1/4, 1/2, 1/2, 1/2]
b_interval = b_duration
b = (chord('G5, F5, E5, F5, E5, D5, E5, D5, C5, B4, G4')
% (b_duration, b_interval))
cmajor = scale('C5', 'major')
b_harmony = (chord([cmajor(cmajor.names().
index(i.name))[1]-database.octave for i in b])
% (b_duration, b_interval))
b_harmony.set_volume(80)
b &= b_harmony
b *= 2
song = build([a, 5, 0],
[b, 49, 4],
bpm=165)
play(song)
elif i==10 :
a = (C('Cmaj7') | C('D7') | C('Fmaj7',3) | C('Cmaj7/-3')) % (1, 1/4) * 4
b = chord('G5[3/4;3/4], F5[.8;.8], E5[.8;.8], F5[3/4;3/4], E5[.8;.8], D5[.8;.8], E5[.4;.4], D5[.4;.4], C5[.2;.2], B4[.2;.2], G4[.2;.2]') * 2
song = build([a, 5, 0],
[b, 49, 4],
bpm=165)
play(song)
elif i==11 :
a = C('CM9') @ [1,3,5,2.1,4.1,5.1] % (1, 1/8) | 1/4
bass = chord('C2, A#1') % (1, 1) * 4
piano = (a | a - 2) * 4
string = C('CM9', 4) % (1, 0)
string |= string - 2
string.set_volume(50)
play(P([piano, bass, string * 4], [9, 34, 49], 80, [0, 0, 0]))
elif i==12 :
play((get_chord_by_interval('D#4', [5,7,10,7,5], 1/2, 1/8)*3 + get_chord_by_interval('F4', [1,0,-4], 1/2, 1/8)) * 3, 150)
elif i==13 :
a = C('Am7') % (1/8, 0)
play(a * 4 | (a + 2) * 4 | get_chord(a[0] + 3, 'maj7').set(interval=1/8), bpm=80)
elif i==14 :
a = C('Dmaj7') % (1/4,1/4) | C('Cmaj7') | C('Fadd9',3) | C('D#maj7',4) | (C('Dmaj7',3)/-2) % (5/4,)
b = chord('F#5, G5, A5, B5, G5', 1/8, 1/8)
play(a & b, 140, instrument=1)
elif i==15 :
a = C('Amaj7') @ 2 * 4 | C('G#m7') @ 2 * 4 | C('Gmaj7') @ 2 * 4 | C('F#m7') @ 2 * 4
play(a | a % (1/4, 1/4), 165, instrument=9) elif i==16 :
a = (C('Bmaj9',3)/[2,3,4,1,5]) % (1/8,1/8)
b = (C('Bmaj9',3)/[2,3,4,1,5,2]) % (1/8, 1/8)
q = a + ~a[1:-1]
q2 = b + ~b[3:-1]
t = (q + q2) * 2
adding = chord(['Bb5','Ab5','Gb5','Ab5']) % (1/2,1/2) * 2
t2 = t & adding
play(t2 + (t2 - 3), 100, instrument=47)
elif i==17 :
q = scale('C4', 'major')
r = q%(6451, 0.5/4, 0.3/4, 5)
r = [i.omit(5).inversion_highest(3) for i in r]
play(r*2, bpm=80, instrument=47)
elif i==18 :
q = scale('C4', 'major')
r = q%(6451, 0.5/4, 0.3/4, 5)
r = [i.omit(7).inversion_highest(2) for i in r]
play(r*2, bpm=80, instrument=47)
elif i==19 :
a = C('Baug9', 4) @ [2, 3, 4, 1.1, 5, 1.1, 4, 3] % (1/8,1/8)
b = C('BmM9', 4) @ [2, 3, 4, 1.1, 5, 2.1, 5, 1.1] % (1/8,1/8)
part1 = (a + b)*2
part2 = (C('Baug9',4, 1, 0) | C('BmM9',4, 1, 0)) * 2
part2.set_volume(80)
play(P([part1, part2], [26,49], 100, [0,0]))
elif i==20 :
a = chord('C2, G1, C2, Ab1, Bb1, G1', [15/8,1/8,2,2,1.5,3/4], [15/8,1/8,2,2,1.5,3/4])
b = C('Cm', 5, 1/8) | 1/4 | C('Bb', 4, 1/8) | 1/4 | C('Ab', 4, 1/8) | 1/4 | C('Bb', 4, 1/2) | 3/8
b2 = C('Cm', 5, 1/8) | 1/4 | C('Bb', 4, 1/8) | 1/4 | C('Abmaj7', 4, 1/8) | 1/4 | C('Gsus', 4, 3/4) | 1/8
c = (b * 3) | b2
a2 = chord('C2',1/8,1/8)*32 + chord('Ab1',1/8,1/8)*16 + chord('Bb1',1/8,1/8)*12 + chord('G1',1/8,1/8)*4
play(piece([a, c, a2 * 2, c * 2], [1, 81, 34, 81], 130, [0, 1/4, 8, 33/4]))
elif i==21 :
a = get_chord('B4','maj9').sort([2,3,4,1,5])
b = get_chord('B4','maj9').sort([2,3,4,1,5,2])
q = a + a[1:-1].reverse_chord()
q2 = b + b[3:-1].reverse_chord()
play((q.set(1/8,1/8) + q2.set(1/8,1/8))*2, 100, instrument=50)
Installez le module musicpy en utilisant pip install musicpy
Le programme contient une vingtaine d'exemples que vous pouvez choisir pour construire des fichiers temp.mid
Les fichiers ci-dessous correspondent à ces exemples :
Si vous voulez cons truire par vous- même des exemples musicaux avec le module musicpy, consultez le fichier d'aide ci-dessous :