summaryrefslogtreecommitdiffstats
path: root/Graphic_Equalizer/src/audio.hcc
diff options
context:
space:
mode:
Diffstat (limited to 'Graphic_Equalizer/src/audio.hcc')
-rw-r--r--Graphic_Equalizer/src/audio.hcc65
1 files changed, 59 insertions, 6 deletions
diff --git a/Graphic_Equalizer/src/audio.hcc b/Graphic_Equalizer/src/audio.hcc
index 8722ce7..22470cf 100644
--- a/Graphic_Equalizer/src/audio.hcc
+++ b/Graphic_Equalizer/src/audio.hcc
@@ -158,11 +158,13 @@ macro proc audio_main(audiodata, AUDIOIN, AUDIOOUT)
displayptr4 = &audiodata.ifft_info.write[192];
FFT_Sync=0;
+
+ audiodata.player_state = PLAYER_DISABLED;
par
{
run_fft(audiodata);
- sample_audio(audiodata, AUDIOOIN);
- output_audio(AUDIOOOUT);
+ sample_audio(audiodata, AUDIOIN);
+ output_audio(AUDIOOUT);
}//end par
} /* --- audio_main() --- */
#endif
@@ -230,7 +232,7 @@ macro proc run_fft(audiodata)
* /return Never Returns.
* /retval void
*/
-macro proc sample_audio(audiodata, AUDIOOIN)
+macro proc sample_audio(audiodata, AUDIOIN)
{
macro expr IW = PalAudioInGetMaxDataWidthCT();
signed IW LeftNew, RightNew;
@@ -239,12 +241,13 @@ macro proc sample_audio(audiodata, AUDIOOIN)
unsigned 8 not_saturated;
unsigned 6 sample_count;
unsigned 2 saturation;
+ unsigned 2 track_index;
unsigned 1 result;
par {
while (TRUE)
{
- if (FFT_Sync && audiodata.play) //if 64 samples are read from ...
+ /* if (FFT_Sync && audiodata.play) //if 64 samples are read from ...
{
result = load_audio_samples(audioptr_in1, blockcount, WINDOW_SIZE);
if (result) {
@@ -257,6 +260,53 @@ macro proc sample_audio(audiodata, AUDIOOIN)
{
delay;
}
+*/
+ switch (audiodata.player_state) {
+ case PLAYING:
+ if (FFT_Sync) { //if 64 samples can be processed again
+ result = load_audio_samples(audioptr_in1, blockcount, WINDOW_SIZE);
+ if (result) {
+ if(audiodata.player_mode) {
+ blockcount = 0;
+ } else {
+ audiodata.player_state = NEXT_TRACK;
+ }
+ } else {
+ blockcount++;
+ }
+ } else {
+ delay;
+ }
+ break;
+ case STOPPED:
+ blockcount = 0;
+ break;
+ case NEXT_TRACK:
+ if(track_index == NUMBER_OF_TRACKS-1) {
+ track_index = 0;
+ } else {
+ track_index++;
+ }
+ blockcount = 0;
+ change_track(track_index);
+ audiodata.player_state = PLAYING;
+ break;
+ case PREV_TRACK:
+ if(track_index == 0) {
+ track_index = NUMBER_OF_TRACKS-1;
+ } else {
+ track_index--;
+ }
+ blockcount = 0;
+ change_track(track_index);
+ audiodata.player_state = PLAYING;
+ break;
+ case PAUSED: // fall through
+ default: //PLAYER_DISABLED
+ delay;
+ break;
+ }
+
}
while (TRUE)//store the samples in the inputbuffer
{
@@ -268,7 +318,7 @@ macro proc sample_audio(audiodata, AUDIOOIN)
{
PalAudioInRead(AUDIOIN, &LeftNew, &RightNew);
- if (!audiodata.play)
+ if (audiodata.player_state == PLAYER_DISABLED)
{
#if HARDWARE_MULTIPLY
audioptr_in1[sample_count] = LeftNew;
@@ -292,6 +342,9 @@ macro proc sample_audio(audiodata, AUDIOOIN)
}
}
}
+ if ((audiodata.player_state == STOPPED) || (audiodata.player_state == PAUSED))
+ audioptr_in1[sample_count] = 0;
+
sample_count++;
if (!sample_count)
{
@@ -300,7 +353,7 @@ macro proc sample_audio(audiodata, AUDIOOIN)
}
seq
{
- Output_sample = audioptr_out2[sample_count];
+ Output_sample = audioptr_out2[sample_count];
}
}
}