top of page

Différence entre Processing et EduPython.

​

​

​

L'indentation de quatre espace est indispensable en Python pour associer la ligne def et return

Procesing permet faire facilement des animations ou des jeux, Python est un languages performant en science

Capture.PNG

Il est possible d'utiliser son navigateur web et d'avoir un environnement de programmation : Jupiter Notebook.

Etape 1 : Lancez votre navigateur

Etape 2 : Recherchez Jupiter Notebook, vous devriez atteindre cette un page web, il ne vous reste plus qu'a cliquer sur : "Try it in your browser"

1.PNG
2.PNG

Etape 3 : Cliquez sur JupyterLab

Etape 3 : Cliquez sur JupyterLab

3.PNG

Etape 4 : Maintenant que vous êtes avec Jupyter Lab

Vocabulaire :

Tuple : Liste non modifiable d'éléments, nombre entier, décimal, liste, chaine de caractère.

​

​

On utilise des parenthèse pour déclarer un Tuple. Chaque éléments étant sépare du suivant par une virgule.

La gamme tempéré

440 Hz

La 3 / A4

environ 0.16

Do (260)/ Do# (275)/ Ré(291) / Ré# (309) / Mi (328) / Fa (348)/ Fa# (369) / Sol  (391)/ Sol# (415)/ La (440)/ La# (466)/ Si (494)/ Do (520).

​

Pour jouer au clair de la lune il nous fait uniquement trois notes, Do, Ré, et Mi.

Do (260), Do (260), Do (260), Ré(291), Mi (328), Ré(291)Do (260), Mi (328), Ré(291), Ré(291), Do (260)

Faire de la musique avec un ordinateur

1- Voici ce qui nous permet de générer un son dans EduPython.

​

# script audio.py
# (C) Fabrice Sincère ; Jean-Claude Meilland
import wave
import math
import binascii

print("Création d'un fichier audio au format WAV (PCM 8 bits stéréo 44100 Hz)")
print("Son de forme sinusoïdale sur chaque canal\n")
NomFichier = 'T:/cgenialson.wav'
#NomFichier = 'C:/home/cgenialson.wav'
#NomFichier = 'son.wav'
Monson = wave.open(NomFichier,'w') # instanciation de l'objet Monson

nbCanal = 2    # stéreo
nbOctet = 1    # taille d'un échantillon : 1 octet = 8 bits
fech = 44100   # fréquence d'échantillonnage

frequenceG = float(input('Fréquence du son du canal de gauche (Hz) ? '))
frequenceD = float(input('Fréquence du son du canal de droite (Hz) ? '))
niveauG = float(input('Niveau du son du canal de gauche (0 à 1) ? '))
niveauD = float(input('Niveau du son du canal de droite (0 à 1) ? '))
duree = float(input('Durée (en secondes) ? '))

nbEchantillon = int(duree*fech)
print("Nombre d'échantillons :",nbEchantillon)

parametres = (nbCanal,nbOctet,fech,nbEchantillon,'NONE','not compressed')# tuple
Monson.setparams(parametres)    # création de l'en-tête (44 octets)

# niveau max dans l'onde positive : +1 -> 255 (0xFF)
# niveau max dans l'onde négative : -1 ->   0 (0x00)
# niveau sonore nul :                0 -> 127.5 (0x80 en valeur arrondi)

amplitudeG = 127.5*niveauG
amplitudeD = 127.5*niveauD

print('Veuillez patienter...')
for i in range(0,nbEchantillon):
    # canal gauche
    # 127.5 + 0.5 pour arrondir à l'entier le plus proche
    valG = wave.struct.pack('B',int(128.0 + amplitudeG*math.sin(2.0*math.pi*frequenceG*i/fech)))
    # canal droit
    valD = wave.struct.pack('B',int(128.0 + amplitudeD*math.sin(2.0*math.pi*frequenceD*i/fech)))
    Monson.writeframes(valG + valD) # écriture frame
