aboutsummaryrefslogtreecommitdiff
path: root/src/adlmidi_private.hpp
diff options
context:
space:
mode:
authorJP Cimalando <jpcima@users.noreply.github.com>2018-04-15 14:09:41 +0200
committerJP Cimalando <jpcima@users.noreply.github.com>2018-04-15 14:09:41 +0200
commit347dca55bb25f61a0cd2d2b45529944da764e734 (patch)
tree59831bc2949f7ad638123c4380b10bbbc1e27b4a /src/adlmidi_private.hpp
parent3ed5907fd849a27ee770fed599a22d0841fe9f19 (diff)
downloadlibADLMIDI-347dca55bb25f61a0cd2d2b45529944da764e734.tar.gz
libADLMIDI-347dca55bb25f61a0cd2d2b45529944da764e734.tar.bz2
libADLMIDI-347dca55bb25f61a0cd2d2b45529944da764e734.zip
add more sample types
Diffstat (limited to 'src/adlmidi_private.hpp')
-rw-r--r--src/adlmidi_private.hpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/adlmidi_private.hpp b/src/adlmidi_private.hpp
index 271bc5e..b60c7c0 100644
--- a/src/adlmidi_private.hpp
+++ b/src/adlmidi_private.hpp
@@ -153,6 +153,32 @@ inline int32_t adl_cvtS8(int32_t x)
{
return adl_cvtS16(x) / 256;
}
+inline int32_t adl_cvtS24(int32_t x)
+{
+ return adl_cvtS16(x) * 256;
+}
+inline int32_t adl_cvtS32(int32_t x)
+{
+ return adl_cvtS16(x) * 65536;
+}
+inline int32_t adl_cvtU16(int32_t x)
+{
+ return adl_cvtS16(x) - INT16_MIN;
+}
+inline int32_t adl_cvtU8(int32_t x)
+{
+ return adl_cvtS8(x) - INT8_MIN;
+}
+inline int32_t adl_cvtU24(int32_t x)
+{
+ enum { int24_min = -(1 << 23) };
+ return adl_cvtS24(x) - int24_min;
+}
+inline int32_t adl_cvtU32(int32_t x)
+{
+ // unsigned operation because overflow on signed integers is undefined
+ return (uint32_t)adl_cvtS32(x) - (uint32_t)INT32_MIN;
+}
/*
Smart pointer for C heaps, created with malloc() call.