Posted Tue Feb 20, 2007 1:59 AM
Posted Tue Feb 20, 2007 2:39 AM
ApolloBoy, on Tue Feb 20, 2007 1:59 AM, said:
Posted Wed Feb 21, 2007 10:45 PM
supercat, on Tue Feb 20, 2007 2:39 AM, said:
Posted Wed Feb 21, 2007 11:45 PM
Bruce Tomlin, on Wed Feb 21, 2007 10:45 PM, said:
supercat, on Tue Feb 20, 2007 2:39 AM, said:
lda framesleft beq no_audio dec framesleft lda aud_ptr_l clc adc #16 sta aud_ptr_l bcc aud_done lda aud_ptr_h adc #7; Really 8 sta aud_ptr_h jmp aud_done no_audio: lda #SILENCE_LEN; Cut the number of cycles for the display list when not doing anything useful sta aud_length lda #SILENCE_TRIG sta aud_trig ; A byte of the trigger address -- nuke this to disable audio output. aud_done:Run that code once per frame. Entirely reasonable.
Quote
Edited by supercat, Wed Feb 21, 2007 11:50 PM.
Posted Thu Feb 22, 2007 5:54 PM
ApolloBoy, on Tue Feb 20, 2007 8:59 AM, said:
Posted Thu Feb 22, 2007 8:03 PM
Schmutzpuppe, on Thu Feb 22, 2007 5:54 PM, said:
Edited by supercat, Thu Feb 22, 2007 8:05 PM.
Posted Mon Feb 26, 2007 6:00 PM
supercat, on Wed Feb 21, 2007 11:45 PM, said:
Posted Mon Feb 26, 2007 7:11 PM
Bruce Tomlin, on Mon Feb 26, 2007 6:00 PM, said:
sta $3FFF; Will trash RAM at $1FFF lsr sta $3FFF lsr sta $3FFF lsr sta $3FFFObviously this approach wouldn't be much good if one had to feed digitized audio data to the PSOC, but it could be entirely practical if using the PSOC as an alternative to the POKEY for music generation (in which case the amount of data required would be reasonably small).
Edited by supercat, Mon Feb 26, 2007 7:49 PM.
Posted Mon Feb 26, 2007 10:43 PM
uint16 phase,freq; uint8 volume; /* 0-127 max */ phase=phase+freq; output = wavetable[phase/256] * volume;using any of up to 48 256-byte wavetables. The arbitrary-loop sound generators would compute:
uint24 waveptr;
uint16 freq,wave_end,wave_loop;
uint8 loop_count,volume;
waveptr = waveptr + freq;
if (waveptr/256 > wave_end)
{
wave_ptr = wave_ptr - 256*(wave_loop);
if (wave_count > 0)
wave_count = wave_count-1;
else
/* Fetch next set of parameters from queue */
}
output = flash[wave_ptr/256] * volume;
Something like that would be pretty straightforward to code, but would be incredibly versatile. How interested would anyone be in such a thing?
Edited by supercat, Mon Feb 26, 2007 10:44 PM.
Posted Wed Feb 28, 2007 3:23 AM
0 members, 1 guests, 0 anonymous users