for i in range(0,nbEchantillon):
    # canal gauche
    # 127.5 + 0.5 pour arrondir à l'entier le plus proche
    valG = wave.struct.pack('B',int(128.0 + amplitudeG*math.sin(2.0*math.pi*1.5*frequenceG*i/fech)))
    # canal droit
    valD = wave.struct.pack('B',int(128.0 + amplitudeD*math.sin(2.0*math.pi*1.5*frequenceD*i/fech)))
    Monson.writeframes(valG + valD) # écriture frame
Monson.close()

Fichier = open(NomFichier,'rb')
data = Fichier.read()
tailleFichier = len(data)
print('\nTaille du fichier',NomFichier, ':', tailleFichier,'octets')
print("Lecture du contenu de l'en-tête (44 octets) :")
print(binascii.hexlify(data[0:44]))
print("Nombre d'octets de données :",tailleFichier - 44)
Fichier.close()

​

2- En modifiant simplement les lignes 37 38 et 39, nous obtenons un programme permettant de créer 10 son. Nous utilisons pour cela une boucle for dans une autre boucle for. Voici les lignes qui viennent remplacer les précédentes :

​

print('Veuillez patienter...')
for y in range (1,10):
    for i in range(0,nbEchantillon):

​

3-

frequence = [260,260,260, 291,328,291,260,328,291,291,260]
for y in frequence:
    for i in range(0,nbEchantillon):

​

Voici les lignes 37 a 40 du même programme, suite a ses modifications, il peut maintenat jouer "au clair de la lune". Par la méthode cité plus haut, nous avous obtenus les fréquences des notes. C'est fréquence, mise dans l'ordre permettent d'obtenir ces mélodies, et on les rentre dans le tuple donc on les mets entre [ ].

​

4- Maintenant, pour pousser encore notre exploration de ces lignes de codes, nous allons générer des notes aléatoirement. Il nous faut donc mettre les lignes suivantes de la 39 à la 41 :

​

frequence = [random.randrange(260, 520) for i in range(20)]
#frequence = [260,260,260, 291,328,291,260,328,291,291,260]
for y in frequence:

Pour finir, je vais expliquer un programme simple permettant de créer des histoires absurdes.

femme = ["une scientifique","une reine","un pirate"]
homme = ["un policier", "un artiste", "ton grand-père", "un robot tueur"]
lieu = ["sur Pluton.", "au supermarché.", "dans une grotte pleine de chauves-souris."]
ellePortait = ["un masque de plongée.", "des ailes de fée.", "un sac en papier."]
ilPortait = ["un costume violet.", "un déguisement de requin.", "une serviette de plage."]
femmeDit = ["« Qui êtes-vous ? »", "« Combien de haricots font cinq ? »", "« Pourquoi ? »"]
hommeDit = ["« Bip ! »", "« Ne mangez pas de grenouilles! »", "« Comment appelez-vous cela ? »"]
conséquence = ["la paix dans le monde", "le chaos", "un pied les a écrasés", "des arcs-en-ciel"]
mondeDit = ["« C’est absurde ! »", "« Le fromage est à la mode. »", "« Je fonds ! »"]

import random

while True:
    print(random.choice(femme), "a rencontré", random.choice(homme), random.choice(lieu))
    print("Elle portait", random.choice(ellePortait))
    print("Il portait", random.choice(ilPortait))
    print("Elle a dit", random.choice(femmeDit))
    print("Il a dit", random.choice(hommeDit))
    print("La conséquence a été", random.choice(conséquence))
    print("Le monde a dit", random.choice(mondeDit))
    print()
    input("Appuie sur Entrée pour rejouer.")
    print()

1

2

3

Ce petit programme est divisé en trois parties distinctes.

La 1 : C'est une suite de Tuple qui contiennent des bouts de phrases qui servirons a construire la suite.

La 2 : Cette ligne demande au programme d'aller chercher dans la "bibliothèque", elle permettra de choisir aléatoirement pour la suite.

La 3 : Tant que les conditions sont remplit, le logiciel affiche une données rentré préalablement au hasard puis une autre, jusqu'a la fin de la boucle.

bottom of page