diff projects/basic_passthru/render.cpp @ 67:472e892c6e41

Merge newapi into default
author Andrew McPherson <a.mcpherson@qmul.ac.uk>
date Fri, 17 Jul 2015 15:28:18 +0100
parents 3c3a1357657d
children 1e629f126322
line wrap: on
line diff
--- a/projects/basic_passthru/render.cpp	Sun Feb 08 00:20:01 2015 +0000
+++ b/projects/basic_passthru/render.cpp	Fri Jul 17 15:28:18 2015 +0100
@@ -6,11 +6,11 @@
  */
 
 
-#include "../../include/render.h"
-#include "../../include/Utilities.h"
+#include <BeagleRT.h>
+#include <Utilities.h>
 #include <rtdk.h>
 
-// initialise_render() is called once before the audio rendering starts.
+// setup() is called once before the audio rendering starts.
 // Use it to perform any initialisation and allocation which is dependent
 // on the period size or sample rate.
 //
@@ -19,11 +19,7 @@
 //
 // Return true on success; returning false halts the program.
 
-bool initialise_render(int numMatrixChannels, int numAudioChannels,
-					   int numMatrixFramesPerPeriod,
-					   int numAudioFramesPerPeriod,
-					   float matrixSampleRate, float audioSampleRate,
-					   void *userData)
+bool setup(BeagleRTContext *context, void *userData)
 {
 	// Nothing to do here...
 
@@ -35,34 +31,33 @@
 // ADCs and DACs (if available). If only audio is available, numMatrixFrames
 // will be 0.
 
-void render(int numMatrixFrames, int numAudioFrames, float *audioIn, float *audioOut,
-			uint16_t *matrixIn, uint16_t *matrixOut)
+void render(BeagleRTContext *context, void *userData)
 {
 	// Simplest possible case: pass inputs through to outputs
-	for(int n = 0; n < numAudioFrames; n++) {
-		for(int ch = 0; ch < gNumAudioChannels; ch++)
-			audioOut[n * gNumAudioChannels + ch] = audioIn[n * gNumAudioChannels + ch];
+	for(unsigned int n = 0; n < context->audioFrames; n++) {
+		for(unsigned int ch = 0; ch < context->audioChannels; ch++)
+			context->audioOut[n * context->audioChannels + ch] = context->audioIn[n * context->audioChannels + ch];
 	}
 
 	// Same with matrix, only if matrix is enabled
-	if(numMatrixFrames != 0) {
-		for(int n = 0; n < numMatrixFrames; n++) {
-			for(int ch = 0; ch < gNumMatrixChannels; ch++) {
+	if(context->analogFrames != 0) {
+		for(unsigned int n = 0; n < context->analogFrames; n++) {
+			for(unsigned int ch = 0; ch < context->analogChannels; ch++) {
 				// Two equivalent ways to write this code
 				// The long way, using the buffers directly:
-				// matrixOut[n * gNumMatrixChannels + ch] = matrixIn[n * gNumMatrixChannels + ch];
+				// context->analogOut[n * context->analogChannels + ch] = context->analogIn[n * context->analogChannels + ch];
 
 				// Or using the macros:
-				analogWrite(ch, n, analogRead(ch, n));
+				analogWriteFrame(context, n, ch, analogReadFrame(context, n, ch));
 			}
 		}
 	}
 }
 
-// cleanup_render() is called once at the end, after the audio has stopped.
-// Release any resources that were allocated in initialise_render().
+// cleanup() is called once at the end, after the audio has stopped.
+// Release any resources that were allocated in setup().
 
-void cleanup_render()
+void cleanup(BeagleRTContext *context, void *userData)
 {
 
 }