Skip to content

sebbekarlsson/akit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Akit (Audio kit)

3D Audio engine for Linux

Dependencies

Currently, the only driver supported is alsa.

Example usage

#include <akit/engine.h>

int main(int argc, char* argv[]) {
  // setup configuration
  AkitDriverConfig config = {0};
  config.sample_rate = 44100;
  config.frame_length = 512;
  config.type = AKIT_DRIVER_TYPE_ASOUND;

  // initialize engine
  AkitEngine engine = {0};
  akit_engine_init(&engine, (AkitEngineConfig){.driver_config = config,
                                               .max_sounds = 10,
                                               .normalize_stereo = true});
											   
  // update or set where listener is
  akit_engine_set_listener(&engine, (AkitListener){.forward = VEC3(0, 0, 1),
                                                   .up = VEC3(0, 1, 0),
                                                   .position = VEC3(0, 0, 0)});
  
  // start engine
  akit_engine_start(&engine);
  
 
  // emit sound
  akit_engine_push_sound(&engine, (AkitSound){
    .data = wav.data, // raw data from wav file
    .length = wav.length,
    .sample_rate = wav.header.sample_rate,
    .position = VEC3(16.0f, 0.0f, 1.0f),  // position where sound is supposed to origin
    .duration = fmax(wav.duration, 0.5f),
    .channels = wav.header.channels,
    .block_align = wav.header.block_align,
    .gain = 1.0f // gain (0 to 1)
  });
 
  // wait for engine to finish playing audio
  while (akit_engine_is_playing(&engine)) {
    akit_msleep(10);
  }
  
  // stop and destroy engine
  akit_engine_stop(&engine);
  akit_engine_destroy(&engine);

  return 0;
}

About

3D audio engine

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors