Audio: implement NOTE->PITCH + control pitch -- the AL_PITCH was never applied (task #50)
The whole pitch system existed but was discarded: NoteAudioHandler captured the
MIDI note, ExecuteModel computed relativePitch from the control-chain cents --
and NOTHING ever called alSourcef(AL_PITCH). Every sample played at root.
Consequences fixed:
- The load-time 'chirping' ambience: an authored looped sequence (div=120
tempo=160, note 51 events on bank1:83) plays a rhythmic tick pitched ~9
semitones DOWN; at root it was a high click ('chirp'). Identified live via
the new BT_AUDIO_DUMP playing-source tape + user ear-match at cadence.
- Engine now revs: EngineMotor pitch rides the throttle (measured 1.0 -> 1.12).
- All sequence-authored patterns (alarms/klaxons/ambience) regain their pitch.
Implementation: BTNotePitchFactor(note) = 2^((note-60)/12); applied at all 3
patch-source StartImplementations (fresh attach) and all 3 ExecuteModels
(combined with the control-chain relativePitch, clamped 0.5..2.0 as before).
Uses the existing AudioSource::GetCurrentNoteValue().
Also: [seqcfg] sequence-config dump, g_bufferNames + BT_AUDIO_DUMP live tape
(1/s: every playing AL source with sample name/gain/pitch/loop),
tools/soundboard.py updated mapping.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
e017f257a5
commit
37d4554440
@@ -21,6 +21,7 @@
|
||||
|
||||
ALuint *g_buffers;
|
||||
int g_numBuffers;
|
||||
const char *g_bufferNames[512]; // bufferInd -> sample file (diag: the live-playing dump)
|
||||
int g_curAudioWatcherClass = 0;
|
||||
|
||||
//
|
||||
@@ -671,6 +672,7 @@ void
|
||||
|
||||
//Feed the buffer with the real PCM sample data
|
||||
alBufferData(g_buffers[bufferInd], format, data, size, wavRate);
|
||||
if (bufferInd < 512) g_bufferNames[bufferInd] = info.file;
|
||||
if (getenv("BT_AUDIO_LOG") && bufferInd < 3)
|
||||
DEBUG_STREAM << "[audio] loaded buf" << bufferInd << " " << info.file
|
||||
<< " ch=" << wavCh << " bits=" << wavBits << " rate=" << wavRate
|
||||
|
||||
Reference in New Issue
Block a user