Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/extern
diff options
context:
space:
mode:
authorJörg Müller <nexyon@gmail.com>2019-05-11 00:01:04 +0300
committerJörg Müller <nexyon@gmail.com>2019-05-11 00:01:04 +0300
commit8096f36796ae07a1a76e99abbaf216ab29260b74 (patch)
tree64ad4a670f2ea9c44d783cba2b474b0eee320e3a /extern
parent243fbf1c4bacf82dd30dc9068ac634343d5b6ad6 (diff)
Audaspace: porting changes from upstream.
- Silence now has an optional sample rate parameter. - Fix: wrong length reported by modulator and superpose. - Minor formatting, include and documentation fixes.
Diffstat (limited to 'extern')
-rw-r--r--extern/audaspace/bindings/C/AUD_Sound.cpp4
-rw-r--r--extern/audaspace/bindings/C/AUD_Sound.h3
-rw-r--r--extern/audaspace/bindings/C/AUD_Special.cpp6
-rw-r--r--extern/audaspace/bindings/python/PySequence.cpp8
-rw-r--r--extern/audaspace/bindings/python/PySound.cpp16
-rw-r--r--extern/audaspace/include/generator/Silence.h9
-rw-r--r--extern/audaspace/include/generator/SilenceReader.h8
-rw-r--r--extern/audaspace/include/generator/Sine.h3
-rw-r--r--extern/audaspace/src/fx/DynamicMusic.cpp3
-rw-r--r--extern/audaspace/src/fx/ModulatorReader.cpp2
-rw-r--r--extern/audaspace/src/generator/Silence.cpp5
-rw-r--r--extern/audaspace/src/generator/SilenceReader.cpp7
-rw-r--r--extern/audaspace/src/sequence/SuperposeReader.cpp2
13 files changed, 48 insertions, 28 deletions
diff --git a/extern/audaspace/bindings/C/AUD_Sound.cpp b/extern/audaspace/bindings/C/AUD_Sound.cpp
index 00a59f4c67f..8c99ce2341f 100644
--- a/extern/audaspace/bindings/C/AUD_Sound.cpp
+++ b/extern/audaspace/bindings/C/AUD_Sound.cpp
@@ -277,9 +277,9 @@ AUD_API AUD_Sound* AUD_Sound_sawtooth(float frequency, AUD_SampleRate rate)
return new AUD_Sound(new Sawtooth(frequency, rate));
}
-AUD_API AUD_Sound*AUD_Sound_silence()
+AUD_API AUD_Sound* AUD_Sound_silence(AUD_SampleRate rate)
{
- return new AUD_Sound(new Silence());
+ return new AUD_Sound(new Silence(rate));
}
AUD_API AUD_Sound* AUD_Sound_sine(float frequency, AUD_SampleRate rate)
diff --git a/extern/audaspace/bindings/C/AUD_Sound.h b/extern/audaspace/bindings/C/AUD_Sound.h
index 66d6c53cc37..53172616781 100644
--- a/extern/audaspace/bindings/C/AUD_Sound.h
+++ b/extern/audaspace/bindings/C/AUD_Sound.h
@@ -113,9 +113,10 @@ extern AUD_API AUD_Sound* AUD_Sound_sawtooth(float frequency, AUD_SampleRate rat
/**
* Creates a quiet sound.
+ * \param rate The sample rate of the silence sound.
* \return A handle of the sound.
*/
-extern AUD_API AUD_Sound* AUD_Sound_silence();
+extern AUD_API AUD_Sound* AUD_Sound_silence(AUD_SampleRate rate);
/**
* Creates a sine sound.
diff --git a/extern/audaspace/bindings/C/AUD_Special.cpp b/extern/audaspace/bindings/C/AUD_Special.cpp
index f8f46651231..30148fa1487 100644
--- a/extern/audaspace/bindings/C/AUD_Special.cpp
+++ b/extern/audaspace/bindings/C/AUD_Special.cpp
@@ -177,11 +177,11 @@ static void pauseSound(AUD_Handle* handle)
AUD_API AUD_Handle* AUD_pauseAfter(AUD_Handle* handle, float seconds)
{
- std::shared_ptr<ISound> silence = std::shared_ptr<ISound>(new Silence);
- std::shared_ptr<ISound> limiter = std::shared_ptr<ISound>(new Limiter(silence, 0, seconds));
-
auto device = DeviceManager::getDevice();
+ std::shared_ptr<ISound> silence = std::shared_ptr<ISound>(new Silence(device->getSpecs().rate));
+ std::shared_ptr<ISound> limiter = std::shared_ptr<ISound>(new Limiter(silence, 0, seconds));
+
std::lock_guard<ILockable> lock(*device);
try
diff --git a/extern/audaspace/bindings/python/PySequence.cpp b/extern/audaspace/bindings/python/PySequence.cpp
index d4773c743ee..e574d76bea1 100644
--- a/extern/audaspace/bindings/python/PySequence.cpp
+++ b/extern/audaspace/bindings/python/PySequence.cpp
@@ -100,7 +100,7 @@ Sequence_new(PyTypeObject* type, PyObject* args, PyObject* kwds)
PyDoc_STRVAR(M_aud_Sequence_add_doc,
"add()\n\n"
- "Adds a new entry to the scene.\n"
+ "Adds a new entry to the sequence.\n\n"
":arg sound: The sound this entry should play.\n"
":type sound: :class:`Sound`\n"
":arg begin: The start time.\n"
@@ -151,8 +151,8 @@ Sequence_add(Sequence* self, PyObject* args, PyObject* kwds)
}
PyDoc_STRVAR(M_aud_Sequence_remove_doc,
- "reomve()\n\n"
- "Adds a new entry to the scene.\n"
+ "remove()\n\n"
+ "Removes an entry from the sequence.\n\n"
":arg entry: The entry to remove.\n"
":type entry: :class:`SequenceEntry`\n");
@@ -579,7 +579,7 @@ static PyGetSetDef Sequence_properties[] = {
};
PyDoc_STRVAR(M_aud_Sequence_doc,
- "This sound represents sequenced entries to play a sound scene.");
+ "This sound represents sequenced entries to play a sound sequence.");
extern PyTypeObject SoundType;
diff --git a/extern/audaspace/bindings/python/PySound.cpp b/extern/audaspace/bindings/python/PySound.cpp
index 17fcdbeb938..c589e7110cb 100644
--- a/extern/audaspace/bindings/python/PySound.cpp
+++ b/extern/audaspace/bindings/python/PySound.cpp
@@ -470,14 +470,22 @@ Sound_sawtooth(PyTypeObject* type, PyObject* args)
}
PyDoc_STRVAR(M_aud_Sound_silence_doc,
- "silence()\n\n"
+ "silence(rate=48000)\n\n"
"Creates a silence sound which plays simple silence.\n\n"
+ ":arg rate: The sampling rate in Hz. It's recommended to set this "
+ "value to the playback device's samling rate to avoid resamping.\n"
+ ":type rate: int\n"
":return: The created :class:`Sound` object.\n"
":rtype: :class:`Sound`");
static PyObject *
-Sound_silence(PyTypeObject* type)
+Sound_silence(PyTypeObject* type, PyObject* args)
{
+ double rate = 48000;
+
+ if(!PyArg_ParseTuple(args, "|d:sawtooth", &rate))
+ return nullptr;
+
Sound* self;
self = (Sound*)type->tp_alloc(type, 0);
@@ -485,7 +493,7 @@ Sound_silence(PyTypeObject* type)
{
try
{
- self->sound = new std::shared_ptr<ISound>(new Silence());
+ self->sound = new std::shared_ptr<ISound>(new Silence((SampleRate)rate));
}
catch(Exception& e)
{
@@ -1788,7 +1796,7 @@ static PyMethodDef Sound_methods[] = {
{"sawtooth", (PyCFunction)Sound_sawtooth, METH_VARARGS | METH_CLASS,
M_aud_Sound_sawtooth_doc
},
- {"silence", (PyCFunction)Sound_silence, METH_NOARGS | METH_CLASS,
+ {"silence", (PyCFunction)Sound_silence, METH_VARARGS | METH_CLASS,
M_aud_Sound_silence_doc
},
{"sine", (PyCFunction)Sound_sine, METH_VARARGS | METH_CLASS,
diff --git a/extern/audaspace/include/generator/Silence.h b/extern/audaspace/include/generator/Silence.h
index a35b83d37fc..1aa26eb390f 100644
--- a/extern/audaspace/include/generator/Silence.h
+++ b/extern/audaspace/include/generator/Silence.h
@@ -23,6 +23,7 @@
*/
#include "ISound.h"
+#include "respec/Specification.h"
AUD_NAMESPACE_BEGIN
@@ -32,6 +33,11 @@ AUD_NAMESPACE_BEGIN
class AUD_API Silence : public ISound
{
private:
+ /**
+ * The target sample rate for output.
+ */
+ const SampleRate m_sampleRate;
+
// delete copy constructor and operator=
Silence(const Silence&) = delete;
Silence& operator=(const Silence&) = delete;
@@ -39,8 +45,9 @@ private:
public:
/**
* Creates a new silence sound.
+ * \param sampleRate The target sample rate for playback.
*/
- Silence();
+ Silence(SampleRate sampleRate = RATE_48000);
virtual std::shared_ptr<IReader> createReader();
};
diff --git a/extern/audaspace/include/generator/SilenceReader.h b/extern/audaspace/include/generator/SilenceReader.h
index ecc0ce86da9..c32db4b3e89 100644
--- a/extern/audaspace/include/generator/SilenceReader.h
+++ b/extern/audaspace/include/generator/SilenceReader.h
@@ -38,6 +38,11 @@ private:
*/
int m_position;
+ /**
+ * The sample rate for the output.
+ */
+ const SampleRate m_sampleRate;
+
// delete copy constructor and operator=
SilenceReader(const SilenceReader&) = delete;
SilenceReader& operator=(const SilenceReader&) = delete;
@@ -45,8 +50,9 @@ private:
public:
/**
* Creates a new reader.
+ * \param sampleRate The output sample rate.
*/
- SilenceReader();
+ SilenceReader(SampleRate sampleRate);
virtual bool isSeekable() const;
virtual void seek(int position);
diff --git a/extern/audaspace/include/generator/Sine.h b/extern/audaspace/include/generator/Sine.h
index ee78fc7d06b..0c7dd15ab30 100644
--- a/extern/audaspace/include/generator/Sine.h
+++ b/extern/audaspace/include/generator/Sine.h
@@ -53,8 +53,7 @@ public:
* \param frequency The desired frequency.
* \param sampleRate The target sample rate for playback.
*/
- Sine(float frequency,
- SampleRate sampleRate = RATE_48000);
+ Sine(float frequency, SampleRate sampleRate = RATE_48000);
/**
* Returns the frequency of the sine wave.
diff --git a/extern/audaspace/src/fx/DynamicMusic.cpp b/extern/audaspace/src/fx/DynamicMusic.cpp
index 2b0acc06fbc..c682108378f 100644
--- a/extern/audaspace/src/fx/DynamicMusic.cpp
+++ b/extern/audaspace/src/fx/DynamicMusic.cpp
@@ -15,9 +15,6 @@
******************************************************************************/
#include "fx/DynamicMusic.h"
-#include "generator/Silence.h"
-#include "fx/Fader.h"
-#include "fx/Limiter.h"
#include <mutex>
#include <condition_variable>
diff --git a/extern/audaspace/src/fx/ModulatorReader.cpp b/extern/audaspace/src/fx/ModulatorReader.cpp
index c17cee08239..f7cdc1d2758 100644
--- a/extern/audaspace/src/fx/ModulatorReader.cpp
+++ b/extern/audaspace/src/fx/ModulatorReader.cpp
@@ -48,7 +48,7 @@ int ModulatorReader::getLength() const
int len2 = m_reader2->getLength();
if((len1 < 0) || (len2 < 0))
return -1;
- return std::min(len1, len2);
+ return std::max(len1, len2);
}
int ModulatorReader::getPosition() const
diff --git a/extern/audaspace/src/generator/Silence.cpp b/extern/audaspace/src/generator/Silence.cpp
index a173a1bc5f6..2919f892803 100644
--- a/extern/audaspace/src/generator/Silence.cpp
+++ b/extern/audaspace/src/generator/Silence.cpp
@@ -19,13 +19,14 @@
AUD_NAMESPACE_BEGIN
-Silence::Silence()
+Silence::Silence(SampleRate sampleRate) :
+ m_sampleRate(sampleRate)
{
}
std::shared_ptr<IReader> Silence::createReader()
{
- return std::shared_ptr<IReader>(new SilenceReader());
+ return std::shared_ptr<IReader>(new SilenceReader(m_sampleRate));
}
AUD_NAMESPACE_END
diff --git a/extern/audaspace/src/generator/SilenceReader.cpp b/extern/audaspace/src/generator/SilenceReader.cpp
index 39358cc087a..746cc7600da 100644
--- a/extern/audaspace/src/generator/SilenceReader.cpp
+++ b/extern/audaspace/src/generator/SilenceReader.cpp
@@ -20,8 +20,9 @@
AUD_NAMESPACE_BEGIN
-SilenceReader::SilenceReader() :
- m_position(0)
+SilenceReader::SilenceReader(SampleRate sampleRate) :
+ m_position(0),
+ m_sampleRate(sampleRate)
{
}
@@ -48,7 +49,7 @@ int SilenceReader::getPosition() const
Specs SilenceReader::getSpecs() const
{
Specs specs;
- specs.rate = RATE_48000;
+ specs.rate = m_sampleRate;
specs.channels = CHANNELS_MONO;
return specs;
}
diff --git a/extern/audaspace/src/sequence/SuperposeReader.cpp b/extern/audaspace/src/sequence/SuperposeReader.cpp
index 9206a7a96ef..a65185acf17 100644
--- a/extern/audaspace/src/sequence/SuperposeReader.cpp
+++ b/extern/audaspace/src/sequence/SuperposeReader.cpp
@@ -48,7 +48,7 @@ int SuperposeReader::getLength() const
int len2 = m_reader2->getLength();
if((len1 < 0) || (len2 < 0))
return -1;
- return std::min(len1, len2);
+ return std::max(len1, len2);
}
int SuperposeReader::getPosition() const