Browse Source

Add Port::getVoltageSum. Rename get/setVoltages to read/writeVoltages. Add getVoltages.

tags/v1.0.0
Andrew Belt 6 years ago
parent
commit
02ef6641f4
1 changed files with 25 additions and 6 deletions
  1. +25
    -6
      include/engine/Port.hpp

+ 25
- 6
include/engine/Port.hpp View File

@@ -55,18 +55,37 @@ struct alignas(32) Port {
return isConnected() ? getPolyVoltage(channel) : normalVoltage; return isConnected() ? getPolyVoltage(channel) : normalVoltage;
} }


/** Reads all voltage values from an array of size `channels` */
void setVoltages(const float *voltages) {
/** Returns a pointer to the array of voltages beginning with firstChannel.
The pointer can be used for reading and writing.
Useful for SIMD.
*/
float *getVoltages(int firstChannel = 0) {
return &voltages[firstChannel];
}

/** Copies the port's voltages to an array of size at least `channels`. */
void readVoltages(float *v) {
for (int c = 0; c < channels; c++) {
v[c] = voltages[c];
}
}

/** Copies an array of size at least `channels` to the port's voltages.
Remember to set the number of channels *before* calling this method.
*/
void writeVoltages(const float *v) {
for (int c = 0; c < channels; c++) { for (int c = 0; c < channels; c++) {
this->voltages[c] = voltages[c];
voltages[c] = v[c];
} }
} }


/** Writes all voltage values to an array of size `channels` */
void getVoltages(float *voltages) {
/** Returns the sum of all voltages. */
float getVoltageSum() {
float sum = 0.f;
for (int c = 0; c < channels; c++) { for (int c = 0; c < channels; c++) {
voltages[c] = this->voltages[c];
sum += voltages[c];
} }
return sum;
} }


/** Sets the number of polyphony channels. */ /** Sets the number of polyphony channels. */


Loading…
Cancel
Save