{"id":20365866,"url":"https://github.com/cycoresystems/audimance","last_synced_at":"2025-06-28T16:33:17.964Z","repository":{"id":28053879,"uuid":"125772891","full_name":"CyCoreSystems/audimance","owner":"CyCoreSystems","description":"Audimance provides an audio experience engine for live performances","archived":false,"fork":false,"pushed_at":"2023-12-01T15:41:03.000Z","size":1297,"stargazers_count":11,"open_issues_count":5,"forks_count":3,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-06-22T06:04:05.134Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CyCoreSystems.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"roadmap","authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-18T22:20:26.000Z","updated_at":"2025-05-20T15:10:02.000Z","dependencies_parsed_at":"2024-06-19T16:22:54.770Z","dependency_job_id":"85d4d735-ced0-4023-be46-1bd0039f3ab5","html_url":"https://github.com/CyCoreSystems/audimance","commit_stats":null,"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"purl":"pkg:github/CyCoreSystems/audimance","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyCoreSystems%2Faudimance","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyCoreSystems%2Faudimance/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyCoreSystems%2Faudimance/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyCoreSystems%2Faudimance/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CyCoreSystems","download_url":"https://codeload.github.com/CyCoreSystems/audimance/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyCoreSystems%2Faudimance/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262460348,"owners_count":23314720,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-11-15T00:20:43.516Z","updated_at":"2025-06-28T16:33:17.948Z","avatar_url":"https://github.com/CyCoreSystems.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Audimance\n\nAudimance is a tool for the creation and deployment of user-directed artistic audio experiences.\nContent may be designed for use in isolation, as accompaniment to other media, or in conjunction \nwith live performance using QLab. \n\nAudimance enables a user-centered, flexibly complex, audio environment ideal for nonvisual audiences\nand can be used to provide either single-track or multi-track audio description.  \n\n## Why? \n\nAudimance was initially created to solve for a lack of equity and aesthetic sophistication \nin the previous standard practice of audio description for dance.  Designed by Laurel Lawson\n(laurellawson.com) and initially deployed alongside Kinetic Light's DESCENT (kineticlight.org/descent),\nAudimance is based on research and continual feedback from primarily nonvisual artists and arts audiences.  \n\nAudimance provides a flexible deployment platform which:\n- permits artists and content creators to easily deploy single or multi-track content\n- facilitates venues in providing consistently available accessibility without large dedicated hardware systems\n- creates user-directed aesthetic experiences which prioritize user agency for style and complexity\n\n## Sample Use Cases\n\n* Rich multi-track audio description to accompany live or recorded dance, theatre, or other performing arts \n* Spatialized sonic art or performance \n* Simple audio description to accompany performing arts\n* Silent concerts or other sound experiences leveraging personal mobile devices \n* Delivery of programs, notes, or other textual assets accompanying performing or exhibited arts\n* Audio description for visual arts, such as gallery or museum exhibitions \n\n## Usage\n\nAudimance can be run as a binary operating on a set of custom web files and\nprogram agenda configuration.  Generally, no modifications to the engine source\ncode are necessary.\n\nAudimance expects a certain format for its execution root.  See the `/example`\ndirectory for this structure.\n\nThe most important file is the `agenda.yaml`, which defines the program,\nsections, cues, audio files, etc.  The web templates are located in the `views/`\ndirectory.  `index.html` is always the entry point, and `room.html` represents\nthe template for a room (a place where a performance occurs).\n\nThere are very few constraints on styling or format overall.  Instead, the data\nstructures are accessible via Go `text/html` templating and from Javascript.\n\n### Agenda (showfile)\n\nAn example of an `agenda.yaml` file can be found in `/example`, but the full structure of this file is describes by `/agenda/agenda.go`.\n\n### Go template data structures\n\nThe data structure available to a Room is:\n\n```go\nstruct {\n   Announcements []*agenda.Announcement\n   Room *Agenda.Room\n}\n```\n\nThe main index, however, has the entire Agenda available at its data root.\n\n### Javascript helpers\n\nThe `/app/app.js` file is bundled with the binary application and can be loaded\nfrom that location in your HTML files.  It is exposed as an ES6 module.\nInside this module, there are a few key components:\n\n - `LoadAgenda` (function), which loads and processes the `agenda.yaml` file for\n   use by the Rooms and optionally custom Javascript.\n - `SpatialRoom` (class), which creates and manages a room with spatialised\n   sounds placed as configured by the `agenda.yaml` file, and scaled to the\n   size of the HTML container with ID `audimance-room`.\n - `TrackRoom` (class), which binds manually-constructed `\u003caudio\u003e` tags to their\n   corresponding sources, keeping them in sync with the performance.\n - `PerformanceTime` (class), which keeps track of cues and timings of the\n   performance.  The rooms use this internally, but it is exposed in case the\n   developer wishes to create their own actions on certain events.\n\n#### PerformanceTime\n\nThis package receives continuous ticker notifications and cue announcements\nwhich enable Audimance to keep in sync with the live performance, to the\nfraction of a second, continuously synchronizing.\n\n#### SpatialRoom\n\nThe `SpatialRoom` class provides a complete application for playback and\ninteraction with a performance.  You need only load it from your room's HTML, provide\nit a `\u003cdiv id=\"audimance-map\"\u003e\u003c/div\u003e` to fill, and it will handle everything\nelse.\n\nFeel free, too, to simply use it as a model on which to build your own.\n\n### Dependencies\n\nBecause Audimance is intended to be run at venues with unreliable internet, all\ndependencies are bundled and local.  We recommend any additional dependencies be\nmanaged in the same way to reduce external internet traffic from dozens or\nhundreds of audience members.\n\n## Technical\n\n### Audio spatialization\n\nAudimance leverages [Resonance Audio](https://resonance-audio.github.io/resonance-audio/) to provide\ncross-platform 3-D spatialization of many source sources.\n\n### Audio Synchronization\n\nAudimance provides source-separated external synchronization (such as for\nsynchronizing certain audio sources to a live performance), and virtual rooms\nwhich may be traversed and chosen independently and interactively by individual\naudience members.\n\nAudimance accepts cues on a UDP port (9001, by default) to be fed from external\nsynchronization sources, such as from Figure53's\n[QLab](https://figure53.com/qlab/).  It expects the cue label to be received in\ncase-sensitive plain text on the UDP port to trigger the cue.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcycoresystems%2Faudimance","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcycoresystems%2Faudimance","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcycoresystems%2Faudimance/lists"}