Skip to content

Conversation

@bhurlow
Copy link
Contributor

@bhurlow bhurlow commented Jul 19, 2025

Add compositional instrument creation system for LibGooey

Summary

  • Add new Instrument struct with oscillator/filter/envelope composition
  • Support multiple oscillators and filters per instrument
  • Add WASM bindings for WasmInstrument with compositional API
  • Update Stage to manage composite instruments alongside drums
  • Add React library support for createInstrument method
  • Include example React demo with sine wave + envelope + button trigger
  • Maintain backward compatibility with existing drum and oscillator systems

Key Features

  • Compositional Design: Users can create custom instruments by combining oscillators, filters, and envelopes
  • Flexible API: Support for multiple oscillators and filters per instrument
  • WASM Integration: Full web support with JavaScript/TypeScript bindings
  • React Library: Easy integration with React applications
  • Example Implementation: Working demo with sine wave + envelope triggering

Test plan

  • Build WASM module with new compositional API
  • Test React demo page with custom instrument creation
  • Verify backward compatibility with existing drum functionality
  • Test multiple oscillators and filters per instrument
  • Validate TypeScript type definitions

Fixes #82

Generated with Claude Code

- Add new Instrument struct with oscillator/filter/envelope composition
- Support multiple oscillators and filters per instrument
- Add WASM bindings for WasmInstrument with compositional API
- Update Stage to manage composite instruments alongside drums
- Add React library support for createInstrument method
- Include example React demo with sine wave + envelope + button trigger
- Maintain backward compatibility with existing drum and oscillator systems

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Brian Hurlow <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update public interfacing

2 participants