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.
- ✅ JSON-driven layout
- ✅ Live binding via
@ObservedObject
with aFaustUIViewModel
- ✅ 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
let jsonData: Data = ... // Faust UI JSON from libfaust
let ui = try JSONDecoder().decode([FaustUI].self, from: jsonData)
FaustUIView(ui: ui, viewModel: FaustUIViewModel())
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 | ✅ |
Style | Description | Implemented |
---|---|---|
knob |
Rotary knob | ✅ |
menu{...} |
Dropdown menu | ❌ |
radio{...} |
Radio button menu | ❌ |
led |
LED-style output | ❌ |
numerical |
Numerical value display | ❌ |
Key | Description | Implemented |
---|---|---|
style |
Widget style | ✅ |
unit |
Display value unit | ❌ |
scale |
Value scaling | ❌ |
tooltip |
Tooltip | ❌ |
hidden |
Hidden components | ✅ |