Ongenet
On this page

Main window layout & controls

A tour of Ongenet's main window — every region, what each control does, and the complete list of keyboard shortcuts. This is a user-facing reference, but it points at the source files for each region so developers can find their way around too.

The whole UI is the shared Avalonia library Ongenet.App. The main window itself is Views/Windows/MainWindow.axaml, composed by ViewModels/MainViewModel.cs.

Accessibility

Core regions expose Avalonia AutomationProperties names and help text for screen readers:

  • Transport — Play, Stop, Record, tempo, export, metronome, master volume
  • Timeline — arrangement landmark and track lanes
  • Mixer — channel strips and routing controls
  • Settings — tabbed preferences (Audio, MIDI, Control Surface, Theme, Library)

Use keyboard focus and the shortcuts below for mouse-free operation.


The big picture

Ongenet uses custom window chrome (its own title bar, themed with Catppuccin — see theming.md) and a five-region layout:

┌───────────────────────────────────────────────────────────────────────┐
│  Title bar:  Ongenet  New Open Save SaveAs  Undo Redo  History Logs ⚙  │
├───────────────────────────────────────────────────────────────────────┤
│  Transport bar:  ▶ ■ ●  [ ]  tempo  bars  time-sig   master meter      │
├──────────────┬──────────────────────────────────────────┬─────────────┤
│              │                                            │  R          │
│  Track       │            Timeline / arrange              │  i  Library │
│  inspector   │       (ruler, track headers, clips)        │  g  sidebar │
│  (left)      │                                            │  h  (right) │
│              │                                            │  t          │
├──────────────┴──────────────────────────────────────────┤  tabs       │
│  Bottom: [ Instrument/Sample | Pattern | Piano Roll | Clip | MIDI FX | Effects | Video ]
└───────────────────────────────────────────────────────────────────────┘
Centre tabs also include Arrangement, Mixer, Session, Notation, Video, and Scripting.

Each side region can be collapsed:

  • Left (track inspector) — toggle with the ◂ / ▸ button.
  • Right (library) — toggle with the ▸ / ◂ button. It starts collapsed to just its tab strip; click a tab to open it.
  • Bottom (editors) — toggle with the ▾ / ▴ button.

Drag the 4px splitters between regions to resize them. Collapse logic lives in MainWindow.axaml.cs.


1. Title bar

The top strip (custom-drawn, so it looks the same on every OS; macOS gets native "traffic light" buttons). Left to right:

Control Action
Ongenet + version App name and current version number
New Start a new project
Open Open a .ongen project file
Save / Save As Save the project
↶ Undo / ↷ Redo Step through edit history (greyed out when nothing to undo/redo)
History Open the undo-stack browser (HistoryWindow)
Logs Open the debug log viewer (LogWindow)
Settings Open Settings (Audio / MIDI / Theme / Library)
window buttons Minimise / maximise / close

A busy indicator appears here during long save/load operations. Double-click the title bar to maximise/restore.


2. Transport bar

The playback control strip (Views/Panels/TransportView.axaml, ViewModels/TransportViewModel.cs):

Control What it does
Play Start playback from the start marker
Stop Stop playback; if recording, stop and commit the take
Record One-bar metronome count-in, then record into armed tracks
Playhead time Current playback position (updates ~10×/sec while playing)
Total time Length of the arrangement
Slice toggle Switch the timeline/piano-roll into "slice" (cut) edit mode
[ / ] Set the loop start / loop end to the current start marker
Loop indicator A green dot lights when looping is active
Tempo Project BPM (editor allows 1–999; Tap tempo clamps to 20–300)
Tap Set project BPM from your tap rhythm
Bars Arrangement length in bars
Time signature Numerator + denominator (denominators 1/2/4/8/16)
Master meter + fader Live stereo output level meter and master volume slider
Metronome (Click) Toggle audible click during playback (independent of record count-in)
Cap MIDI Retrospective capture of buffered notes into a new clip
MIDI export Export all instrument-track MIDI from the arrangement to a Standard MIDI File
Render progress Progress bar while an offline export/bounce is running (start exports from Export ▾)

