comparison projects/basic_button/render.cpp @ 246:da5ce9876fcc

Improved basic_button project
author Giulio Moro <giuliomoro@yahoo.it>
date Tue, 19 Apr 2016 22:22:26 +0100
parents db76215feb69
children ac8eb07afcf5
comparison
equal deleted inserted replaced
245:ba0b63625146 246:da5ce9876fcc
1 /* 1 /*
2 * 2 *
3 * Andrew McPherson and Victor Zappi 3 * Andrew McPherson and Victor Zappi
4 * Queen Mary, University of London 4 * Queen Mary, University of London
5 */ 5 */
6 6
7 #include <BeagleRT.h> 7 #include <BeagleRT.h>
8 #include <Utilities.h> 8 #include <Utilities.h>
9 #include <cmath> 9 #include <cmath>
10 #include <rtdk.h> 10 #include <rtdk.h>
11 #include <stdlib.h>
11 12
12 // setup() is called once before the audio rendering starts. 13 // setup() is called once before the audio rendering starts.
13 // Use it to perform any initialisation and allocation which is dependent 14 // Use it to perform any initialisation and allocation which is dependent
14 // on the period size or sample rate. 15 // on the period size or sample rate.
15 // 16 //
18 // 19 //
19 // Return true on success; returning false halts the program. 20 // Return true on success; returning false halts the program.
20 21
21 bool setup(BeagleRTContext *context, void *userData) 22 bool setup(BeagleRTContext *context, void *userData)
22 { 23 {
23 for(unsigned int n=0; n<context->digitalFrames; n++){ 24 pinModeFrame(context, 0, P8_08, INPUT);
24 pinModeFrame(context, 0, P8_08, INPUT); 25 pinModeFrame(context, 0, P8_07, OUTPUT);
25 pinModeFrame(context, 0, P8_07, OUTPUT);
26 }
27 return true; 26 return true;
28 } 27 }
29 28
30 // render() is called regularly at the highest priority by the audio engine. 29 // render() is called regularly at the highest priority by the audio engine.
31 // Input and output are given from the audio hardware and the other 30 // Input and output are given from the audio hardware and the other
40 * The program will read the button and make the LED blink when the button is pressed. 39 * The program will read the button and make the LED blink when the button is pressed.
41 */ 40 */
42 41
43 void render(BeagleRTContext *context, void *userData) 42 void render(BeagleRTContext *context, void *userData)
44 { 43 {
45 float sum=0;
46 for(unsigned int n=0; n<context->digitalFrames; n++){ 44 for(unsigned int n=0; n<context->digitalFrames; n++){
47 int status=digitalReadFrame(context, 0, P8_08); //read the value of the button 45 int status=digitalReadFrame(context, 0, P8_08); //read the value of the button
48 sum += status; 46 digitalWriteFrameOnce(context, n, P8_07, status); //write the status to the LED
49 digitalWriteFrame(context, n, P8_07, status); //write the status to the LED 47 float out = 0.1 * status * rand() / (float)RAND_MAX * 2 - 1; //generate some noise, gated by the button
48 for(unsigned int j = 0; j < context->audioChannels; j++){
49 audioWriteFrame(context, n, j, out); //write the audio output
50 }
50 } 51 }
51 rt_printf("status: %f\n", sum);
52 } 52 }
53 53
54 // cleanup() is called once at the end, after the audio has stopped. 54 // cleanup() is called once at the end, after the audio has stopped.
55 // Release any resources that were allocated in setup(). 55 // Release any resources that were allocated in setup().
56 56
57 void cleanup(BeagleRTContext *context, void *userData) 57 void cleanup(BeagleRTContext *context, void *userData)
58 { 58 {
59 // Nothing to do here 59 // Nothing to do here
60 } 60 }
61