本文整理汇总了C++中AudioProcessor类的典型用法代码示例。如果您正苦于以下问题:C++ AudioProcessor类的具体用法?C++ AudioProcessor怎么用?C++ AudioProcessor使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了AudioProcessor类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setProcessor
//==============================================================================
void AudioProcessorPlayer::setProcessor (AudioProcessor* const processorToPlay)
{
if (processor != processorToPlay)
{
if (processorToPlay != nullptr && sampleRate > 0 && blockSize > 0)
{
processorToPlay->setPlayConfigDetails (numInputChans, numOutputChans,
sampleRate, blockSize);
processorToPlay->prepareToPlay (sampleRate, blockSize);
}
AudioProcessor* oldOne;
{
const ScopedLock sl (lock);
oldOne = isPrepared ? processor : nullptr;
processor = processorToPlay;
isPrepared = true;
}
if (oldOne != nullptr)
oldOne->releaseResources();
}
}
示例2: setProcessor
//==============================================================================
void AudioProcessorPlayer::setProcessor (AudioProcessor* const processorToPlay)
{
if (processor != processorToPlay)
{
if (processorToPlay != nullptr && sampleRate > 0 && blockSize > 0)
{
processorToPlay->setPlayConfigDetails (numInputChans, numOutputChans, sampleRate, blockSize);
const bool supportsDouble = processorToPlay->supportsDoublePrecisionProcessing() && isDoublePrecision;
AudioProcessor::ProcessingPrecision precision = supportsDouble ? AudioProcessor::doublePrecision
: AudioProcessor::singlePrecision;
processorToPlay->setProcessingPrecision (precision);
processorToPlay->prepareToPlay (sampleRate, blockSize);
}
AudioProcessor* oldOne;
{
const ScopedLock sl (lock);
oldOne = isPrepared ? processor : nullptr;
processor = processorToPlay;
isPrepared = true;
}
if (oldOne != nullptr)
oldOne->releaseResources();
}
}
示例3: mouseDoubleClick
void PMixInterpolationSpaceLayout::mouseDoubleClick (const MouseEvent& e)
{
if(graphEditor.getLassoSelection().getNumSelected() == 1)
{
NodeComponent* selectedItem = dynamic_cast<NodeComponent*>(graphEditor.getLassoSelection().getSelectedItem(0));
if (selectedItem)
{
AudioProcessor* proc = audioEngine.getDoc().getNodeForId(selectedItem->nodeID)->getProcessor();
bool hasParams = (proc->getNumParameters() > 0);
if (hasParams)
{
if (!InternalPluginFormat::isInternalFormat(proc->getName()))
{
double x = (double) e.getMouseDownX()/getWidth();
double y = (double) e.getMouseDownY()/getHeight();
audioEngine.getDoc().addPreset(selectedItem->nodeID, x, y);
}
}
}
}
}
示例4: AudioProcessorEditor
FilterIOConfigurationWindow::FilterIOConfigurationWindow (AudioProcessor& p)
: AudioProcessorEditor (&p),
title ("title", p.getName())
{
setOpaque (true);
title.setFont (title.getFont().withStyle (Font::bold));
addAndMakeVisible (title);
{
ScopedLock renderLock (p.getCallbackLock());
p.suspendProcessing (true);
p.releaseResources();
}
if (p.getBusCount (true) > 0 || p.canAddBus (true))
{
inConfig.reset (new InputOutputConfig (*this, true));
addAndMakeVisible (inConfig.get());
}
if (p.getBusCount (false) > 0 || p.canAddBus (false))
{
outConfig.reset (new InputOutputConfig (*this, false));
addAndMakeVisible (outConfig.get());
}
currentLayout = p.getBusesLayout();
setSize (400, (inConfig != nullptr && outConfig != nullptr ? 160 : 0) + 200);
}
示例5: updateParameter
//------------------------------------------------------------------------------
void Mapping::updateParameter(float val)
{
AudioProcessor *filter = filterGraph->getNodeForId(plugin)->getProcessor();
if(parameter == -1)
{
BypassableInstance *bypassable = dynamic_cast<BypassableInstance *>(filter);
if(bypassable)
bypassable->setBypass(val > 0.5f);
}
else
filter->setParameter(parameter, val);
}
示例6: run
bool SndFileAudioFileReader::run(AudioProcessor& processor)
{
if (input_file_ == nullptr) {
return false;
}
const int BUFFER_SIZE = 16384;
short input_buffer[BUFFER_SIZE];
sf_count_t frames_to_read = BUFFER_SIZE / info_.channels;
sf_count_t frames_read = frames_to_read;
sf_count_t total_frames_read = 0;
bool success = true;
success = processor.init(info_.samplerate, info_.channels, BUFFER_SIZE);
if (success) {
showProgress(0, info_.frames);
while (success && frames_read == frames_to_read) {
frames_read = sf_readf_short(
input_file_,
input_buffer,
frames_to_read
);
success = processor.process(
input_buffer,
static_cast<int>(frames_read)
);
total_frames_read += frames_read;
showProgress(total_frames_read, info_.frames);
}
output_stream << "\nRead " << total_frames_read << " frames\n";
processor.done();
}
close();
return success;
}
示例7: callback
static int callback(const void *inputBuffer,
void *outputBuffer,
unsigned long framesPerBuffer,
const PaStreamCallbackTimeInfo* timeInfo,
PaStreamCallbackFlags statusFlags,
void *userData )
{
AudioProcessor* audioDevice = (AudioProcessor*)userData;
float** output = (float**)outputBuffer;
float** input = (float**)inputBuffer;
// if(audioDevice->isPrepared())
audioDevice->render(input, audioDevice->getNumInputChannels(), output, audioDevice->getNumOutputChannels(), framesPerBuffer);
return 0;
}
示例8: update
void update (AudioProcessor& audioProcessor, bool forceLegacyParamIDs)
{
clear();
legacyParamIDs = forceLegacyParamIDs;
auto numParameters = audioProcessor.getNumParameters();
usingManagedParameters = (audioProcessor.getParameters().size() == numParameters) && (! legacyParamIDs);
for (int i = 0; i < numParameters; ++i)
{
AudioProcessorParameter* param = usingManagedParameters ? audioProcessor.getParameters()[i]
: (legacy.add (new LegacyAudioParameter (audioProcessor, i)));
params.add (param);
}
}
示例9: ProcessorParameterPropertyComp
ProcessorParameterPropertyComp (const String& name, AudioProcessor& owner_, const int index_)
: PropertyComponent (name),
owner (owner_),
index (index_),
paramHasChanged (false),
slider (owner_, index_)
{
startTimer (100);
addAndMakeVisible (&slider);
owner_.addListener (this);
}
示例10: getParamIndex
static int getParamIndex (AudioProcessor& processor, AudioProcessorParameter* param) noexcept
{
if (auto* legacy = dynamic_cast<LegacyAudioParameter*> (param))
{
return legacy->parameterIndex;
}
else
{
auto n = processor.getNumParameters();
jassert (n == processor.getParameters().size());
for (int i = 0; i < n; ++i)
{
if (processor.getParameters()[i] == param)
return i;
}
}
return -1;
}
示例11: mouseDown
void PMixInterpolationSpaceLayout::mouseDown (const MouseEvent& e)
{
selectedItems.deselectAll();
if (e.mods.isPopupMenu())
{
if(graphEditor.getLassoSelection().getNumSelected() == 1)
{
NodeComponent* selectedItem = dynamic_cast<NodeComponent*>(graphEditor.getLassoSelection().getSelectedItem(0));
if (selectedItem)
{
AudioProcessor* proc = audioEngine.getDoc().getNodeForId(selectedItem->nodeID)->getProcessor();
PopupMenu m;
bool hasParams = (proc->getNumParameters() > 0);
m.addItem (1, TRANS("Add preset for node"), hasParams);
const int r = m.show();
if (r == 1)
{
if (!InternalPluginFormat::isInternalFormat(proc->getName()))
{
double x = (double) e.getMouseDownX()/getWidth();
double y = (double) e.getMouseDownY()/getHeight();
audioEngine.getDoc().addPreset(selectedItem->nodeID, x, y);
}
}
}
}
}
else
{
addChildComponent (lassoComp);
lassoComp.beginLasso (e, this);
}
}
示例12: jassert
PluginWindow* PluginWindow::getWindowFor (AudioProcessorGraph::Node* const node,
WindowFormatType type)
{
jassert (node != nullptr);
for (int i = activePluginWindows.size(); --i >= 0;)
if (activePluginWindows.getUnchecked(i)->owner == node
&& activePluginWindows.getUnchecked(i)->type == type)
return activePluginWindows.getUnchecked(i);
AudioProcessor* processor = node->getProcessor();
AudioProcessorEditor* ui = nullptr;
if (type == Normal)
{
ui = processor->createEditorIfNeeded();
if (ui == nullptr)
type = Generic;
}
if (ui == nullptr)
{
//if (type == Generic || type == Parameters)
//ui = new PMixGenericAudioProcessorEditor (processor);
// else if (type == Programs)
// ui = new ProgramAudioProcessorEditor (processor);
}
if (ui != nullptr)
{
if (AudioPluginInstance* const plugin = dynamic_cast<AudioPluginInstance*> (processor))
ui->setName (plugin->getName());
return new PluginWindow (ui, node, type);
}
return nullptr;
}
示例13: ParamSlider
ParamSlider (AudioProcessor& p, int paramIndex) : owner (p), index (paramIndex)
{
const int steps = owner.getParameterNumSteps (index);
const AudioProcessorParameter::Category category = p.getParameterCategory (index);
const bool isLevelMeter = (((category & 0xffff0000) >> 16) == 2);
if (steps > 1 && steps < 0x7fffffff)
setRange (0.0, 1.0, 1.0 / (steps - 1.0));
else
setRange (0.0, 1.0);
setEnabled (! isLevelMeter);
setSliderStyle (Slider::LinearBar);
setTextBoxIsEditable (false);
setScrollWheelEnabled (true);
}
示例14: run
bool SndFileAudioFileReader::run(AudioProcessor& processor)
{
if (input_file_ == nullptr) {
return false;
}
const int BUFFER_SIZE = 16384;
float float_buffer[BUFFER_SIZE];
short input_buffer[BUFFER_SIZE];
const int sub_type = info_.format & SF_FORMAT_SUBMASK;
const bool is_floating_point = sub_type == SF_FORMAT_FLOAT ||
sub_type == SF_FORMAT_DOUBLE;
sf_count_t frames_to_read = BUFFER_SIZE / info_.channels;
sf_count_t frames_read = frames_to_read;
sf_count_t total_frames_read = 0;
bool success = true;
success = processor.init(info_.samplerate, info_.channels, BUFFER_SIZE);
if (success) {
showProgress(0, info_.frames);
while (success && frames_read == frames_to_read) {
if (is_floating_point) {
frames_read = sf_readf_float(
input_file_,
float_buffer,
frames_to_read
);
// Scale floating-point samples from [-1.0, 1.0] to 16-bit
// integer range. Note: we don't use SFC_SET_SCALE_FLOAT_INT_READ
// as this scales using the overall measured waveform peak
// amplitude, resulting in an unwanted amplitude change.
for (int i = 0; i < frames_read * info_.channels; ++i) {
input_buffer[i] = static_cast<short>(
float_buffer[i] * std::numeric_limits<short>::max()
);
}
}
else {
frames_read = sf_readf_short(
input_file_,
input_buffer,
frames_to_read
);
}
success = processor.process(
input_buffer,
static_cast<int>(frames_read)
);
total_frames_read += frames_read;
showProgress(total_frames_read, info_.frames);
}
output_stream << "\nRead " << total_frames_read << " frames\n";
processor.done();
}
close();
return success;
}
示例15: bstd_file
bool Mp3AudioFileReader::run(AudioProcessor& processor)
{
if (file_ == nullptr) {
return false;
}
enum {
STATUS_OK,
STATUS_INIT_ERROR,
STATUS_READ_ERROR,
STATUS_PROCESS_ERROR
} status = STATUS_OK;
unsigned char input_buffer[INPUT_BUFFER_SIZE + MAD_BUFFER_GUARD];
unsigned char* guard_ptr = nullptr;
unsigned long frame_count = 0;
short output_buffer[OUTPUT_BUFFER_SIZE];
short* output_ptr = output_buffer;
const short* const output_buffer_end = output_buffer + OUTPUT_BUFFER_SIZE;
int channels = 0;
// Decoding options can here be set in the options field of the stream
// structure.
// {1} When decoding from a file we need to know when the end of the file is
// reached at the same time as the last bytes are read (see also the comment
// marked {3} below). Neither the standard C fread() function nor the POSIX
// read() system call provides this feature. We thus need to perform our
// reads through an interface having this feature, this is implemented here
// by the bstdfile.c module.
BStdFile bstd_file(file_);
// Initialize the structures used by libmad.
MadStream stream;
MadFrame frame;
MadSynth synth;
mad_timer_t timer;
mad_timer_reset(&timer);
// This is the decoding loop.
for (;;) {
// The input bucket must be filled if it becomes empty or if it's the
// first execution of the loop.
if (stream.buffer == nullptr || stream.error == MAD_ERROR_BUFLEN) {
size_t read_size;
size_t remaining;
unsigned char* read_start;
// {2} libmad may not consume all bytes of the input buffer. If the
// last frame in the buffer is not wholly contained by it, then that
// frame's start is pointed by the next_frame member of the stream
// structure. This common situation occurs when mad_frame_decode()
// fails, sets the stream error code to MAD_ERROR_BUFLEN, and sets
// the next_frame pointer to a non-NULL value. (See also the comment
// marked {4} below.)
//
// When this occurs, the remaining unused bytes must be put back at
// the beginning of the buffer and taken in account before refilling
// the buffer. This means that the input buffer must be large enough
// to hold a whole frame at the highest observable bit-rate
// (currently 448 kb/s). XXX=XXX Is 2016 bytes the size of the
// largest frame? (448000*(1152/32000))/8
if (stream.next_frame != nullptr) {
remaining = stream.bufend - stream.next_frame;
memmove(input_buffer, stream.next_frame, remaining);
read_start = input_buffer + remaining;
read_size = INPUT_BUFFER_SIZE - remaining;
}
else {
read_size = INPUT_BUFFER_SIZE;
read_start = input_buffer;
remaining = 0;
}
// Fill-in the buffer. If an error occurs print a message and leave
// the decoding loop. If the end of stream is reached we also leave
// the loop but the return status is left untouched.
read_size = bstd_file.read(read_start, 1, read_size);
if (read_size <= 0) {
if (ferror(file_)) {
error_stream << "\nRead error on bit-stream: "
<< strerror(errno) << '\n';
status = STATUS_READ_ERROR;
}
break;
}
// {3} When decoding the last frame of a file, it must be followed
// by MAD_BUFFER_GUARD zero bytes if one wants to decode that last
// frame. When the end of file is detected we append that quantity
//.........这里部分代码省略.........