During record, a one-bar metronome count-in still runs before capture begins. The Click toggle is for everyday playback practice. Audio/MIDI device pickers live in Settings → Audio / MIDI, not on the transport.


3. Track inspector (left panel)

Settings for the currently selected track (Views/Panels/TrackInspectorView.axaml). When nothing is selected it shows "Select a track to edit its settings." When a track is selected:

  • Name — rename the track.
  • Mute / Solo — silence this track, or solo it.
  • Volume — track level (0–100%, with a readout).
  • Pan — left/right placement (−1…1).
  • Colour — pick the track's colour (used in the timeline).

This is the main place you set per-track volume and pan. Right-click the volume or pan control to MIDI-learn it (move a knob on your controller to bind it).


4. Timeline / arrange view (centre)

The main editing surface where you lay out clips over time (Views/Panels/TimelineView.axaml, TimelineView.axaml.cs). Regions:

  • Bar ruler (top) — bar numbers. Click it to set the start marker (a green triangle / grey line marking where playback begins).
  • Track headers (left, per track) — track name, colour rail, a collapse chevron, M (mute), S (solo), (record arm), and a live level meter. Right-click for a menu: group, duplicate, delete, add instrument/audio track.
  • Lane area (centre) — the clips themselves on each track, plus automation curves on automation lanes.
  • Overlays — the green playhead line, the start marker, a sky-blue loop region band when looping, and a rubber-band selection rectangle.

Clip interactions (mouse):

Action Result
Click a clip Select it
Drag a clip body Move it (snapped to the grid)
Drag a clip's left/right edge Resize / trim it
Double-click an empty instrument lane Create a new MIDI clip
Ctrl+click a clip (or use Slice mode) Slice the clip at that point
Right-click a clip Menu: Rename, Duplicate, Make unique (when shared), Reverse (audio), Delete
Drag from the ruler / empty lane Rubber-band select multiple clips
Middle-drag Zoom (vertical) and pan (horizontal)
Drag audio from the library Drop onto a lane, or create a new track
Drag a track header Reorder / group tracks
Ctrl+click a track header Add/remove it from a multi-selection (for grouping)

Audio clips show a waveform with fade handles; MIDI clips show a mini note preview.


5. Video editing mode

Selecting the centre Video tab switches the workspace into video editing mode (when Settings → General → Enable video features is on and the project has video enabled). Three regions work together:

Region View Role
Left VideoResourcesView Project bin: reference tracks, overlays, triggers, linked clips
Centre VideoTrackView Program monitor — large preview, browse, mute, live preview, pop-out
Bottom VideoTimelineView Beat-synced lanes, reference blocks, trigger markers, inspector

Leaving the Video tab restores the usual left sidebar (Track Controls / Project Clips / Channel Rack) and your previous bottom tab.

Enable prompt

Projects start with video off. The centre tab shows Enable video for this project until you click Enable video.

Program monitor (centre)

Track picker, Browse…, Muted, Live preview, Pop out, and status. Overlay drag/resize works directly on the preview canvas; selection syncs with Resources and the bottom timeline.

Resources (left)

Toolbar: + Track, + Overlay, + Trigger, delete. Tree sections list all video objects. Double-click a linked clip to seek the arrangement to that clip's start.

Video timeline (bottom · Video tab)

Reference lane (blue blocks), one overlay row per layer, diamond trigger markers on clip beats, shared ruler zoom/scroll with the arrangement timeline. Scrub the ruler to seek transport. Inspector below edits sync-to-clip, overlay kind, and trigger moment/action/target.

See video-and-composition guide for export and ffmpeg setup.


6. Piano roll (bottom panel · "Piano Roll" tab)

The MIDI note editor for the selected MIDI clip (Views/Panels/PianoRollView.axaml):

  • Toolbar — Import MIDI, Export MIDI, a melody/chord Generator, Quantize and Groove, an Expression lane toggle (MPE), the Edit / Select / Slice tools, and Arpeggio.
  • Key gutter (left) — a vertical piano keyboard; click a key to audition that pitch.
  • Grid — draw and edit notes.

