Real-time, ultra-low-latency audio and sensor processing system for BeagleBone Black
 All Classes Files Functions Variables Typedefs Macros Groups
Classes | Macros | Typedefs | Enumerations | Functions | Variables
Bela.h File Reference

Main Bela public API. More...

#include <stdint.h>
#include <unistd.h>
#include <stdbool.h>
#include <stdio.h>
#include <GPIOcontrol.h>
#include <Utilities.h>

Go to the source code of this file.


struct  BelaContext
 Structure holding audio and sensor settings and pointers to I/O data buffers. More...
struct  BelaInitSettings
 Structure containing initialisation parameters for the real-time audio control system. More...


#define DEFAULT_DAC_LEVEL   0.0
#define DEFAULT_ADC_LEVEL   -6.0
#define DEFAULT_PGA_GAIN   16
#define DEFAULT_HP_LEVEL   -6.0
#define BELA_FLAG_INTERLEAVED   (1 << 0)


typedef void * AuxiliaryTask


enum  BelaHw {
  BelaHw_NoHw = -1, BelaHw_Bela, BelaHw_BelaMini, BelaHw_Salt,
  BelaHw_CtagFace, BelaHw_CtagBeast, BelaHw_CtagFaceBela, BelaHw_CtagBeastBela


int rt_printf (const char *format,...)
int rt_fprintf (FILE *stream, const char *format,...)
int rt_vprintf (const char *format, va_list ap)
int rt_vfprintf (FILE *stream, const char *format, va_list ap)
bool setup (BelaContext *context, void *userData)
 User-defined initialisation function which runs before audio rendering begins. More...
void render (BelaContext *context, void *userData)
 User-defined callback function to process audio and sensor data. More...
void cleanup (BelaContext *context, void *userData)
 User-defined cleanup function which runs when the program finishes. More...
BelaInitSettingsBela_InitSettings_alloc ()
 Allocate the data structure containing settings for Bela. More...
void Bela_InitSettings_free (BelaInitSettings *settings)
 De-allocate the data structure containing settings for Bela. More...
void Bela_defaultSettings (BelaInitSettings *settings)
 Initialise the data structure containing settings for Bela. More...
void Bela_userSettings (BelaInitSettings *settings)
 Initialise the data structure containing settings for Bela. More...
int Bela_getopt_long (int argc, char *argv[], const char *customShortOptions, const struct option *customLongOptions, BelaInitSettings *settings)
 Get long options from command line argument list, including Bela standard options. More...
void Bela_usage ()
 Print usage information for Bela standard options. More...
void Bela_getVersion (int *major, int *minor, int *bugfix)
 Get the version of Bela you are running.
void Bela_setVerboseLevel (int level)
 Set level of verbose (debugging) printing. More...
BelaHw Bela_detectHw (void)
 Detect what hardware we are running on.
int Bela_initAudio (BelaInitSettings *settings, void *userData)
 Initialise audio and sensor rendering environment. More...
int Bela_startAudio ()
 Begin processing audio and sensor data. More...
int Bela_runInSameThread ()
 Begin processing audio and sensor data in the same thread as the caller. More...
void Bela_stopAudio ()
 Stop processing audio and sensor data. More...
void Bela_cleanupAudio ()
 Clean up resources from audio and sensor processing. More...
int Bela_setDACLevel (float decibels)
 Set the level of the audio DAC. More...
int Bela_setADCLevel (float decibels)
 Set the level of the audio ADC. More...
int Bela_setPgaGain (float decibels, int channel)
 Set the gain of the audio preamplifier. More...
int Bela_setHeadphoneLevel (float decibels)
 Set the level of the onboard headphone amplifier. More...
int Bela_muteSpeakers (int mute)
 Mute or unmute the onboard speaker amplifiers. More...
AuxiliaryTask Bela_createAuxiliaryTask (void(*callback)(void *), int priority, const char *name, void *arg)
 Create a new auxiliary task. More...
int Bela_scheduleAuxiliaryTask (AuxiliaryTask task)
 Run an auxiliary task which has previously been created. More...
int Bela_startAuxiliaryTask (AuxiliaryTask task)
 Initialize an auxiliary task so that it can be scheduled. More...
int Bela_startAllAuxiliaryTasks ()
void Bela_stopAllAuxiliaryTasks ()
void Bela_deleteAllAuxiliaryTasks ()


int volatile gShouldStop

Detailed Description

Main Bela public API.

Central control code for hard real-time audio on BeagleBone Black using PRU and Xenomai Linux extensions. This code began as part of the Hackable Instruments project (EPSRC) at Queen Mary University of London, 2013-14.

(c) 2014-15 Andrew McPherson, Victor Zappi and Giulio Moro, Queen Mary University of London

Macro Definition Documentation

#define BELA_FLAG_INTERLEAVED   (1 << 0)

Flag for BelaContext. If set, indicates the audio and analog buffers are interleaved.


Flag for BelaContext. If set, indicates analog outputs persist for future frames.


Flag for BelaContext. If set, indicates the user will be warned if an underrun occurs