🎻

ObieWebApp

Β· Documentation
Tips Changelog ← All tools

ObieWebApp β€” User Guide

How to use Explore, Convolve, and Acquire to measure, compare, and auralize violin FRFs.

Plot tips & shortcuts For Plotly plot controls, axis range editing, and mouse shortcuts, see the Tips page β†’
Looking for the math? For the signal-processing derivations (H1/H2 estimators, coherence, convolution, band averaging) and binary file format specifications, see the Technical Reference β†’

Contents

πŸ“

Getting Started β€” Data Folder

All three tools are browser-based and run entirely locally β€” nothing is uploaded to any server. They use the File System Access API (Chrome or Edge 86+ required) to read and write files in a folder you choose on your computer.

Select a Data Folder

Before using any tool, click the Data Folder button (on the home page or inside any tool) and select the folder that holds your measurement files. The folder name is remembered between visits. Grant read/write access when the browser asks β€” this allows the tools to load FRF files and save new measurements automatically.

Folder layout expected by the tools Measurement files (AvR, AvC, TRF, CSV) can be anywhere inside the Data Folder. Acquire saves each run into a timestamped sub-folder. Settings files (templates, band presets, lists) are stored in ObieAppSettings/ inside your Data Folder and are loaded automatically on startup.

Supported file formats

ExtensionDescription
.avr / .avcAveraged FRF (real/imaginary columns) β€” main format for Explore and Convolve
.trf / .trvTransfer-function format β€” also supported by Explore and Convolve. Files saved by Acquire include coherence and run metadata.
.csvTwo-column CSV (frequency, magnitude dB) β€” quick import for Convolve
.matMATLAB FRF file (yspec format) β€” loaded by Explore and Convolve. Coherence is shown automatically when present.
.wavAudio file used as the dry signal in Convolve; also storable as a sound snippet in Explore

πŸ”

Explore

PyScript
Open Explore β†’

Explore lets you load multiple FRF files at once, overlay them on a single interactive plot, and compare them with smoothing, normalization, band averaging, and per-dataset convolution playback.

Loading files

Three ways to load FRF files:

  1. Browse β€” opens a file picker; select one or more FRF files directly. Accepts AvR, AvC, TRF, TRV, CSV, and MAT formats.
  2. Search β€” opens the Search modal. Type a filename pattern (comma-separated for OR logic), filter by file type, and load all matching files from your Data Folder with one click.
  3. Drag & drop β€” drag files from your desktop onto the plot area.
Coherence overlay When a file contains coherence data (TRF files saved by Acquire, or MATLAB .mat FRF files), a Ξ³Β² checkbox appears in the plot toolbar. Check it to show the coherence trace for all visible datasets. The trace is drawn in the same colour as the FRF, scaled to occupy the bottom third of the current Y range β€” so it never pushes the FRF out of view. The checkbox is off by default.

Hover tooltip

Hovering over any point on the plot shows: Amp = 18.4 dB   Freq = 443 Hz  (A = 440 Hz). The note name and its exact reference frequency (nearest equal-temperament pitch) are shown automatically whenever the cursor is over an FRF trace.

Plot controls

ControlWhat it does
Y = lin / logToggles the Y axis between linear and dB (log) scale.
↕YAuto-scales the Y axis to the visible X range β€” ignores data outside the current frequency window.
dB range fieldSets the displayed Y range in dB (e.g. 38 dB).
X = log / linToggles the X (frequency) axis between log and linear.
Ξ³Β² checkboxShow or hide coherence traces for all datasets that carry coherence data.
SmoothingApplies fractional-octave smoothing from ΒΌ semitone to one full octave.
NormalizationAs measured, normalize by peak, normalize by average over a custom Hz range, or overlay a Complex average / Real average trace across all visible datasets (see Group averaging below).
πŸ–¨ PrintFar right of the toolbar. Snapshots the current plot and opens it in a new page with an editable title and notes area β€” fill those in, then click Print on that page to send just the labeled plot to your printer.
✨ Ask ClaudeOpens a new Claude.ai chat in another tab with a question started for you, pointing Claude at ObieWebApp's documentation β€” finish typing your question and send it. Nothing is sent automatically.

Dataset list (left panel)