Tools (these share the same slice mode as the timeline):

  • Edit — click an empty spot to draw a note; drag a note to move it; drag its edge to resize.
  • Select — rubber-band to select multiple notes for bulk edits.
  • Slice — drag a cut line to split notes.

Mouse extras: right-click a note to delete it; middle-drag to zoom/pan. The Generator and Arpeggio buttons open helper windows (MidiGeneratorWindow, ArpeggioWindow).


7. The "mixer" — where mixing actually lives

There is a dedicated Mixer centre tab with channel strips, sends, meters, per-track input monitoring (Off/Auto/On on audio tracks), and an editable Routing Matrix window for bus and multi-out routing. MIDI and Pattern tracks stay on the timeline only — they are not shown as mixer strips. Mixing is also available from:

Where What you control
Track inspector (left) Volume, pan, mute, solo for the selected track
Timeline track headers M / S / record-arm and a live meter per track
Transport bar Master output meter and master volume fader
Effects tab (bottom) The track's post effect chain
Instrument slot (bottom) Each instrument's pre effect chain
Group / bus tracks Tracks route into group buses (and the master); set a track's parent to build the bus tree

The actual mixing math is in Ongenet.Core/Audio/Mixing.cs and the engine; the routing model (tracks → group buses → master) is explained in audio-engine.md.

Instrument rack (track inspector)

On instrument tracks, the left Track Controls inspector includes an Instrument rack section: eight macro knobs and an optional drum pad grid (16 pads with MIDI note triggers). Switch between standard rack and drum grid from the rack kind dropdown.

Hybrid tracks

Add Hybrid Track (timeline context menu) creates a lane that accepts both audio and MIDI clips — session/arrangement hybrid workflows without duplicating tracks.

Specialist windows (View menu)

Window Purpose
Tempo Map Master tempo automation
Section Playlist Ordered arrangement-marker playback with reorder/duplicate
Chord Track Global harmony regions applied to MIDI clips
Expression Maps VST expression / keyswitch articulation maps
Audio Editor Edison-class multitrack sample editor — clip list + shared waveform tools (audio-editor.md)
Pitch Editor Polyphonic note-segment pitch correction on audio clips (timeline → Open Pitch Editor)
Scripts Scripting centre tab — in-app C# IDE with syntax highlighting and IntelliSense (scripting.md)

Settings → General → Plugins → Run VST3 plugins in an isolated process enables optional VST3 effect crash isolation via Ongenet.PluginHost (plugin-isolation.md).

Export → ADM BWF (when surround is 5.1/7.1) exports ITU-R BS.2076 immersive handoff. AAF/OMF handoff exports structured XML for post houses.


8. Library / browser (right panel)

A collapsible sidebar with vertical tabs. Click a tab to open it; the panel starts collapsed to just the tab strip. Tabs:

Tab Shows
Everything A combined view of all library content
Files An OS folder browser
Samples Your sample library
Soundfonts SFZ / SF2 instruments
Instruments Built-in (and plugin) instruments
Effects Built-in (and plugin) effects
Inst Presets / FX Presets / FX Chains Saved presets and effect-chain presets

Below the list sits a preview panel (audition samples with a waveform) and, on the sample/file tabs, library options (auto-stretch to project tempo, pitch correction). Library items are draggable straight onto the timeline — drop an instrument to add it to a track's rack, or a sample onto an audio lane. Configure which folders are scanned in Settings → Library.


9. Inspectors (bottom panel)

The bottom panel is a tabbed editor that changes with what you've selected (ViewModels/BottomPanelViewModel.cs):

Tab Shows When
Instrument / Sample The instrument rack, or the selected audio clip's settings Instrument tracks (header switches to "Sample" when an audio clip is selected)
Pattern Pattern / step editor Pattern tracks and pattern clips
Piano Roll The MIDI note editor Auto-selected when you pick a MIDI clip
Clip Clip inspector (audio/MIDI clip properties) When a clip is selected
MIDI FX MIDI effect chain Instrument / MIDI tracks
Effects The track's effect chain Always (often the only tab for bus tracks)
Video Beat-synced video timeline When video features are enabled

