:sound: OpenESS Open Embeded Sound Server

:sound: OpenESS Open Embeded Sound Server

- 6 mins

OpenESS 0.6.04 is a network-capable sound server libary mainly for embedded systems and other operatins systems. OpenESS is free and open-source software, and is licensed under the terms of the GNU Lesser General Public License.

Getting Started

Setting Up Development Environment

PlatformIO

OpenESS is made for use with platformio, an advanced ecosystem for microcontroller development. To get started with coding esphomelib applications, you first have to install the atom-based platformio IDE or for advanced users, install the command line version of platformio.

Then create a new project for an ESP32-based board (for example, nodemcu-32s). Then open up the newly created platformio.ini file and insert

; ...
platform = espressif32
board = nodemcu-32s
framework = esp-idf
lib_deps = openess

Finally, create a new source file in the src/ folder (for example main.c) and start coding with openess.

Usage example

simple create output

#include "ess.h"
#include "ess_platform.h"
#include "ess_output_module.h"
#include "ess_input_module.h"

 void app_main() {
   ess_platform::Instance().create();

   ess_output_module* i2s_output = ess_platform::Instance().create_output(ESS_OUTPUT_GENERIC_I2S,
     std::string("ess_i2s_controller") );

   std::cout << i2s_output << std::endl;


   printf("OpenESS is ready to take off \n");

   for(;;) { i2s_output->update();  }
}

/* Output:

I (5153) I2S: DMA Malloc info, datalen=blocksize=512, dma_buf_count=3
I (5153) I2S: DMA Malloc info, datalen=blocksize=512, dma_buf_count=3
I (5153) I2S: APLL: Req RATE: 48000, real rate: 47999.961, BITS: 16, CLKM: 1, BCK_M: 8, MCLK: 12287990.000, SCLK: 1535998.750000, diva: 1, divb: 0
I (5173) I2S: APLL: Req RATE: 48000, real rate: 47999.961, BITS: 16, CLKM: 1, BCK_M: 8, MCLK: 12287990.000, SCLK: 1535998.750000, diva: 1, divb: 0
i2s0:0 inputs:
-------------------------
        input: i2s0:0_left(0)
        input: i2s0:0_right(1)
-------------------------

OpenESS is ready to take off

*/

null output example

#include "ess.h"
#include "ess_platform.h"
#include "ess_output_module.h"
#include "ess_input_module.h"

void app_main() {
  ess_platform::Instance().create();

  ess_output_module* i2s_output = ess_platform::Instance().create_output(ESS_OUTPUT_GENERIC_I2S,
    std::string("ess_i2s_controller") );

  ess_input_module null_input("null_input");
  null_input.add_channel("null_left", ESS_AUDIO_CHANNEL_LEFT);
  null_input.add_channel("null_right", ESS_AUDIO_CHANNEL_RIGHT);

  std::cout << i2s_output << std::endl;


  i2s_output->connect(&null_input, ESS_AUDIO_CHANNEL_LEFT, ESS_AUDIO_CHANNEL_RIGHT);
  i2s_output->connect(&null_input, ESS_AUDIO_CHANNEL_RIGHT, ESS_AUDIO_CHANNEL_LEFT);

  std::cout << i2s_output << std::endl;

  std::cout << "OpenESS is ready to take off" << std::endl;

  for(;;) { i2s_output->update();  }
}
/* Output:

I (5153) I2S: DMA Malloc info, datalen=blocksize=512, dma_buf_count=3
I (5153) I2S: DMA Malloc info, datalen=blocksize=512, dma_buf_count=3
I (5153) I2S: APLL: Req RATE: 48000, real rate: 47999.961, BITS: 16, CLKM: 1, BCK_M: 8, MCLK: 12287990.000, SCLK: 1535998.750000, diva: 1, divb: 0
I (5173) I2S: APLL: Req RATE: 48000, real rate: 47999.961, BITS: 16, CLKM: 1, BCK_M: 8, MCLK: 12287990.000, SCLK: 1535998.750000, diva: 1, divb: 0
i2s0:0 inputs:
-------------------------
        input: i2s0:0_left(0)
        input: i2s0:0_right(1)
-------------------------
i2s0:0 inputs:
-------------------------
        input: i2s0:0_left(0) <- output: null_right(1)
        input: i2s0:0_right(1) <- output: null_left(0)
-------------------------

OpenESS is ready to take off

*/

_For more examples and usage, please refer to the Wiki

Current Features

Progressed features (when ready than version 0.9)

Planned features

Release History

Release History

Anna_Sophia Schröck

Anna_Sophia Schröck

rss facebook twitter github gitlab youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora