RSS

une biere, une malboro et de l'electro

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

Analyse audio avec python

Ce qui est cool aussi avec python, c'est qu'on peut faire une analyse spectrale :

import pyaudio
from numpy import fromstring
#fenetre

from Tkinter import *
fen = Tk()
close = Button(fen,text="fermer",command=fen.quit)
can = Canvas(fen, width=400,height=200,bg="grey")
can.pack(side=TOP,padx=5,pady=5)
close.pack(side=BOTTOM,pady=12)

#fonctions
num=0
def affiche():
time=[]
time = getAudioData()
global can, lines
n,m,o=0,0,0
if len(lines)==0 :
for a in time:
val = (a*200)+100
lines.append(can.create_line(o,m,n,val,fill="blue"))
m=val
o=n
n+=1
else :
for a in time:
val = (a*200)+100
can.coords(lines[n],o,m,n,val)
m=val
o=n
n+=1
fen.after(1,affiche)

def getAudioData():
rate=1024
p = pyaudio.PyAudio()
inStream = p.open(format=pyaudio.paInt16, channels=1, rate=44100,
input=True, frames_per_buffer=rate)
audio_data = fromstring(inStream.read(rate), dtype=short)
normalized_data = audio_data / 32768.0
return normalized_data




print "enregistrement"
lines = []
affiche()
fen.mainloop()




l'idée c'est bel et bien récuperrer un buffer de la bande audio
puis d'en faire une mini analyse, histoire de se faire plaisir ; tout simplement !!

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

scanner tout les liens en Python

simpa cette petite librairie urllib !!!

def getLink(url):
import urllib
str=[]
htmlSource = urllib.urlopen(url).read(200000)
for chunk in htmlSource.lower().split('href=')[1:]:
indexes = [i for i in [chunk.find('"',1),chunk.find('>'),chunk.find(' ')] if i>-1]
str.append(chunk[:min(indexes)])
return str


ce code retourne un tableau avec tout les liens du site ;
Problème : il retourne aussi les liens avec les images ; le mieux serait ainsi :


def getLink2(url):
import urllib
str=[]
ext = ['.gif','.png','.jpg','.bmp','.css']
htmlSource = urllib.urlopen(url).read()
for chunk in htmlSource.lower().split('href=')[1:]:
indexes = [i for i in [chunk.find('"',1),chunk.find('>'),chunk.find(' ')] if i>-1]
link = chunk[:min(indexes)]
link = link.replace("'","")
if link[0]=='"':link=link[1:]
if link[-1]=='"':link=link[:1]
if url[-1]!="/":url+="/"
if link[0]=="/":
link = url+link[1:]
if link != "#":
if not link[-4:] in ext :
str.append(link)
return str


on évitera aussi les ancres, les liens nuls, etc ..

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

Se connecter avec FaceBook

c'est pas si compliquer que ça



FB.init({
appId : 'APPID',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});




ça ! on le connais tous !



l'idée, c'est d'utiliser une boite de dialog qui vas nous permettre, si les permissions sont accepter, de récuperer le nom et la photo de la personne :



function show(){
FB.ui({
method:'permissions.request',
perms:'user_about_me',
display:'iframe'},
function(reponse){
if(reponse.perms){changeStatut();}
}
);
}
function changeStatut(){
FB.api({
method:'fql.query',
query:'SELECT name,pic FROM user WHERE uid='+FB.getSession().uid},
function(reponse){
var name = reponse[0].name;
var pictSrc = reponse[0].pic;
var html = name+' '+pictSrc;
document.getElementById('contentFB').innerHTML = html;});
}


ET voila !!!!


Enjoy !

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

Détail des effets d'animation Javascript (easeIn & Out, effet de rebond)

En voila une bonne idée que j'ai eu du coté de la gare de nancy,
voila, il est relativement simple de faire une petite animation en JS :


var timer=0,speed=5,b=0;
for(var i=0;i<100;i++){
setTimeout(function(){elt.style.marginTop=b+"px";b++},(timer*speed));
timer++;}


1) l'effet easeOut (effet de frein)
function easeOut(x){return (x-1)^2;}



Et pour reprendre notre animation :

var timer=0,speed=5,b=0;
for(var i=0;i<100;i++){
setTimeout(function(){
var y = easeOut(b/100)*100;
elt.style.marginTop=y+"px";
b++},(timer*speed));
timer++;}


test

2) l'effet easeIn (autrement dit une acceleration)
Ici j'aurais bien pus utiliser une fonction exponentiel, mais j'ai préférer utiliser une fonction carré (question de goût surement)
function easeOut(x){return (((x-1)^2)*(-1)+1);}


test


3) L'effet de rebond, on pred un peu des autres fonction, on en fait une association genre ' f°g ' et ça donne un jolis rebond à faire en Javascript

function rebond(x){var mil = 0.5;
if(xelse if(x>mil){var y = carre(3*x-(7/3))+(1/2)}return y;}




test d'animation
Enjoy !

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

Bonne pioche

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

l'audio api de firefox 4.0, analyse spectrum et effets 3D

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS
une biere, une malboro et de l'electro Analyse audio avec python scanner tout les liens en Python Se connecter avec FaceBook Détail des effets d'animation Javascript (easeIn & Out, effet de rebond) Bonne pioche l'audio api de firefox 4.0, analyse spectrum et effets 3D