diff projects/basic_passthru/render.cpp @ 52:a6d223473ea2 newapi

Updated examples for new API. tank_wars not yet updated; audio_in_FFT and oscillator_bank not working properly yet.
author andrewm
date Sun, 31 May 2015 02:13:39 -0500
parents 6adb088196a7
children 3c3a1357657d
line wrap: on
line diff
--- a/projects/basic_passthru/render.cpp	Sat May 30 13:25:51 2015 -0500
+++ b/projects/basic_passthru/render.cpp	Sun May 31 02:13:39 2015 -0500
@@ -6,7 +6,7 @@
  */
 
 
-#include "../../include/render.h"
+#include "../../include/BeagleRT.h"
 #include "../../include/Utilities.h"
 #include <rtdk.h>
 
@@ -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 initialise_render(BeagleRTContext *context, void *userData)
 {
 	// Nothing to do here...
 
@@ -35,25 +31,24 @@
 // 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));
 			}
 		}
 	}
@@ -62,7 +57,7 @@
 // cleanup_render() is called once at the end, after the audio has stopped.
 // Release any resources that were allocated in initialise_render().
 
-void cleanup_render()
+void cleanup_render(BeagleRTContext *context, void *userData)
 {
 
 }