The panel switches tabs automatically: select a MIDI clip and it jumps to Piano Roll; an audio clip to Sample; a bus typically shows Effects.

Instrument inspector (InstrumentInspectorView): an "+ Add instrument" menu (grouped by category), a rack of instrument-slot cards, and a shared mini keyboard. Each slot card has an enable dot, a preset picker, sample/SFZ loaders (for samplers), a "open plugin UI" button (for plugins), the parameter knobs, and a per-instrument pre-effect chain.

Effects inspector (EffectsViewEffectChainView): the track's chain of effects. Add effects from a categorised menu or by dragging from the library; each effect has a bypass toggle, a reorder handle, an order badge, and a "save preset" button.

Sample inspector (SampleInspectorView): shown when an audio clip is selected. Includes a tempo-aware waveform editor with bar/beat grid and ruler labels, a hover cursor line (with bar/time readout in the toolbar), and snap-to-beat for pointer edits (toggle Snap in the toolbar to disable). Middle-mouse drag zooms vertically and pans horizontally (same gesture as the timeline); a horizontal scrollbar appears when zoomed in. A Play / Stop button auditions the sample through the output device without engaging the transport (plays the selection when one exists, otherwise the whole sample); a red playhead line tracks audition progress in the waveform. Draggable trim handles (destructive crop on release), click-drag selection, segment move (drag inside a selection), and Cut / Copy / Paste / Delete toolbar buttons. When a time range is selected, a region edit strip offers gain (−24…+24 dB), pan (stereo), Swap L/R, and Reverse controls that apply only to the selected frames (gain/pan commit when you release the knob after dragging; buttons apply immediately). When multiple timeline clips share the same PCM buffer, a yellow banner warns that edits affect all instances — use Make unique on a clip (timeline context menu) to detach one instance. Tempo controls: natural BPM, stretch-to-project-tempo, and preserve-pitch. Detect key analyses the sample chromagram; Re-detect tempo runs filename/onset tempo detection into the natural BPM field. Change key pitch-shifts the selected sample to a user-chosen target key; entries marked are musically related or low-shift options that tend to sound smoother. Transposition moves by semitones only — it does not convert major ↔ minor harmony, so re-detect may report a different mode than the label. Keyboard shortcuts (when the Sample panel has focus): Ctrl+X/C/V cut/copy/paste, Delete removes the selection.

Parameter knobs (Knob) appear throughout. Right-click any knob, slider or switch to MIDI-learn it or create an automation track for it.


10. Settings & secondary windows

Opened from the title bar (or the piano roll):

Window Purpose
Guide Built-in help topics (title bar Guide button)
Settings Audio device, MIDI devices/mappings, Theme editor, Library folders, Enable video features
History Browse and jump around the undo stack
Logs Debug log viewer
MIDI Generator Generate chords/melodies into a clip
Arpeggio Arpeggiate the selected notes
Plugin Host a native plugin's own GUI

11. Keyboard shortcuts (complete list)

Ongenet's shortcuts are defined in C# handlers (not XAML key bindings). Below is the full set.

Global (anywhere except while typing in a text box)

Defined in MainWindow.axaml.cs.

Shortcut Action
Ctrl + N New project
Ctrl + O Open project
Ctrl + S Save project
Ctrl + Shift + S Save As
Ctrl + Z Undo
Ctrl + Shift + Z Redo
Ctrl + Y Redo (alternative)
Ctrl + Shift + I Ripple insert time at playhead (one bar)
Ctrl + Shift + Backspace Ripple delete time at playhead (one bar)
Ctrl + Alt + T Open tempo map window
Ctrl + Alt + L Open section playlist window
Space Play / stop toggle
Shift + [ Set loop start to the start marker
Shift + ] Set loop end to the start marker
F8 Toggle Avalonia renderer diagnostics (FPS / render & layout graphs)
View → Tempo Map Edit master tempo automation (also Ctrl + Alt + T)
View → Section Playlist Ordered section playback from arrangement markers (also Ctrl + Alt + L)
Edit → Ripple edit Toggle ripple mode for clip edits (when enabled in edit menu)
Export ▾ → Pull from collaboration folder Import the project copy from the sync folder
Transport → Cap MIDI Retrospective capture of buffered notes into a new clip

