Exemplo n.º 1
0
    def __init__(self, displaySignal):
        threading.Thread.__init__(self)

        """pyaudio open the sound card"""
        self.p = pyaudio.PyAudio()

        print pyaudio.get_portaudio_version_text()

        print "(portaduio version:", pyaudio.get_portaudio_version(), ")"

        self.audio_data = 0
        self.displaySignal = displaySignal
        self.c = SlotCommunicate()

        try:
            self.in_stream = self.p.open(format=cfg.PYAUDIO_FORMAT_INT16,
                channels = cfg.SOUND_CARD_CHANNELS,
                rate = cfg.SOUND_CARD_RATE,
                input= True,
                frames_per_buffer = cfg.SOUND_CARD_CHUNK)

            self.out_stream = self.p.open(format = cfg.PYAUDIO_FORMAT_INT16, channels = cfg.SOUND_CARD_CHANNELS,
                                         rate = cfg.SOUND_CARD_RATE,
                                         output = True)

            print "open sound card succ. Sound card rate is: ", cfg.SOUND_CARD_RATE
        except:
            print "open sound card failure!"
Exemplo n.º 2
0
 def __str__(self):
     s  = _Device.__str__(self)
     s += 'portaudio        : %s %s\n'       %(pyaudio.get_portaudio_version(),
                                               pyaudio.get_portaudio_version_text())
     s += 'pyaudio          : %s\n'          %pyaudio.__version__
     s += 'output device    : id %i, %s\n'   %(self._index_out, self._device_out)
     s += 'input device     : id %i, %s\n'   %(self._index_in,  self._device_in)
     return s
Exemplo n.º 3
0
def find_device():
    print("=" * 90)
    print("PortAudio System Info:")
    print("=" * 90)
    print("Version: %d" % pyaudio.get_portaudio_version())
    print("Version Text: %s" % pyaudio.get_portaudio_version_text())
    print("Number of Host APIs: %d" % max_apis)
    print("Number of Devices  : %d\n" % max_devs)

    Found = 0  # Device found? (1 = Yes / 0 = No)
    #for each audio device, determine if is an input or an output and add it to the appropriate list and dictionary
    for i in range(0, numdevices):
        if p.get_device_info_by_host_api_device_index(
                0, i).get('maxInputChannels') > 0:
            print(" Input Device id {0} - {1}".format(
                i,
                p.get_device_info_by_host_api_device_index(0, i).get('name')))
            if 'Audio' in str(
                    p.get_device_info_by_host_api_device_index(0,
                                                               i).get('name')):
                Found = 1
                DEVICE = i

        if p.get_device_info_by_host_api_device_index(
                0, i).get('maxOutputChannels') > 0:
            print("Output Device id {0} - {1}".format(
                i,
                p.get_device_info_by_host_api_device_index(0, i).get('name')))

    if Found == 1:
        # Manually using the device index of Samson Microphone
        devinfo = p.get_device_info_by_index(DEVICE)
        print('\nSelected device is: {0}\n'.format(devinfo.get('name')))

        try:
            if p.is_format_supported(
                    RATE,  # Sample rate
                    input_device=devinfo["index"],  # Which device to select
                    input_channels=devinfo[
                        'maxInputChannels'],  # Number of channels
                    input_format=FORMAT):  # Default
                #output_format=FORMAT):
                print('\nSupported Device -{0}- has -{1}- Channels\n'.format(
                    str(devinfo["index"]), str(devinfo['maxInputChannels'])))
            #print ('\nSupported Device -{0}- has -{1}- Channels\n'.format(str(devinfo["index"]),str(devinfo['maxInputChannels'])))
        except ValueError:
            print("\n16 bit Format is NOT supported!?!")

    else:
        print("\nNo Audio device found... Exit for now")
        sys.exit()
    return devinfo  # return all of the Audio Devices specifications
    buf[-FRAME_SIZE:] = np.fromstring(
        stream.read(FRAME_SIZE, exception_on_overflow=False), np.int16)

    # Run the FFT on the windowed buffer
    fft = np.fft.rfft(buf * window)

    # Get frequency of maximum response in range
    freq = (np.abs(fft[imin:imax]).argmax() + imin) * FREQ_STEP

    n = freq_to_number(freq)
    n0 = int(round(n))

    # Console output once we have a full buffer
    num_frames += 1

    pyaudio.get_portaudio_version()

    if num_frames >= FRAMES_PER_FFT:
        print('freq: {:9.4f} Hz     note: {:>3s} {:+.2f}'.format(
            freq, note_name(n0), n - n0))

