No description
This allows playback of some 128k http streams from somafm, though glitches occur with some regularity. ```py import time import adafruit_connection_manager import adafruit_requests import audiobusio import audiomixer import audiomp3 import board import wifi pool = adafruit_connection_manager.get_radio_socketpool(wifi.radio) ssl_context = adafruit_connection_manager.get_radio_ssl_context(wifi.radio) requests = adafruit_requests.Session(pool, ssl_context) # todo: parse PLS files like https://somafm.com/nossl/dronezone.pls # todo: figure out why https URLs don't work at all (missing select?) # STREAMING_URL = "http://ice2.somafm.com/dronezone-128-mp3" STREAMING_URL = "http://ice4.somafm.com/tikitime-128-mp3" def get_mp3_stream(): if STREAMING_URL.startswith("http:") or STREAMING_URL.startswith("https:"): return requests.get(STREAMING_URL, headers={"connection": "close"}).socket return open(STREAMING_URL, "rb") mixer_buffer_size = 1152 * 16 mp3_buffer = bytearray(16384) with audiobusio.I2SOut( bit_clock=board.D12, word_select=board.D13, data=board.D11 ) as i2s, get_mp3_stream() as stream, audiomp3.MP3Decoder( stream, mp3_buffer ) as sample, audiomixer.Mixer( channel_count=2, sample_rate=44100, buffer_size=mixer_buffer_size ) as m: v = m.voice[0] print(sample) i2s.play(m) v.play(sample, loop=False) while v.playing: time.sleep(0.1) ``` |
||
|---|---|---|
| .codespell | ||
| .devcontainer | ||
| .github | ||
| data | ||
| devices/ble_hci | ||
| docs | ||
| examples | ||
| extmod | ||
| frozen | ||
| lib | ||
| LICENSES | ||
| locale | ||
| logo | ||
| mpy-cross | ||
| ports | ||
| py | ||
| shared | ||
| shared-bindings | ||
| shared-module | ||
| supervisor | ||
| tests | ||
| tools | ||
| .codespellrc | ||
| .git-blame-ignore-revs | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| .mailmap | ||
| .pre-commit-config.yaml | ||
| .readthedocs.yml | ||
| .rosie.yml | ||
| ACKNOWLEDGEMENTS | ||
| ACKNOWLEDGEMENTS.license | ||
| BUILDING.md | ||
| CODE_OF_CONDUCT.md | ||
| conf.py | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| LICENSE_MicroPython | ||
| main.c | ||
| Makefile | ||
| MANIFEST.in-stubs | ||
| README.rst | ||
| README.rst-stubs | ||
| requirements-ci.txt | ||
| requirements-dev.txt | ||
| requirements-doc.txt | ||
| runtime.py | ||
| setup.py-stubs | ||
| WEBUSB_README.md | ||
CircuitPython ============= .. image:: https://s3.amazonaws.com/adafruit-circuit-python/CircuitPython_Repo_header_logo.png |Build Status| |Doc Status| |License| |Discord| |Weblate| `circuitpython.org <https://circuitpython.org>`__ \| `Get CircuitPython <#get-circuitpython>`__ \| `Documentation <#documentation>`__ \| `Contributing <#contributing>`__ \| `Branding <#branding>`__ \| `Differences from Micropython <#differences-from-micropython>`__ \| `Project Structure <#project-structure>`__ **CircuitPython** is a *beginner friendly*, open source version of Python for tiny, inexpensive computers called microcontrollers. This package contains the "stubs", or type definitions for CircuitPython. With some advanced editors and other tools, this information can be identify TypeErrors, AttributeErrors, and other problems before you deploy your code to a device and can even help autocomplete your code. .. |Build Status| image:: https://github.com/adafruit/circuitpython/workflows/Build%20CI/badge.svg :target: https://github.com/adafruit/circuitpython/actions?query=branch%3Amain .. |Doc Status| image:: https://readthedocs.org/projects/circuitpython/badge/?version=latest :target: http://circuitpython.readthedocs.io/ .. |Discord| image:: https://img.shields.io/discord/327254708534116352.svg :target: https://adafru.it/discord .. |License| image:: https://img.shields.io/badge/License-MIT-brightgreen.svg :target: https://choosealicense.com/licenses/mit/ .. |Weblate| image:: https://hosted.weblate.org/widgets/circuitpython/-/svg-badge.svg :target: https://hosted.weblate.org/engage/circuitpython/?utm_source=widget