13namespace tracktion {
inline namespace engine
17namespace test_utilities
24 juce::AudioBuffer<float> destBuffer (
static_cast<int> (reader->numChannels),
static_cast<int> (reader->lengthInSamples));
26 if (! reader->read (&destBuffer,
27 0, destBuffer.getNumSamples(), 0,
39 return loadFileInToBuffer (e.getAudioFileFormatManager().readFormatManager, f);
57 inline Renderer::Statistics logStats (
juce::UnitTest& ut, Renderer::Statistics stats)
66 auto blockSize = edit.engine.getDeviceManager().getBlockSize();
67 auto stats = logStats (ut, Renderer::measureStatistics (
"Tests", edit, tr,
toBitSet (tracks), blockSize));
75 Renderer::renderToFile (edit, tf->getFile(),
false);
76 DBG(tf->getFile().getFullPathName());
80 struct BufferAndSampleRate
83 double sampleRate = 0;
87 inline BufferAndSampleRate renderToAudioBuffer (Edit& edit)
90 Renderer::renderToFile (edit, tf->getFile(),
false);
98 static_cast<int> (reader->lengthInSamples));
100 if (reader->read (&buffer, 0, buffer.getNumSamples(),
101 0,
true, buffer.getNumChannels() > 1))
103 return { buffer, reader->sampleRate, std::move (tf) };
110 inline void expectPeak (
juce::UnitTest& ut,
const BufferAndSampleRate& data, TimeRange tr,
float expectedPeak)
113 const auto peak =
data.buffer.getMagnitude (
static_cast<int> (sampleRange.getStart()),
114 static_cast<int> (sampleRange.getLength()));
119 inline void expectRMS (
juce::UnitTest& ut,
const BufferAndSampleRate& data, TimeRange tr,
int channel,
float expectedRMS)
123 static_cast<int> (sampleRange.getStart()),
124 static_cast<int> (sampleRange.getLength())),
133 auto edit = Edit::createSingleTrackEdit (engine, role);
135 edit->ensureNumberOfAudioTracks (numAudioTracks);
136 edit->tempoSequence.getTempo (0)->setBpm (60.0);
137 edit->getMasterVolumePlugin()->setVolumeDb (0.0);
void logMessage(const String &message)
void expectEquals(ValueType actual, ValueType expected, String failureMessage=String())
void expect(bool testResult, const String &failureMessage=String())
void expectWithinAbsoluteError(ValueType actual, ValueType expected, ValueType maxAbsoluteError, String failureMessage=String())
@ forRendering
Creates an Edit for rendering, not output device playback.
bool isWithin(Type a, Type b, Type tolerance) noexcept
juce::BigInteger toBitSet(const juce::Array< Track * > &tracks)
Returns the set of tracks as a BigInteger with each bit corresponding to the array of all tracks in a...
constexpr int64_t toSamples(TimePosition, double sampleRate)
Converts a TimePosition to a number of samples.