예제 #1
0
    def __work(self, sl):
        while(True):
            if not self.queue.empty():
                #Hay valores en la cola
                if (not self.manualMode or (self.manualMode and self.playNext)):
                    #O estamos en modo automático, o en manual con playNext activado
                    audioFile = self.queue.get()
                    logging.info("Audio Thread: Playing audio - "+str(audioFile))

                    #Required for CircuitPlayground Express
                    #speaker_enable = digitalio.DigitalInOut(board.SPEAKER_ENABLE)
                    #speaker_enable.switch_to_output(value=True)

                    data = open("./audio_files/data_smoke_test_LDC93S1_pcms16le_1_16000.wav", "rb")
                    wav = audiocore.WaveFile(data)
                    a = audiopwmio.PWMAudioOut(board.SPEAKER)

                    a.play(wav)
                    while a.playing:
                        pass
                    
                    logging.info("Audio Thread: Finished audio - "+str(audioFile))
                    logging.info ("Audio Thread: Current queue size - "+str(self.queue.qsize()))
                    self.queue.task_done()
                    self.playNext = False
                else:
                    #Estamos en modo manual sin playNext activado
                    logging.info("Audio Thread: Awaiting manual trigger")
            else:
                logging.info("Audio Thread: Empty Queue")

        logging.info("Audio Thread: Sleeping for - "+str(sl)+"ms")
        time.sleep(sl)
예제 #2
0
def button2_handler():
    global buzzer
    buzzer.deinit()
    LED[18].deinit()

    LR_FILENAME = "L-R.wav"
    data = open(LR_FILENAME, "rb")
    wav = audiocore.WaveFile(data)
    dac = audiopwmio.PWMAudioOut(board.GP18, right_channel=board.GP19)
    initialize_OLED()
    if I2C:
        oled.text('GP21 PRESSED', 30, 10, 1)
        oled.text('CHECK AUDIO', 32, 25, 1)
        oled.text('LEFT RIGHT CHANNEL', 10, 40, 1)
        deinitialize_OLED()
    dac.play(wav)
    time.sleep(3)
    dac.stop()

    initialize_OLED()
    if I2C:
        oled.text('GP21 PRESSED', 30, 20, 1)
        oled.text('CHECK RGB', 37, 40, 1)
        deinitialize_OLED()
    RGB.value = False
    neopixel_write(RGB, pixel_red)
    time.sleep(0.5)
    neopixel_write(RGB, pixel_green)
    time.sleep(0.5)
    neopixel_write(RGB, pixel_blue)
    time.sleep(0.5)
    neopixel_write(RGB, pixel_white)
    time.sleep(0.5)
    neopixel_write(RGB, pixel_off)
    time.sleep(0.5)

    dac.deinit()
    LED[18] = digitalio.DigitalInOut(board.GP19)
    LED[18].direction = digitalio.Direction.OUTPUT
    buzzer = pwmio.PWMOut(board.GP18, variable_frequency=True)
예제 #3
0
import audiomp3
import audiopwmio
from adafruit_crickit import crickit

ss = crickit.seesaw  # Crickit seesaw setup

button = crickit.SIGNAL1  # momentary switch to trigger animation
ss.pin_mode(button, ss.INPUT_PULLUP)

LED = crickit.SIGNAL4  # standard LED for eyeball lighting
ss.pin_mode(LED, ss.OUTPUT)

attract_switch = crickit.SIGNAL8  # attract mode switch or jumper
ss.pin_mode(attract_switch, ss.INPUT_PULLUP)

audio = audiopwmio.PWMAudioOut(
    board.A0)  # Feather outputs this pin to Crickit amplifier
audio_files = [  # use your own mono .mp3 files
    "phrase_01.mp3", "phrase_02.mp3", "phrase_03.mp3"
]
current_audio_file = 0

# two motors
motor_eye = crickit.dc_motor_1
motor_lid = crickit.dc_motor_2


def open_lid():
    motor_lid.throttle = 1  # full speed open
    time.sleep(0.25)
    motor_lid.throttle = 0  # hold
예제 #4
0
 def _generate_sample(self, length=100):
     if self._sample is not None:
         return
     self._sine_wave = array.array("H", self._sine_sample(length))
     self._sample = audiopwmio.PWMAudioOut(board.SPEAKER)
     self._sine_wave_sample = audiocore.RawSample(self._sine_wave)
    for i in range(SIN_LENGTH)
]
tones = (
    RawSample(array.array("H", sine_wave),
              sample_rate=1800 * SIN_LENGTH),  # Bit 0
    RawSample(array.array("H", sine_wave),
              sample_rate=1400 * SIN_LENGTH),  # Bit 1
)

bit_0 = tones[0]
bit_1 = tones[1]
carrier = tones[1]

char_pause = 0.0  # pause time between chars, set to 0 for fastest rate possible

dac = audiopwmio.PWMAudioOut(
    board.A2)  # the CLUE edge connector marked "#0" to STEMMA speaker
# The CLUE's on-board speaker works OK, not great, just crank amplitude to full before trying.
# dac = audiopwmio.PWMAudioOut(board.SPEAKER)

