% Render a triangle roll with default parameters and print diagnostics. % Set P.strike_count = 1 for a single strike. % Run with: numbl run triangle_demo.m P = triangle_defaults(); tic; [y, basis, dinfo] = triangle_render(P); elapsed = toc; fprintf('modes kept : %d (%d in-plane, %d out-of-plane)\n', basis.n, dinfo.modesIn, dinfo.modesOut); fprintf('mode freq : '); fprintf('%.0f ', basis.f); fprintf('Hz\n'); fprintf('strikes : %d at %.1f Hz (mean v %.2f m/s, mean contact %.0f us, peak force %.0f N)\n', ... dinfo.strikeCount, P.strike_rate_hz, dinfo.meanV, dinfo.meanTauUs, dinfo.peakForceN); fprintf('peak press.: %.4f Pa (%.1f dB SPL) at %.0f cm\n', ... dinfo.peakPa, dinfo.peakSplDb, dinfo.listenerDistM * 100); fprintf('length : %.2f s @ %d Hz\n', length(y) / P.sample_rate, P.sample_rate); fprintf('render time: %.2f s\n', elapsed); if dinfo.listenerInside fprintf('WARNING : listener is at or inside the rod\n'); end