sample\audiometer\sample_meter.hsp » Plain Format
;============================================================
; hspaudiometer サンプル: リアルタイム音圧 + 8 バンド スペクトラム
;
; Windows の再生音 (システム全体) を WASAPI ループバックで取得し、
; 1 秒間のピーク / RMS / dBFS と 8 バンド周波数分布を表示。
;============================================================
#include "hsp3cl_net_64.as"
#include "hspaudiometer.as"
sm_open
if stat < 0 {
dialog "hspaudiometer open failed (stat=" + stat + ")"
end 1
}
dim sr, 1
sm_get_sample_rate sr
mes "WASAPI loopback ready (sample rate = " + sr(0) + " Hz)"
mes "音楽や動画を再生しながらこのプログラムを動かしてください..."
mes "Ctrl+C で終了"
mes ""
sdim band_names, 16, 8
band_names(0) = "SubLo" : band_names(1) = "Low" : band_names(2) = "MidLo"
band_names(3) = "Mid" : band_names(4) = "MidHi" : band_names(5) = "High"
band_names(6) = "Super" : band_names(7) = "Ultra"
repeat 60 ; 60 x 200ms = 12 sec 計測
await 200
sm_poll
ddim rms, 1 : ddim peak, 1 : ddim dbfs, 1
sm_get_rms rms
sm_get_peak peak
sm_get_dbfs dbfs
sdim bar, 128
bar = ""
n = int(peak(0) * 40)
if n > 40 : n = 40
repeat n : bar += "=" : loop
mes strf(" %4.1fdB peak=%.3f %s", dbfs(0), peak(0), bar)
; バンドメーター (改行して並べる)
sdim bline, 256
bline = " "
repeat 8
ddim b, 1
sm_get_band cnt, b
bn = int(b(0) * 1500)
if bn > 10 : bn = 10
sdim bb, 16
bb = ""
repeat bn : bb += "|" : loop
bline += strf(" %s=%-10s", band_names(cnt), bb)
loop
mes bline
loop
sm_close
end 0