Button / controlWhat it does
CheckboxShow or hide an individual dataset on the plot.
β–Ά (play)Convolves the dataset's FRF with your saved sound snippet and plays it back in real time.
Color swatchClick to change the line color for that dataset.
See All / See NoneShow or hide all datasets at once.
ReduceRemoves datasets that are currently hidden.
Clear AllRemoves all loaded datasets.
UndoRestores the last dataset removed by Reduce or Clear All.

Band averaging

Select a band preset from the Bands dropdown (presets are loaded from ObieAppSettings/bands/ in your Data Folder). The band table shows one column of results per visible dataset β€” average dB level and spectral centroid for each band, in each dataset's colour. Toggle shade to highlight the band regions on the plot. Click Excel to export all datasets' band data as a CSV file.

Group averaging & saving

Set the Normalization dropdown to Complex average or Real average to overlay one averaged trace across all currently visible datasets. Complex average converts each dataset's dB magnitude to linear amplitude before averaging (then back to dB); Real average takes the arithmetic mean of the dB values directly. Complex average is only selectable when at least one visible dataset carries complex/phase data (e.g. loaded from an AvC or a complex TRF).

With one of those modes active, right-click the plot for a πŸ’Ύ Save to Group Averages… option β€” name the average and save it as a CSV or an AvR file into a Group Averages folder created at the root of your Data Folder.

Interpret

Click Interpret to open a reference overlay with two sections:

Other toolbar buttons

ButtonWhat it does
SettingsOpens Explore Preferences (default Y range, X range, line width, sound snippet WAV, output device).
ListsShows predefined file lists stored in your Data Folder β€” useful for quickly loading a curated set of FRFs.
ShareCopies a shareable URL (or file list) to the clipboard so a colleague can open the same set of files.
ColorsSwitches the entire palette (Default, Warm, Cool, High Contrast).
Tip β€” convolution playback Set a sound snippet WAV in Settings (open Settings β†’ Sound snippet β†’ Browse…). This dry audio is then convolved on-the-fly when you press β–Ά on any dataset, letting you audition what the violin "sounds like" given that FRF.

πŸ”€

Convolve

PyScript
Open Convolve β†’

Convolve applies a measured FRF to a dry audio file using full complex frequency-domain convolution: Y(f) = H(f) Β· X(f). The result sounds like the dry signal played through (or by) the measured instrument.

Step-by-step workflow

  1. Load an FRF. Under FRF Files, click Left / Mono FRF and pick an AvR, AvC, TRF, or CSV file. For stereo output, also load a Right FRF; the tool then produces a two-channel result with independent left and right filtering.
  2. Load a WAV. Under Signal (WAV), click Load WAV and select any WAV file (mono or stereo). Use β–Ά Play WAV to confirm the dry signal.
  3. (Optional) Pick an output device. Under Settings, choose where playback should go from the Output device dropdown.
  4. Convolve. Click ⚑ Convolve. The button is enabled only once both an FRF and a WAV are loaded.
  5. Listen and save. Press β–Ά Play Result to audition, then πŸ’Ύ Save to download the convolved WAV to your computer.

The four plots

FRF Β· Magnitude (dB)
  • Shows the loaded FRF on a log-frequency axis.
  • Both L and R channels are drawn if stereo.
Input Β· Spectrogram
  • Time-frequency spectrogram of the dry WAV.
  • Toggle dB / linear amplitude with Spec: dB in the toolbar.
Output Β· Convolved Waveform
  • Time-domain waveform of the convolved result.
  • Useful for checking for clipping.
Output Β· Spectrogram
  • Spectrogram of the convolved result.
  • Compare with the input spectrogram to see the FRF shaping effect.
Technical details Convolution is performed in the frequency domain using a Hann-windowed FFT. The FRF is interpolated onto the audio-sample frequency grid using log-space interpolation. The result is reconstructed with minimum-phase or zero-phase methods as appropriate for the file type.

🎯

Acquire

PyScript
Open Acquire β†’

Acquire turns your laptop and a USB audio interface into an impact-hammer FRF measurement system. It records hammer and microphone signals simultaneously, detects hits automatically, averages multiple hits per position, and saves a TRF per position plus AvR/AvC averages at completion (see What gets saved below).

