Browse Source

SC: small improvements

tags/v1.3.0
Brian Heim 5 years ago
parent
commit
444c3ab600
1 changed files with 6 additions and 3 deletions
  1. +6
    -3
      src/SuperColliderEngine.cpp

+ 6
- 3
src/SuperColliderEngine.cpp View File

@@ -61,11 +61,12 @@ private:
int getResultAsInt(const char* text) noexcept; int getResultAsInt(const char* text) noexcept;
bool isVcvPrototypeProcessBlock(const PyrSlot* slot) const noexcept; bool isVcvPrototypeProcessBlock(const PyrSlot* slot) const noexcept;


void fail(const std::string& msg) noexcept;

// converts top of stack back to ProcessBlock data // converts top of stack back to ProcessBlock data
void readScProcessBlockResult(ProcessBlock* block) noexcept; void readScProcessBlockResult(ProcessBlock* block) noexcept;


void fail(const std::string& msg) noexcept;

// helpers for copying SC info back into process block's arrays
template <typename Array> template <typename Array>
bool copyArrayOfFloatArrays(const PyrSlot& inSlot, const char* context, Array& array, int size) noexcept; bool copyArrayOfFloatArrays(const PyrSlot& inSlot, const char* context, Array& array, int size) noexcept;
bool copyFloatArray(const PyrSlot& inSlot, const char* context, float* outArray, int size) noexcept; bool copyFloatArray(const PyrSlot& inSlot, const char* context, float* outArray, int size) noexcept;
@@ -165,11 +166,13 @@ std::string SC_VcvPrototypeClient::buildScProcessBlockString(const ProcessBlock*


// TODO so expensive // TODO so expensive
builder << std::fixed; // to ensure floats aren't actually treated as Integers builder << std::fixed; // to ensure floats aren't actually treated as Integers
builder << "^~vcv_process.value(VcvPrototypeProcessBlock.new("
builder << "^~vcv_process.(VcvPrototypeProcessBlock.new("
<< block->sampleRate << ',' << block->sampleRate << ','
<< block->sampleTime << ',' << block->sampleTime << ','
<< block->bufferSize << ','; << block->bufferSize << ',';


// after this, all floats are printed in float arrays, so we don't need to worry about misinterpreting
builder << std::defaultfloat;
auto&& appendInOutArray = [&builder](const int bufferSize, const float (&data)[NUM_ROWS][MAX_BUFFER_SIZE]) { auto&& appendInOutArray = [&builder](const int bufferSize, const float (&data)[NUM_ROWS][MAX_BUFFER_SIZE]) {
builder << '['; builder << '[';
for (int i = 0; i < NUM_ROWS; ++i) { for (int i = 0; i < NUM_ROWS; ++i) {


Loading…
Cancel
Save