{"id":13590722,"url":"https://github.com/keijiro/Lasp","last_synced_at":"2025-04-08T14:31:36.241Z","repository":{"id":38800933,"uuid":"97295202","full_name":"keijiro/Lasp","owner":"keijiro","description":"Low-latency Audio Signal Processing plugin for Unity","archived":false,"fork":false,"pushed_at":"2025-03-29T05:39:16.000Z","size":2908,"stargazers_count":1598,"open_issues_count":13,"forks_count":123,"subscribers_count":46,"default_branch":"v2","last_synced_at":"2025-04-06T21:13:54.318Z","etag":null,"topics":["audio","sound","unity","unity3d"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/keijiro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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":"2017-07-15T05:49:26.000Z","updated_at":"2025-04-06T15:04:35.000Z","dependencies_parsed_at":"2024-06-18T19:51:08.555Z","dependency_job_id":"b53e4279-b747-4689-9a06-fb930c530ea6","html_url":"https://github.com/keijiro/Lasp","commit_stats":{"total_commits":51,"total_committers":1,"mean_commits":51.0,"dds":0.0,"last_synced_commit":"a18cf521886ab96bb503323f59a602e03b93e3b4"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keijiro%2FLasp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keijiro%2FLasp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keijiro%2FLasp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keijiro%2FLasp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keijiro","download_url":"https://codeload.github.com/keijiro/Lasp/tar.gz/refs/heads/v2","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247860665,"owners_count":21008330,"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":["audio","sound","unity","unity3d"],"created_at":"2024-08-01T16:00:49.850Z","updated_at":"2025-04-08T14:31:36.231Z","avatar_url":"https://github.com/keijiro.png","language":"C#","funding_links":[],"categories":["Game-Design-Tool","C# #","C#"],"sub_categories":[],"readme":"# LASP\n\n**LASP** is a Unity plugin that provides low-latency audio input features,\nmaking it useful for creating audio-reactive visuals.\n\n## Demos\n\n![gif](https://i.imgur.com/L98u4AI.gif)\n\n**Sphere** is the simplest example demonstrating LASP. It features an animated\nsphere whose scale responds to the audio level. This example utilizes the\n**Audio Level Tracker** component to measure the audio level and a **Property\nBinder** to animate the sphere's scale property.\n\n![gif](https://i.imgur.com/4OVS00N.gif)\n\n**LevelMeter** is a slightly more advanced example of the **Audio Level\nTracker** in action. It visualizes the audio levels of low, mid, and high\nfrequency bands. Additionally, it makes use of the raw waveform function to\nrender a waveform graph.\n\n![screenshot](https://i.imgur.com/D51PENw.png)\n\n**DeviceSelector** demonstrates how to instantiate the **Audio Level Tracker**\nand configure **Property Binders** programmatically at runtime.\n\n![gif](https://i.imgur.com/gVwN4qE.gif)\n\n**Lissajous** showcases how to draw a Lissajous curve using the **Input\nStream** class and its interleaved waveform function.\n\n![gif](https://i.imgur.com/jT0Tj1o.gif)\n\n**Spectrum** illustrates how to utilize the **Spectrum Analyzer** component to\nextract and visualize the frequency spectrum of an audio input stream.\n\n## System Requirements\n\n- Unity 2022.3 LTS or later\n\nCurrently, LASP supports only desktop platforms (Windows, macOS, and Linux).\n\n## Installation\n\nYou can install the LASP package (`jp.keijiro.lasp`) via the \"Keijiro\" scoped\nregistry using the Unity Package Manager. To add the registry to your project,\nfollow [these instructions].\n\n[these instructions]:\n  https://gist.github.com/keijiro/f8c7e8ff29bfe63d86b888901b82644c\n\n## Audio Level Tracker Component\n\nThe **Audio Level Tracker** component receives an audio stream and calculates\nthe current audio level. It supports **Property Binders**, which modify the\nproperties of external objects based on the normalized audio level.\n\n![gif](https://i.imgur.com/wBsYq64.gif)\n\nThis component tracks the most recent peak level and calculates the normalized\nlevel based on the difference between the current level and the peak level. It\nonly outputs an effective value when the current level falls within its dynamic\nrange, indicated by the gray band in the level meter.\n\n### Default Device / Device ID\n\nAs an audio source, you can use either the **Default Device** or a specific\naudio device by specifying its Device ID.\n\nDevice IDs are system-generated random strings, such as `{4786-742f-9e42}`. In\nthe Editor, you can use the **Select** button to find a device and retrieve its\nID. Note that these ID strings are system-dependent, so you will need to\nreconfigure them when running the project on a different platform.\n\nAt runtime, you can use `AudioSystem.InputDevices` to enumerate available\ndevices and obtain their IDs. Refer to the **DeviceSelector** example for more\ndetails.\n\n### Channel\n\nSelect a channel to use as input, or leave it at `0` for monaural devices.\n\n### Filter Type\n\nFour filter types are available: **Bypass**, **Low Pass**, **Band Pass**, and\n**High Pass**. These filters are useful for detecting specific rhythmic accents.\nFor example, a **Low Pass** filter can be used to create a response to kick\ndrums or basslines.\n\n### Dynamic Range (dB)\n\nThe **Dynamic Range** defines the range of audio level normalization. The output\nvalue becomes zero when the input level is equal to or lower than  \n*Peak Level - Dynamic Range*.\n\n### Auto Gain\n\nWhen enabled, this feature automatically tracks the peak level as explained\nabove. When disabled, the peak level is fixed at **0 dB**, allowing you to\nmanually control the effective range using the **Gain** property.\n\n### Smooth Fall\n\nWhen enabled, the output value gradually decreases toward the current actual\naudio level, making choppy animations appear smoother.\n\n![gif](https://i.imgur.com/VKiZx4M.gif)\n\n## Spectrum Analyzer Component\n\n![gif](https://i.imgur.com/sWRMSMG.gif)\n\nThe **Spectrum Analyzer** component processes an audio stream using **FFT\n(Fast Fourier Transform)** to extract spectrum data.\n\nIt normalizes the spectrum values using the same algorithm as the **Audio Level\nTracker**. Refer to the section above for details.\n\nYou can access the spectrum data via the scripting API. For detailed usage,\nsee the **SpectrumAnalyzer** example.\n\n## Spectrum To Texture Component\n\n![screenshot](https://i.imgur.com/r9kxPF3.png)\n\nThe **Spectrum To Texture** component is a utility that converts spectrum data\ninto a texture, making it useful for creating visual effects with shaders.\n\nThere are two ways to utilize the spectrum texture:\n\n### Via Render Texture\n\nYou can bake the spectrum data into a **Render Texture** by specifying it in the\n**Render Texture** property. The render texture must meet the following\nrequirements:\n\n- **Width**: Must match the spectrum resolution.\n- **Height**: Must be `1`.\n- **Format**: `R32_SFloat`\n\n### Via Material Override\n\nYou can override a material's texture property using the **Material Override**\nproperty. This method is convenient when applying the spectrum texture to a\n**Mesh Renderer**.\n\n## Scripting Interface\n\nLASP provides several public methods and properties in its core classes, such as\n`AudioLevelTracker`, `AudioSystem`, and `InputStream`. \n\nFor detailed usage, refer to the example scripts.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeijiro%2FLasp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeijiro%2FLasp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeijiro%2FLasp/lists"}