LTRS = (
    "\b",
    "E",
    "\n",
    "A",
    " ",
    "S",
    "I",
    "U",
    "\r",
    "D",
    "R",
import digitalio
import time
import math
import os

trigger = digitalio.DigitalInOut(board.D4)
trigger.switch_to_output(True)

sample_prefix = "jeplayer-splash"

samples = []
for fn in os.listdir("/"):
    if fn.startswith(sample_prefix):
        samples.append(fn)

dac = audiopwmio.PWMAudioOut(left_channel=board.D12, right_channel=board.D13)
for filename in samples:
    print("playing", filename)
    with open(filename, "rb") as sample_file:
        try:
            sample = audiocore.WaveFile(sample_file)
        except OSError as e:
            print(e)
            continue
        trigger.value = False
        dac.play(sample)
        while dac.playing:
            time.sleep(0.1)
            dac.pause()
            time.sleep(0.1)
            dac.resume()
"""
CircuitPython multiple MP3 playback example for Raspberry Pi Pico.
Plays two MP3 files consecutively, once time each.
"""
import board
import audiomp3
import audiopwmio

audio = audiopwmio.PWMAudioOut(board.GP0)

mp3files = ["slow.mp3", "happy.mp3"]

mp3 = open(mp3files[0], "rb")
decoder = audiomp3.MP3Decoder(mp3)

for filename in mp3files:
    decoder.file = open(filename, "rb")
    audio.play(decoder)
    print("Playing:", filename)
    while audio.playing:
        pass

print("Done playing!")
예제 #8
0
class Sprite:
    """ Class holds sprite (eggs, fireballs) state information. """
    def __init__(self, col, start_time):
        self.column = col  # 0-3
        self.is_fire = (random.random() < 0.25)  # 1/4 chance of fireballs
        self.start_time = start_time  # For drop physics
        self.paused = False


# ONE-TIME INITIALIZATION --------------

macropad = MacroPad(rotation=90)
macropad.display.auto_refresh = False
macropad.pixels.auto_write = False
macropad.pixels.brightness = 0.5
audio = audiopwmio.PWMAudioOut(board.SPEAKER)  # For background audio

font = bitmap_font.load_font(PATH + 'cursive-smart.pcf')

# Create 3 displayio groups -- one each for the title, play and end screens.

title_group = displayio.Group()
title_bitmap, title_palette = adafruit_imageload.load(
    PATH + 'title.bmp', bitmap=displayio.Bitmap, palette=displayio.Palette)
title_group.append(
    displayio.TileGrid(title_bitmap,
                       pixel_shader=title_palette,
                       width=1,
                       height=1,
                       tile_width=title_bitmap.width,
                       tile_height=title_bitmap.height))
예제 #9
0
# Plays a simple 8ksps 440 Hz sin wave
#
# Adapted from "Audio output via digital PWM article"
# https://circuitpython.readthedocs.io/en/latest/shared-bindings/audiopwmio/index.html
# for Maker Pi Pico
#
# Copy this file to Maker Pi Pico CIRCUITPY drive as code.py to run it on power up.
#

import audiocore
import audiopwmio
import board
import array
import time
import math

# Generate one period of sine wav.
length = 8000 // 440
sine_wave = array.array("H", [0] * length)
for i in range(length):
    sine_wave[i] = int(math.sin(math.pi * 2 * i / length) * (2**15) + 2**15)

dac = audiopwmio.PWMAudioOut(board.GP18)
sine_wave = audiocore.RawSample(sine_wave, sample_rate=8000)
dac.play(sine_wave, loop=True)
time.sleep(1)
dac.stop()
    s8[i] = int(math.sin(math.pi * 2 * i / length) * (2**7))

samples.append(audiocore.RawSample(s8, sample_rate=16000))

# unsigned 16 bit
u16 = array.array("H", [0] * length)
for i in range(length):
    u16[i] = int(math.sin(math.pi * 2 * i / length) * (2**15) + 2**15)

samples.append(audiocore.RawSample(u16, sample_rate=8000))

# signed 16 bit
s16 = array.array("h", [0] * length)
for i in range(length):
    s16[i] = int(math.sin(math.pi * 2 * i / length) * (2**15))

samples.append(audiocore.RawSample(s16, sample_rate=8000))

dac = audiopwmio.PWMAudioOut(board.D13)
for sample, name in zip(samples, sample_names):
    print(name)
    trigger.value = False
    dac.play(sample, loop=True)
    time.sleep(1)
    dac.stop()
    time.sleep(0.1)
    trigger.value = True
    print()

print("done")
예제 #11
0
import audiopwmio
import digitalio
#import adafruit_character_lcd.character_lcd as characterlcd
#THIS ONE
import adafruit_character_lcd.character_lcd_i2c as character_lcd

from random import randint
import time

lcd_columns = 16
lcd_rows = 4

i2c = busio.I2C(board.SCL, board.SDA)
lcd = character_lcd.Character_LCD_I2C(i2c, 16, 2)

a = audiopwmio.PWMAudioOut(board.SPEAKER)

#lcd_rs = digitalio.DigitalInOut(board.D26)
#lcd_en = digitalio.DigitalInOut(board.D19)
#lcd_d7 = digitalio.DigitalInOut(board.D27)
#lcd_d6 = digitalio.DigitalInOut(board.D22)
#lcd_d5 = digitalio.DigitalInOut(board.D24)
#lcd_d4 = digitalio.DigitalInOut(board.D25)

#lcd = characterlcd.Character_LCD_Mono(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows)

normalAudioFiles = []
drunkAudioFiles = []
audioFiles = []

for file in os.listdir("./audio_files/normal"):