14 Ekim 2013 Pazartesi

Python, Ses kartından direk çıktı almak

Bir ara ses kartına sinyal göndererek acaba "özlediğim şimdi çok uzaklarda" şarkısını çalabilirmiyim diye deneme yaptım fakat döngü tek tek yazdığı için melodi zor seçiliyor. Bu betik sadece unix/linux sistemlerde çalışabilir. Şayet win32 de çalıştıracaksanız ses kartınıza direk erişiminiz olup olmadığını kontrol ediniz.

import time

"""
Do     261,6
Re     293,7
Mi     329,6
Fa     349,2
Sol     392,0
La     440,0
Si     493,9
Do     523,5
"""
nota = 261,293,329,349,392,440,493,523
pat="do","re","mi","fa","so","la","si","do"
muz="mimimimifamimimimilamirerereremirerereremiredodo"

def beep(frequency, amplitude, duration):
    sample = 8000
    half_period = int(sample/frequency/0.3)
    beep = chr(amplitude)*half_period+chr(0)*half_period
    beep *= int(duration*frequency)
    print beep
    audio = file('/dev/audio', 'wb')
   
    audio.write(beep)
    audio.close()


for i in range(0,len(muz),2):
    print pat.index(muz[i:(i+2)]),muz[i:(i+2)]
    deep =nota[pat.index(muz[i:(i+2)])]
    print deep
    beep(deep,50,0.05)

Hiç yorum yok:

Yorum Gönder