{"id":15142082,"url":"https://github.com/cedargrovestudios/circuitpython_chime","last_synced_at":"2026-01-19T06:02:35.744Z","repository":{"id":200910049,"uuid":"703763484","full_name":"CedarGroveStudios/CircuitPython_Chime","owner":"CedarGroveStudios","description":"A CircuitPython class for generating wind chime and bell sounds using synthio.","archived":false,"fork":false,"pushed_at":"2023-11-21T04:01:10.000Z","size":637,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-06T15:17:34.909Z","etag":null,"topics":["circuitpython","music","synthio"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CedarGroveStudios.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-11T21:41:27.000Z","updated_at":"2025-02-25T02:36:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"a69a29b2-a85c-4bc3-b8fd-7f199929e300","html_url":"https://github.com/CedarGroveStudios/CircuitPython_Chime","commit_stats":{"total_commits":15,"total_committers":1,"mean_commits":15.0,"dds":0.0,"last_synced_commit":"47494755ebfea3c1902fe055ba2b7fa1d7b302ae"},"previous_names":["cedargrovestudios/circuitpython_chime"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/CedarGroveStudios/CircuitPython_Chime","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CedarGroveStudios%2FCircuitPython_Chime","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CedarGroveStudios%2FCircuitPython_Chime/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CedarGroveStudios%2FCircuitPython_Chime/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CedarGroveStudios%2FCircuitPython_Chime/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CedarGroveStudios","download_url":"https://codeload.github.com/CedarGroveStudios/CircuitPython_Chime/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CedarGroveStudios%2FCircuitPython_Chime/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28562239,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T03:31:16.861Z","status":"ssl_error","status_checked_at":"2026-01-19T03:31:15.069Z","response_time":67,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["circuitpython","music","synthio"],"created_at":"2024-09-26T09:22:29.945Z","updated_at":"2026-01-19T06:02:35.725Z","avatar_url":"https://github.com/CedarGroveStudios.png","language":"Python","readme":"Introduction\n------------\n\n.. image:: https://img.shields.io/discord/327254708534116352.svg\n    :target: https://adafru.it/discord\n    :alt: Discord\n\n.. image:: https://github.com/CedarGroveStudios/CircuitPython_Chime/workflows/Build%20CI/badge.svg\n    :target: https://github.com/CedarGroveStudios/CircuitPython_Chime/actions\n    :alt: Build Status\n\n.. image:: https://img.shields.io/badge/code%20style-black-000000.svg\n    :target: https://github.com/psf/black\n    :alt: Code Style: Black\n\nA CircuitPython class for generating wind chime and bell sounds using `synthio`.\n\nThe CedarGrove CircuitPython Chime class provides `synthio` note overtones and envelopes developed from\na combination of tubular chime algorithms and empirical (practical) models. Three chime voices are included\nin the class (``Voice.Tubular``, ``Voice.Bell``, and ``Voice.Perfect``) as well as selectable chime\nand striker materials. The ``Scales`` class contains a library of common wind chime and bell scales\nin a collection of Scientific Pitch Notation (SPN) lists.\n\nThe ``Chime`` class is instantiated after an MCU board-specific audio output object is defined. The\naudio output object can be an Analog DAC or PWM GPIO pin as well as an I2S DAC output (as in the\nsimpletest example). Chime notes are then played by the ``Chime.strike(root_note, amplitude)`` function.\n\n\nDependencies\n------------\nThis class depends on:\n\n* `Adafruit CircuitPython \u003chttps://github.com/adafruit/circuitpython\u003e`_\n* `CedarGrove CircuitPython_MIDI_Tools \u003chttps://github.com/CedarGroveStudios/CircuitPython_MIDI_Tools\u003e`_\n\nPlease ensure all dependencies are available on the CircuitPython filesystem.\nThis is easily achieved by downloading\n`the Adafruit library and driver bundle \u003chttps://circuitpython.org/libraries\u003e`_\nor individual libraries can be installed using\n`circup \u003chttps://github.com/adafruit/circup\u003e`_.\n\nUsage Example\n-------------\n\n.. code-block:: python\n\n    import time\n    import board\n    import random\n    import audiobusio\n    import audiomixer\n    from cedargrove_chime import Chime, Scale, Voice, Material, Striker\n\n    # Instantiate I2S output and mixer buffer for synthesizer\n    audio_output = audiobusio.I2SOut(\n        bit_clock=board.D12, word_select=board.D9, data=board.D6\n    )\n    mixer = audiomixer.Mixer(\n        sample_rate=11020, buffer_size=4096, voice_count=1, channel_count=1\n    )\n    audio_output.play(mixer)\n    mixer.voice[0].level = 1.0\n\n    # Instantiate the chime synth with mostly default parameters\n    chime = Chime(mixer.voice[0], scale=Scale.HarryDavidPear)\n\n    # Play scale notes sequentially\n    for index, note in enumerate(chime.scale):\n        chime.strike(note, 1)\n        time.sleep(0.4)\n    time.sleep(1)\n\n    while True:\n        # Play randomly\n        for count in range(random.randrange(10)):\n            chime.strike(random.choice(chime.scale), 1)\n            time.sleep(random.randrange(1, 3) * 0.6)\n\n        time.sleep(random.randrange(1, 10) * 0.5)\n\nThe ``Chime`` class was also used for an IoT Weather Chime project using the ESB32-S2 that plays \"windless\" electronic chimes in accordance with the outdoor wind speed: https://github.com/CedarGroveStudios/Weather_Chimes\n\nDocumentation\n-------------\nAPI documentation for this library can be found in `Cedargrove_Chime_API \u003chttps://github.com/CedarGroveStudios/CircuitPython_Chime/blob/main/media/pseudo_rtd_cedargrove_chime.pdf\u003e`_.\n\n.. image:: https://github.com/CedarGroveStudios/CircuitPython_Chime/blob/main/media/chime_api_page3.png\n\n.. image:: https://github.com/CedarGroveStudios/CircuitPython_Chime/blob/main/media/chime_initialize.png\n\n.. image:: https://github.com/CedarGroveStudios/CircuitPython_Chime/blob/main/media/chime_strike.png\n\nAttribution: Patch Symbols from PATCH \u0026 TWEAK by Kim Bjørn and Chris Meyer, published by Bjooks, are licensed under Creative Commons CC BY-ND 4.0.\nSome Patch Symbols were modified to create the synthio symbols ``BlockInput``, ``MixerVoice``, ``Note``, ``Synthesizer``, ``sample``, and ``voice``.\n\nFor additional detail about ``synthio`` diagrams, see `Symbols for synthio Objects \u003chttps://adafruit-playground.com/u/CGrover/pages/symbols-for-synthio-objects\u003e`_\n\nPlanned Updates\n---------------\n* Limit the practical chime overtones to a specified frequency range such as 300Hz to 3000Hz.\n* Provide additional chime scales.\n* Update the ``Overtones`` class to include aluminum, wood, and brass.\n\nAcknowledgements and Thanks\n---------------------------\n* Lee Hite, '`Tubular Bell Chimes Design Handbook`' for the analysis of tubular chime physics and overtones.\n* C. McKenzie, T. Schweisinger, and J. Wagner, '`A Mechanical Engineering Laboratory Experiment\n  to Investigate the Frequency Analysis of Bells and Chimes with Assessment`' for the analysis\n  of bell overtones.\n* Liz Clark, '`Circle of Fifths Euclidean Synth with synthio and CircuitPython`' Adafruit Learning Guide\n  for the waveform and noise methods.\n* Todd Kurt for fundamentally essential `synthio` hints, tricks, and examples\n  (https://github.com/todbot/circuitpython-synthio-tricks).\n\nAlso, special thanks to Jeff Epler and Adafruit for the comprehensive design and implementation\nof the amazing CircuitPython ``synthio`` module.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcedargrovestudios%2Fcircuitpython_chime","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcedargrovestudios%2Fcircuitpython_chime","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcedargrovestudios%2Fcircuitpython_chime/lists"}