
Comparaison des différents systèmes : Unbuntu, Windows et MACos. (voir le lien) ---->

PROJET N°8: Comparaison Processing et Python

#!/usr/bin/env python
# coding: utf-8
# In[4]:
#importation de numpy
# alias np
import numpy as np
# importation de matplotlib.pyplot
# alias plt
import matplotlib.pyplot as plt
# fonction associée à la loi horaire
def z(t,g,h):
return h - g * t**2 / 2
# paramètres physiques
g = 9.81
# accélération de la pesanteur
h = 1.0
# hauteur initiale en m
# tracé des trajectoires
t_min = 0.0
# instant initial en s
t_max = 1.0
# instant final en s
n_t = 100
# nombre de points de calculs
# tableau des instants
tab_t = np.linspace(t_min,t_max,n_t)
# tableau des z
tab_z = z(tab_t,g,h)
# tracé de tab_z en fonction de tab_t
# option'r-': tracé en rouge (r)
# en reliant les points (-)
plt.plot(tab_t,tab_z,'r-')
# affichage de la courbe
plt.show()

int nombrederectangles = 10;
int x = 0;
void setup()
{
size(400,410);
// 4 tableaux de 10 cases chacun contiennent la position en x et en y du centre de chaque base et le sens de déplacement
xdirection = new int[10];
ydirection = new int[10];
xpos = new float[10];
ypos = new float[10];
noStroke();
noCursor();
frameRate(30);
ellipseMode(RADIUS);
for(int i=0; i<10;i++){
xpos[i] = random(25,350);
ypos[i] = random(25,350);
xdirection[i] = 1;
ydirection[i] = 1;
noCursor();
}
}
void draw()
{
background(20);
fill(255);
text("Your score is " + x, tx,ty);
if(millis()<5000) {
text("Press left mouse button to fire. Press right mouse button to reload.", 15, 40);
}
l'indentation de 4 espaces est indispensable en python pour associer def à return

# 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')# tupleMonson.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*niveauGamplitudeD = 127.5*niveauDprint('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 frameMonson.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()
Qu'est-ce qu'un tuple ?
Pour déclarer un tuple on utilise des parenthèses chaque éléments étant séparés par des virgules.
Ce sont des listes d'éléments non-modifiables : nombre entier, décimal, listes, chaînes de caractères...
Exemple :
parametres = (nbCanal,nbOctet,fech,nbEchantillon,'NONE','not compressed')# tuple
GAMME TEMPÉRÉE:
DO-DO#-RE-RE#-MI-FA-FA#-SOL-SOL#-LA-LA#-SI-DO
440Hz La3 ou A4 On divise 2 puissance 1 douxième
DO# RE# FA# SOL# LA#
275 309 369 415 466
voici les étapes a suivre pour un son avec python
Etapes 1
télécharger edupython
Etapes 2: 1) pour créer un son copiez le texte ci dessous
# 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)Pour faire une mélodie par exemple "au clair de la lune" il suffit de modifier ces lignes EN ROUGE et de rajouter une variable "fréquence" avec les fréquences des notes de la musique "au clair de la lune" ce qui donne
frequence=[260,1,260,1,260,291,328,291,260,328,291,1,291,260]
for y in frequence:
3)Pour créer des sons aléatoires il faut enlever les lignes en rouge et le s remplacer par ces lignes :
import ramdom
frequence=[ramdom.randrange(0,10) for i in range (10)