#!/usr/bin/env python3 """mk_multi6.py — 6-tone multitone input + rpp clone.""" import wave, numpy as np, re sr=44100; T=4.0; n=int(sr*T); t=np.arange(n)/sr tones=(200.,500.,1000.,2000.,4000.,8000.) ph=np.random.default_rng(51).uniform(0,2*np.pi,len(tones)) A=0.30 # per-tone amplitude (avoid clip: sum ~0.9 worst case) y=sum(A*np.sin(2*np.pi*f*t+p) for f,p in zip(tones,ph)) y=np.clip(y,-0.999,0.999) w=wave.open('/tmp/opencode/multi6_in.wav','wb'); w.setnchannels(1); w.setsampwidth(2); w.setframerate(sr) w.writeframes((y*32767).astype(np.int16).tobytes()); w.close() src=open('/tmp/opencode/t1k_base.rpp').read() # band1 freq will be patched to 500 src=re.sub(r'RENDER_FILE "[^"]*"','RENDER_FILE "/tmp/opencode/multi6_ref.wav"',src) src=src.replace('FILE "/home/m/soothe-bt/tone1k.wav"','FILE "/tmp/opencode/multi6_in.wav"') open('/tmp/opencode/multi6.rpp','w').write(src) print('multi6 ready: tones',tones,'amp',A)