Custom transport/key mappings can be configured in Settings → MIDI (TransportMappings in app settings).

Set the environment variable ONGENET_FPS=1 to auto-enable the F8 diagnostics overlay at startup. (Avalonia DevTools — the visual-tree inspector — is F12 in Debug builds; see DEVELOPMENT.md.)

Custom bindings for ripple edit, tempo map, and section playlist can be reset to defaults in Settings → MIDI → Keyboard shortcuts. Overrides are stored in the app settings file.

Collaboration (Export menu)

Action Description
Sync to collaboration folder Export the saved project + share manifest to the configured sync folder
Pull from collaboration folder Load the shared project from the sync folder; prompts if you have unsaved local changes

Arrangement tools (View menu)

Menu item Shortcut Description
Tempo Map Ctrl + Alt + T Edit master tempo automation
Section Playlist Ctrl + Alt + L Arrange and play back song sections

Ripple insert/delete shift all clips at/after the playhead by one bar. Use Ctrl + Shift + I / Ctrl + Shift + Backspace, or the timeline context commands.

Timeline (when the timeline has focus — click a lane first)

Shortcut Action
Delete Delete the selected clip(s)
Ctrl + D Duplicate the selected clip

Piano roll (when the piano roll has focus)

Shortcut Action
Delete Delete the selected note(s)

Typing keyboard (play notes from your computer keys)

When the selected track is an instrument track (and you're not typing in a text box), unmodified keys play notes, FL-Studio style — NoteOn on key down, NoteOff on release. The map lives in Input/ComputerKeyboard.cs; base note is middle C (60):

  • Lower row (from C4): Z S X D C V G B H N J M , L . ; / — semitones 0–16
  • Upper row (from C5): Q 2 W 3 E R 5 T 6 Y 7 U I 9 O 0 P [ + ] — semitones 12–31

Holding Ctrl/Shift/Alt with these keys never triggers a note, so they never clash with shortcuts like Ctrl+D or Shift+[.

Mouse modifiers (not keys, but handy to know)

Input Where Action
Ctrl + click Timeline track header Toggle the track in a multi-selection
Ctrl + click Timeline clip Slice the clip at the grid
Middle-drag Timeline / piano roll Zoom and pan

On the web build

The WebAssembly demo supports Space (play/stop), the typing keyboard, and Ctrl/Cmd+N/O/S plus Ctrl/Cmd+Z/Y (new/open/save and undo/redo). Loop/delete and other desktop-only shortcuts are still not wired in the single-view shell.


Source-file quick reference

Ongenet.App/Views/Windows/MainWindow.axaml(.cs)   — overall layout, panel collapse, global shortcuts
Ongenet.App/ViewModels/MainViewModel.cs           — composes all panel view models
Ongenet.App/Views/Panels/TransportView.axaml      — transport bar
Ongenet.App/Views/Panels/TimelineView.axaml(.cs)  — arrange view + timeline shortcuts
Ongenet.App/Views/Panels/PianoRollView.axaml(.cs) — piano roll + its shortcuts
Ongenet.App/Views/Panels/TrackInspectorView.axaml — left inspector
Ongenet.App/Views/Panels/InstrumentInspectorView.axaml / InstrumentSlotView.axaml
Ongenet.App/Views/Panels/EffectsView.axaml / EffectChainView.axaml
Ongenet.App/Views/Panels/LibraryListView.axaml / FileBrowserView.axaml / PreviewPanelView.axaml
Ongenet.App/ViewModels/BottomPanelViewModel.cs    — bottom-tab switching logic
Ongenet.App/Input/ComputerKeyboard.cs             — typing-keyboard note map
Ongenet.App/Controls/                             — the custom DAW controls (knob, meters, waveform, …)

Where to go next