Hardware setup

  1. Connect your USB audio interface (e.g. Focusrite Scarlett 2i2) before opening the page.
  2. By default, plug the impact hammer into Input 1 (left) and the microphone into Input 2 (right). Enable Swap channels in Template & Settings if your hardware is wired the other way around.
  3. Use Chrome or Edge β€” Safari and Firefox do not support the required audio APIs.

Instrument and test name

Click the 🎻 Instrument button in the toolbar to name the violin or instrument being measured. Acquire creates a folder named after the instrument inside your Data Folder, and automatically numbers successive test runs (Violin_01, Violin_02, …). The floppy-disk icon next to the test name lets you rename the current run β€” the folder on disk is renamed to match.

After loading a template If you load a template but haven't yet named an instrument, Acquire shows a cover asking you to set one before measuring. Without a loaded template you can measure freely in unnamed (scratch) mode.

First-time setup (Template & Settings)

Click Template: in the toolbar to open the Template & Settings dialog and configure:

SettingNotes
Input deviceChoose your audio interface from the dropdown β€” takes effect immediately. You can also click the Device: indicator in the status row at any time for a quick device picker without opening the full dialog.
Ham trigger thresholdVoltage level (V) that triggers a hit. Lower values catch lighter taps; raise it to ignore ambient noise.
Time before / after hitPre- and post-trigger capture window in seconds.
Hammer / Mic time cutoffSignal is zeroed after this time (0.001–5 s) β€” suppresses late reflections. Shown as a green line on the mini plots.
Hammer calibration (N/V)Converts raw voltage to Newtons. Enter the value from your hammer's calibration sheet.
Mic calibration (Pa/V)Converts raw voltage to Pascals. Enter the value from your microphone calibration sheet.
Hits per positionNumber of good hits to average before the app considers a position complete.
Number of positionsTotal positions per prefix group (e.g. 12 gives H01–H12).
Position prefixLabel prepended to position names. Enter a comma-separated list (e.g. H,V) to create multiple groups β€” H,V with 12 positions per group gives H01–H12 then V01–V12.
Swap channelsMoves the hammer trigger to the right input channel (Input 2). Use when the hammer is physically wired to Input 2.

Plot Settings (inside Template & Settings)

The Plot Settings column controls the axis limits for all four plots, each shown as a single X axis range and Y axis range row (min – max):

FieldsControls
FRF X / Y rangeFrequency range (Hz) shown on the main FRF plot, and fixed dB limits for its Y axis. Leave Y blank to use auto-scale (controlled by the dB range field).
Hammer X / Y rangeTime window (s) and voltage range (V) for the Hammer time plot.
Mic X / Y rangeTime window (s) and voltage range (V) for the Microphone time plot.
FFT X / Y rangeFrequency range (Hz) and dB range for the Hammer FFT plot.

These axis limits are saved with your settings and are part of templates β€” loading a template restores all axis ranges.

Agenda checklist

The right-hand info panel starts with an ✨ Ask Claude button, followed by an Agenda checklist above Run Settings. Ask Claude opens a new Claude.ai chat in another tab with a question started for you, pointing Claude at ObieWebApp's documentation β€” finish typing your question and send it (nothing is sent automatically). The Agenda is a step-by-step reminder for the full workflow, grouped into two sections:

GroupSteps
SoundcardPowered, 48v (2 lights); selected (in blue)
SoftwareData folder; name instrument; rename test (if you want); choose template; edit Notes; verify in LiveView; hit Run (if needed); check hammer FFT; check coherence

Click a step to check it off; it strikes through and the state persists across reloads. The whole checklist clears automatically the next time you press β–Ά Start from idle or a completed run, ready for the next one.

Running a measurement

  1. Click πŸ“ Data Folder and select the folder where results should be saved.
  2. Name your instrument via the 🎻 Instrument button.
  3. Click β–Ά Start. The app begins listening for hammer hits.
  4. Strike the instrument. The three mini plots (Hammer FFT, Hammer time, Mic time) update after each hit. Check that the hammer pulse is clean β€” a double-hit shows two bumps in the Hammer time plot.
  5. After the required number of good hits the Position complete dialog appears. Choose Next Position β†’ to advance (the mini plots and current FRF clear for a fresh start) or Repeat to re-do the current position.
  6. Use ↩ Undo Hit to remove a bad last hit, or πŸ—‘ Clear H01 to restart the current position. β†Ί Start over clears all positions.
  7. When all positions are complete, AvR/AvC averages are saved automatically (per prefix group, plus a combined set if you used more than one β€” see What gets saved below) and a Run complete banner appears.
  8. To start the next run on the same instrument, click β–Ά Start again β€” the test name increments automatically (e.g. Violin_01 β†’ Violin_02) and all positions reset.