# #  D4

    if (note_name(n0), n - n0) < (Das_ist_ein_D4):
        print(mit)
        DasBLESignal_Rechts()
    elif (note_name(n0), n - n0) > (Das_ist_ein_D4):
        print(gegen)
        DasBLESignal_Links()  #BLE Signal
    else:
        E += 1
Exemplo n.º 5
0
support rates.
"""

import pyaudio

standard_sample_rates = [
    8000.0, 9600.0, 11025.0, 12000.0, 16000.0, 22050.0, 24000.0, 32000.0,
    44100.0, 48000.0, 88200.0, 96000.0, 192000.0
]

p = pyaudio.PyAudio()
max_apis = p.get_host_api_count()
max_devs = p.get_device_count()

print("\nPortAudio System Info:\n======================")
print("Version: %d" % pyaudio.get_portaudio_version())
print("Version Text: %s" % pyaudio.get_portaudio_version_text())
print("Number of Host APIs: %d" % max_apis)
print("Number of Devices  : %d" % max_devs)

print("\nHost APIs:\n==========")

for i in range(max_apis):
    apiinfo = p.get_host_api_info_by_index(i)
    for k in list(apiinfo.items()):
        print("%s: %s" % k)
    print("--------------------------")

print("\nDevices:\n========")

for i in range(max_devs):
def TonG():
    
    # GPIO.setmode(GPIO.BOARD)
    r = s_r.Recognizer()
    my_mic = s_r.Microphone(device_index=0)
    print(my_mic)


    m1e = 26
    m2e = 24
    m3e = 22
    
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(m1e,GPIO.OUT)
    GPIO.setup(m2e,GPIO.OUT)
    GPIO.setup(m3e,GPIO.OUT)


    Das_ist_ein_G4 = ('G4.583333333333333', 0.013800740096982622)
    Das_ist_ein_G2 = ('D4.166666666666667', 0.023449495698208978)

    gegen = "gegen den Uhrzeiger"
    mit= "mit dem Uhrzeiger"
    DieZeit = 1
    PerfekteNote = 9
    WieOftDieFlascheNoteGepsieltWerdenDamitSieEinSiganlAbgiebt = 0

    A = 0
    B = 0
    C = 0
    D = 0
    E = 0
    F = 0
    G = 0
    H = 0
    I = 0
    J = 0
    K = 0

    A1 = 0
    A2 = 0
    A1R = 0
    A2R = 0
    C1 = 0
    C2 = 0
    C1R = 0
    C2R = 0
    D1 = 0
    D2 = 0
    D1R = 0
    D2R = 0
    E1 = 0
    E2 = 0
    F1 = 0
    F2 = 0
    F1R = 0
    F2R = 0
    G1 = 0
    G2 = 0
    G1R = 0
    G2R = 0


    NOTE_MIN = 60       # C4
    NOTE_MAX = 69       # A4
    FSAMP = 48000      # Sampling frequency in Hz
    FRAME_SIZE = 2048   # How many samples per frame?  
    FRAMES_PER_FFT = 16 # FFT takes average across how many frames?



    SAMPLES_PER_FFT = FRAME_SIZE*FRAMES_PER_FFT
    FREQ_STEP = float(FSAMP)/SAMPLES_PER_FFT



    NOTE_NAMES = 'C C# D D# E F F# G G# A A# B'.split()



    def freq_to_number(f): return 69 + 12*np.log2(f/440.0)
    def number_to_freq(n): return 440 * 2.0**((n-69)/12.0)
    def note_name(n): return NOTE_NAMES[n % 12] + str(n/12 - 1)


    def note_to_fftbin(n): return number_to_freq(n)/FREQ_STEP
    imin = max(0, int(np.floor(note_to_fftbin(NOTE_MIN-1))))
    imax = min(SAMPLES_PER_FFT, int(np.ceil(note_to_fftbin(NOTE_MAX+1))))


    buf = np.zeros(SAMPLES_PER_FFT, dtype=np.float32) # Ursprügnlich war stand da ... .float32 (mit float16 gieng alles gut)
    num_frames = 0

    # Initialize audio
    stream = pyaudio.PyAudio().open(format=pyaudio.paInt16,
                                    channels=1,
                                    rate=FSAMP,
                                    input=True,
                                    frames_per_buffer=FRAME_SIZE)


    freq1 = 440.08

    window = 0.5 * (1 - np.cos(np.linspace(0, 2*np.pi, SAMPLES_PER_FFT, False)))

    # Print initial text
    print ('sampling at', FSAMP, 'Hz with max resolution of', FREQ_STEP, 'Hz')





    while stream.is_active():


        buf[:-FRAME_SIZE] = buf[FRAME_SIZE:]
        buf[-FRAME_SIZE:] = np.fromstring(stream.read(FRAME_SIZE, exception_on_overflow = False), np.int16)

        # Run the FFT on the windowed buffer
        fft = np.fft.rfft(buf * window)

        # Get frequency of maximum response in range
        freq = (np.abs(fft[imin:imax]).argmax() + imin) * FREQ_STEP

        n = freq_to_number(freq)
        n0 = int(round(n))

        # Console output once we have a full buffer
        num_frames += 1
        
        pyaudio.get_portaudio_version()

    

        if num_frames >= FRAMES_PER_FFT:
            print ('freq: {:9.4f} Hz     note: {:>3s} {:+.2f}'.format(
                freq, note_name(n0), n-n0)) 

    # G
        if  (note_name(n0), n-n0) < (Das_ist_ein_G4):
            print (mit)
            if(temp1==1):
             GPIO.output(in1,GPIO.HIGH)
             GPIO.output(in2,GPIO.LOW)

        elif (note_name(n0), n-n0) > (Das_ist_ein_G4):
            print (gegen)
            if(temp1==1):
             GPIO.output(in1,GPIO.LOW)
             GPIO.output(in2,GPIO.HIGH)

            
        else:
            J += 1
            print('Super das ist ein Perfektes G')

        if J <= PerfekteNote:
            print (note_name(n0), n-n0)

        else:
            break   

    # G2
        if  (note_name(n0), n-n0) < (Das_ist_ein_G2):
            print (mit)
            GPIO.output(m1e,GPIO.HIGH)
            GPIO.output(m2e,GPIO.LOW)
            GPIO.output(m3e,GPIO.HIGH)

        elif (note_name(n0), n-n0) > (Das_ist_ein_G2):
            print (gegen)
            GPIO.output(m2e,GPIO.HIGH)
            GPIO.output(m3e,GPIO.LOW)
            
        else:
            J += 1
            print('Super das ist ein Perfektes G')

        if J <= PerfekteNote:
            print (note_name(n0), n-n0)
            GPIO.output(m3e,GPIO.LOW)
            GPIO.cleanup()
        else:
            break   
    






        
                
Exemplo n.º 7
0
import pyaudio


if __name__ == '__main__':
    standard_sample_rates = [8000.0, 9600.0, 11025.0, 12000.0,
                             16000.0, 22050.0, 24000.0, 32000.0,
                             44100.0, 48000.0, 88200.0, 96000.0,
                             192000.0]

    p = pyaudio.PyAudio()
    max_apis = p.get_host_api_count()
    max_devs = p.get_device_count()

    print "PortAudio System Info:"
    print "=" * 120
    print "Version: %d" % pyaudio.get_portaudio_version()
    print "Version Text: %s" % pyaudio.get_portaudio_version_text()
    print "Number of Host APIs: %d" % max_apis
    print "Number of Devices  : %d" % max_devs

    print "\nHost APIs:\n=========="

    for i in range(max_apis):
        apiinfo = p.get_host_api_info_by_index(i)
        for k in apiinfo.items():
            print "%s: %s" % k
        print "--------------------------"

    print "\nDevices:\n========"

    for i in range(max_devs):
def TonA4():

    r = s_r.Recognizer()
    my_mic = s_r.Microphone(device_index=1)  # in die Klammer (device_index=0)
    print(my_mic)

    m1 = 7
    m2 = 5
    m3 = 3
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(m1, GPIO.OUT)
    GPIO.setup(m2, GPIO.OUT)
    GPIO.setup(m3, GPIO.OUT)

    Das_ist_ein_A4 = ('A4.75', -0.021530851746419444)

    gegen = "gegen den Uhrzeiger"
    mit = "mit dem Uhrzeiger"
    DieZeit = 1
    PerfekteNote = 1
    WieOftDieFlascheNoteGepsieltWerdenDamitSieEinSiganlAbgiebt = 0

    A = 0
    B = 0
    C = 0
    D = 0
    E = 0
    F = 0
    G = 0
    H = 0
    I = 0
    J = 0
    K = 0

    A1 = 0
    A2 = 0
    A1R = 0
    A2R = 0
    C1 = 0
    C2 = 0
    C1R = 0
    C2R = 0
    D1 = 0
    D2 = 0
    D1R = 0
    D2R = 0
    E1 = 0
    E2 = 0
    F1 = 0
    F2 = 0
    F1R = 0
    F2R = 0
    G1 = 0
    G2 = 0
    G1R = 0
    G2R = 0

    NOTE_MIN = 60  # C4
    NOTE_MAX = 69  # A4
    FSAMP = 48000  #22050       # Sampling frequency in Hz
    FRAME_SIZE = 2048  # How many samples per frame?
    FRAMES_PER_FFT = 16  # FFT takes average across how many frames?

    SAMPLES_PER_FFT = FRAME_SIZE * FRAMES_PER_FFT
    FREQ_STEP = float(FSAMP) / SAMPLES_PER_FFT

    NOTE_NAMES = 'C C# D D# E F F# G G# A A# B'.split()

    def freq_to_number(f):
        return 69 + 12 * np.log2(f / 440.0)

    def number_to_freq(n):
        return 440 * 2.0**((n - 69) / 12.0)

    def note_name(n):
        return NOTE_NAMES[n % 12] + str(n / 12 - 1)

    def note_to_fftbin(n):
        return number_to_freq(n) / FREQ_STEP

    imin = max(0, int(np.floor(note_to_fftbin(NOTE_MIN - 1))))
    imax = min(SAMPLES_PER_FFT, int(np.ceil(note_to_fftbin(NOTE_MAX + 1))))

    buf = np.zeros(SAMPLES_PER_FFT, dtype=np.float32)
    num_frames = 0

    # Initialize audio
    stream = pyaudio.PyAudio().open(format=pyaudio.paInt16,
                                    channels=1,
                                    rate=FSAMP,
                                    input=True,
                                    frames_per_buffer=FRAME_SIZE)

    freq1 = 440.08
    window = 0.5 * (1 -
                    np.cos(np.linspace(0, 2 * np.pi, SAMPLES_PER_FFT, False)))
    print('sampling at', FSAMP, 'Hz with max resolution of', FREQ_STEP, 'Hz')

    while stream.is_active():
        GPIO.setmode(GPIO.BOARD)
        GPIO.setup(m1, GPIO.OUT)
        GPIO.setup(m2, GPIO.OUT)
        GPIO.setup(m3, GPIO.OUT)

        buf[:-FRAME_SIZE] = buf[FRAME_SIZE:]
        buf[-FRAME_SIZE:] = np.fromstring(
            stream.read(FRAME_SIZE, exception_on_overflow=False), np.int16)

        # Run the FFT on the windowed buffer
        fft = np.fft.rfft(buf * window)

        # Get frequency of maximum response in range
        freq = (np.abs(fft[imin:imax]).argmax() + imin) * FREQ_STEP
        # Get note number and nearest note
        n = freq_to_number(freq)
        n0 = int(round(n))

        # Console output once we have a full buffer
        num_frames += 1

        pyaudio.get_portaudio_version()

        if num_frames >= FRAMES_PER_FFT:
            print('freq: {:9.4f} Hz     note: {:>3s} {:+.2f}'.format(
                freq, note_name(n0), n - n0))

    #  A4

        if (note_name(n0), n - n0) < (Das_ist_ein_A4):
            GPIO.setmode(GPIO.BOARD)
            GPIO.output(m1, GPIO.HIGH)
            GPIO.output(m2, GPIO.LOW)
            GPIO.output(m3, GPIO.HIGH)
            print("backward")
            print(mit)

            print(A)

        elif (note_name(n0), n - n0) > (Das_ist_ein_A4):
            GPIO.setmode(GPIO.BOARD)
            print(gegen)
            GPIO.output(m2, GPIO.HIGH)
            GPIO.output(m3, GPIO.LOW)
            print(A)

        else:
            A += 1
            print('Super das ist ein Perfektes A')
            # Stimmen()
            print(A)

        if A <= PerfekteNote:
            print(note_name(n0), n - n0)
            GPIO.setmode(GPIO.BOARD)
            print(A)
            GPIO.output(m3, GPIO.LOW)
            GPIO.cleanup()

        elif (KeyboardInterrupt):
            GPIO.output(m3, GPIO.LOW)
            print('Es hat geklappt')
            GPIO.cleanup()
            break

        else:
            break
Exemplo n.º 9
0
# -*- encoding=utf-8 -*-

import pyaudio

print dir(pyaudio)

print pyaudio.get_portaudio_version()
print pyaudio.get_portaudio_version_text()

audio_hdl = pyaudio.PyAudio()

print dir(audio_hdl)

default_host_api_info = audio_hdl.get_default_host_api_info()
print default_host_api_info

default_input_device_info = audio_hdl.get_default_input_device_info()
print default_input_device_info

default_output_device_info = audio_hdl.get_default_output_device_info()
print default_output_device_info

device_count = audio_hdl.get_device_count()
print device_count

host_api_count = audio_hdl.get_host_api_count()
print host_api_count

host_api_info_by_index = audio_hdl.get_host_api_info_by_index(1)
print host_api_info_by_index