From 77c02c8f9da007d17785bd015c0638efc17e3376 Mon Sep 17 00:00:00 2001 From: Matiq Date: Tue, 25 Aug 2026 11:39:10 +0300 Subject: [PATCH] 24mm: distance series captured (cuts depend on 2nd-tone distance, confirming local mixing); w(d) inversion needs cleaner methodology (peak-window/domain issues documented); raw data preserved --- handoff/NOTES_LEVEL.md | 25 +++++++++++++++++++++++++ scripts/mk_dist.py | 18 ++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 scripts/mk_dist.py diff --git a/handoff/NOTES_LEVEL.md b/handoff/NOTES_LEVEL.md index 25b3840..3c6ca72 100644 --- a/handoff/NOTES_LEVEL.md +++ b/handoff/NOTES_LEVEL.md @@ -3722,3 +3722,28 @@ dual (+тон@2000, близко) 8.550 9.93 3.09 ← удвоение ✓ q не влияет; ✓ sens через lvl; ✓ далёкий контент не влияет □ двухтональная дистанционная серия (w-ядро): d∈{1500,750,400,200}Гц □ декод ядра из шагов 9–19 (IIR1/2 коэф. уже известны!) + +## ============ ДОПОЛНЕНИЕ 24mm: дистанционная серия снята; инверсия w(d) требует чистой методики ============ + +### Сырые данные (deepest scratch, fc500 q0.5 s12, тоны 500+(500+d) равные): +``` +d_Hz cut@43 дБ (одиночный тон@500: 3.77-3.90) +200 3.43 +400 3.82 +750 4.11 +1500 4.23 +dual(1500,другой вход) 5.55(shallow) +``` +Кат@центра ЗАВИСИТ от дистанции второго тона (3.43→4.23 растёт с d в этой +серии!) — подтверждение локального смешения, но форма не монотонно-простая +(на малых d второй тон ВНУТРИ окна «собственного» пика и делит энергию). + +### Инверсия w(d) не сошлась (отрицательные/шумные значения): +причины: (а) окно собственного пика захватывает чужие бины при малых d; +(б) домен закона (shallow/deep) смешан; (в) дробные позиции тонов. +Нужна чистая постановка: пик-детекция по обеим тонам отдельно, инверсия +в ОДНОМ согласованном домене, контроль амплитуд. + +### Данные сохранены: sc_d{200,400,750,1500}, tract_d*, d*_ref.wav. +Следующий раунд: чистая методика w(d) → ядро смешения → α_eff(контент) +→ полный корпус. diff --git a/scripts/mk_dist.py b/scripts/mk_dist.py new file mode 100644 index 0000000..c2003e3 --- /dev/null +++ b/scripts/mk_dist.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python3 +"""mk_dist.py — two-tone spacing series: 500Hz + (500+d)Hz, equal amps.""" +import wave, numpy as np +sr=44100; T=4.0; n=int(sr*T); t=np.arange(n)/sr +ph=np.random.default_rng(31).uniform(0,2*np.pi,4) +for d_hz in (200,400,750,1500): + nm='d%d'%d_hz + A=0.4248 + y=A*np.sin(2*np.pi*500*t+ph[0])+A*np.sin(2*np.pi*(500+d_hz)*t+ph[1]) + y=np.clip(y,-0.999,0.999) + w=wave.open('/tmp/opencode/%s_in.wav'%nm,'wb'); w.setnchannels(1); w.setsampwidth(2); w.setframerate(sr) + w.writeframes((y*32767).astype(np.int16).tobytes()); w.close() + import re + src=open('/tmp/opencode/f0.rpp').read() + src=re.sub(r'RENDER_FILE "[^"]*"','RENDER_FILE "/tmp/opencode/%s_ref.wav"'%nm,src) + src=src.replace('FILE "/tmp/opencode/f0_in.wav"','FILE "/tmp/opencode/%s_in.wav"'%nm) + open('/tmp/opencode/%s.rpp'%nm,'w').write(src) +print('distance series ready')