What gets saved Each position saves one .trf file (updated after every hit, named by its resolved position label, e.g. H03.trf or V07.trf) and one .wav raw capture per hit inside a raw/ sub-folder. TRF files include coherence and run metadata (sample rate, threshold, cutoffs, device name) readable by Explore. At run completion, an .avr (magnitude average) and .avc (complex average) file are written to the instrument folder root for each prefix group, named <run> <group>.avr/.avc β€” e.g. an H,V run named test2_09 with 12 positions per group produces test2_09 H.avr / .avc, test2_09 V.avr / .avc, and a combined test2_09 HV.avr / .avc across all 24 positions.

Reviewing the FRF plot

The main plot shows the current position's FRF building up with each hit, along with a coherence overlay (Ξ³Β², scaled to the bottom third of the Y range). When you advance to the next position the plot clears so you start fresh β€” previous positions are saved on disk and can be loaded in Explore. Use the plot-toolbar controls to toggle log/linear X axis, rescale Y, or adjust the dB range.

Templates

A template stores your complete measurement setup β€” trigger settings, calibration factors, position count, and all plot axis limits. Templates live in ObieAppSettings/Templates/ inside your Data Folder.

  1. Click Template: in the toolbar to open the Template & Settings dialog.
  2. Click a template in the list β€” it applies immediately (fields update right away). An Undo button reverts an accidental click.
  3. The primary button at the bottom reads Use Template when your settings still match the applied template. Editing any field switches it to Update and Use Template, which saves your changes back into that template as well as applying them. With no template applied, it reads Use Settings and applies your changes to this run only.
  4. To save the current settings as a brand-new template, click Create New Template.
  5. Reset Default Templates re-downloads the built-in templates ("HV 24 Obie Rig", "ScratchPad", "Scratchpad Obie 26") without touching your custom ones.
Primary button label tracks unsaved changes If you edit any setting (threshold, cutoffs, axis ranges, etc.) after loading a template, the primary button switches to "Update and Use Template" so it's clear the current settings no longer match the saved template until you save them back into it.

Audio device disconnect

If the USB audio interface is unplugged or interrupted while acquisition is running, Acquire stops immediately and shows an alert. Re-plug the device and click β–Ά Start again. If you change the selected input device in Settings while audio is active, the audio stream restarts automatically on the new device.

Session Notes

Click Notes (next to the Template button) to open the Notes panel and enter free-text observations about the session. Notes save to notes.txt in the instrument's folder and are shown in Explore when you hover that instrument's datasets. The first time you open Notes for an instrument with no existing file, it's pre-filled with a fill-in-the-blanks template (date/time, location, experiment, researchers, instrument info, measurement info) to fill in or delete as needed.

Use πŸ—‘ Delete Notes & Start Again (with a confirmation prompt) to clear the notes and remove notes.txt from disk. πŸ“· Add Photos… attaches one or more image files to the instrument, and πŸ“Έ Camera opens a live preview from your computer's webcam with a Snap button to capture and save a photo directly β€” both save into a photos folder alongside the notes. Saved photos are shown as thumbnails; click one to open the full-size image in a new tab.

LiveView

Click LiveView to open a full-screen view of the FRF plot β€” useful when the laptop is placed at a distance from the instrument during measurement.

Tip β€” adjusting the threshold on the fly You can change the trigger threshold and hammer/mic time cutoffs directly in the mini-plot headers without opening Template & Settings. Edit the number next to V (threshold) or s (cutoff) and press Enter. The purple dotted threshold line and green cutoff line update in real time.

πŸ”’

Technical reference β€” signal processing & file formats

Detailed derivations of the H1/H2 estimators, coherence, band averaging, convolution, and the acoustic wave equation, plus full binary file format specifications: Technical Reference (HTML)  Β·  ObieDocs (original PDF).