aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2016-02-07 06:16:45 +0300
committerWohlstand <admin@wohlnet.ru>2016-02-07 06:16:45 +0300
commit26f5342bb8227f73dbee833f4fbe1cece97154a2 (patch)
tree2425e63736c298bbf25fab079aa0bda6801585f5 /src
parentb5dedb86bf2bac931706764171623ee17b06c1f0 (diff)
downloadlibADLMIDI-26f5342bb8227f73dbee833f4fbe1cece97154a2.tar.gz
libADLMIDI-26f5342bb8227f73dbee833f4fbe1cece97154a2.tar.bz2
libADLMIDI-26f5342bb8227f73dbee833f4fbe1cece97154a2.zip
Taking generated audio also via pointer
Not only via callback funtion pointer
Diffstat (limited to 'src')
-rw-r--r--src/dbopl.cpp13
-rw-r--r--src/dbopl.h3
2 files changed, 14 insertions, 2 deletions
diff --git a/src/dbopl.cpp b/src/dbopl.cpp
index 54df48c..809d394 100644
--- a/src/dbopl.cpp
+++ b/src/dbopl.cpp
@@ -1551,10 +1551,21 @@ void Handler::Generate( void(*AddSamples_m32)(Bitu,Bit32s*),
AddSamples_m32( samples, buffer );
} else {
chip.GenerateBlock3( samples, buffer );
- AddSamples_s32( samples, buffer );
+ AddSamples_s32( samples, buffer );
}
}
+void Handler::GenerateArr(Bit32s* out, Bitu *samples )
+{
+ if ( GCC_UNLIKELY(*samples > 512) )
+ *samples = 512;
+ if ( !chip.opl3Active ) {
+ chip.GenerateBlock2( *samples, out );
+ } else {
+ chip.GenerateBlock3( *samples, out );
+ }
+}
+
void Handler::Init( Bitu rate ) {
InitTables();
chip.Setup( rate );
diff --git a/src/dbopl.h b/src/dbopl.h
index bf10295..794c645 100644
--- a/src/dbopl.h
+++ b/src/dbopl.h
@@ -265,7 +265,8 @@ struct Handler {
void Generate( void(*AddSamples_m32)(Bitu,Bit32s*),
void(*AddSamples_s32)(Bitu,Bit32s*),
Bitu samples );
- void Init( Bitu rate );
+ void GenerateArr(Bit32s* out, Bitu *samples );
+ void Init( Bitu rate );
};