% Render a maraca shake with default parameters and print diagnostics. % Run with: numbl run maraca_demo.m P = maraca_defaults(); tic; [y, basis, dinfo] = maraca_render(P); elapsed = toc; fprintf('modes kept : %d\n', basis.n); fprintf('mode l : '); fprintf('%d ', basis.l); fprintf('\nmode freq : '); fprintf('%.0f ', basis.f); fprintf('Hz\n'); fprintf('breathing : %.0f Hz (dry %.0f Hz, cavity shift %+.1f Hz)\n', ... dinfo.breathingHz, dinfo.breathingDryHz, dinfo.breathingHz - dinfo.breathingDryHz); fprintf('grains : %d, %.2f bounces each per stroke\n', P.grain_count, P.bounces_per_grain); fprintf('impacts : %d (mean v %.2f m/s, max %.2f; mean contact %.0f us)\n', ... dinfo.impactCount, dinfo.meanV, dinfo.maxV, dinfo.meanTauUs); fprintf('peak press.: %.3f 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 inside/at the shell surface\n'); end