Crate cybergrape

source ·
Expand description

CyberGrape consists of a system of tactile blocks that represent audio sources, or audio blocks, that track their angle and movement relative to a central block, called the listener block. As audio blocks and the listener block move relative to each other, their relative angles are recorded. A software pipeline should be able to either encode the streamed positional data into a well-defined serialization format or create spatial audio directly using user-provided audio data.

This is the host-side software that makes all of that happen, to see the embedded software, take a look at this GitHub repository.

You can find our final report in this documentation site.

This is the 2023/2024 senior capstone project for Team CyberGrape, which is comprised of Ayda Aricanli, Skylar Gilfeather, Liam Strand, and Tyler Thompson.

Modules§

  • Command line argument parser using clap for CyberGrape
  • Defines the Component trait, which was going to be used by each CyberGrape processing module.
  • A dummy implementation of a HardwareDataManager that pretends that there is a static circle of sound sources around the listener
  • The various functions and utilities that wrap around ratatui to make our project look nice.
  • An interface definition for the hardware/software barrier.
  • A combinator parser built with nom that reads u-blox events.
  • The thread-safe buffer where we will store UUDFEvents from the antennas.
  • A wrapper for the hound library that writes binauralized audio to the user-speciifed output file.
  • Converts radial points into cartesian points
  • Our final report for the CyberGrape project
  • A safe api into the Spatial Audio Framework.
  • saf_raw 🔒
    This module places unsafe SAF rust bindings in the crate under their own namespace.
  • This module provides an API to read and write GrapeFiles, a file format developed to contain spatial data in the time domain. The files have the following structure:
  • The system for converting readings from two antenna into one spherical coordinate.
  • Where we store our time-domain spatial data.
  • Stores the most recent Update for any given source/destination pair.

Structs§

Traits§