Skip to content

Latest commit

 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FaustSwiftUI

This is a SwiftUI-based dynamic UI renderer for Faust DSP JSON metadata. It parses the Faust UI JSON structure and displays corresponding SwiftUI controls like sliders, toggles, buttons, bargraphs etc.

Features

  • ✅ JSON-driven layout
  • ✅ Live binding via @ObservedObject with a FaustUIViewModel
  • ✅ Dynamic layout from vgroup, hgroup, tgroup primitives
  • 🔄 UI-to-DSP input controls (hslider, vslider, checkbox, button ...)
  • 🔄 DSP-to-UI output monitors (hbargraph, vbargraph)
  • 🔄 Style metadata (knob, menu, radio ...)
  • ❌ Load default values from JSON layout to ViewModel

Usage

let jsonData: Data = ... // Faust UI JSON from libfaust
let ui = try JSONDecoder().decode([FaustUI].self, from: jsonData)

FaustUIView(ui: ui, viewModel: FaustUIViewModel())

Supported Primitives

Type Description Implemented
vgroup Vertical group ✅
hgroup Horizontal group ✅
tgroup Tabbed group ✅
hslider Horizontal slider ✅
vslider Vertical slider ✅
nentry Number entry box ✅
button Momentary push button ✅
checkbox Toggle button ✅
hbargraph Horizontal bargraph ✅
vbargraph Vertical bargraph ✅

Supported Styles (via [style:...] metadata)

Style Description Implemented
knob Rotary knob ✅
menu{...} Dropdown menu ❌
radio{...} Radio button menu ❌
led LED-style output ❌
numerical Numerical value display ❌

Supported Metadata

Key Description Implemented
style Widget style ✅
unit Display value unit ❌
scale Value scaling ❌
tooltip Tooltip ❌
hidden Hidden components ✅

About

FAUST UI metadata to SwiftUI bindings

Topics

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages