/CASL

Cross-platform library for playing and dealing with sounds.

Primary LanguageC#MIT LicenseMIT


CASL

codecov BuildFFFF Contributor Covenant

nuget-package

Pronounced Castle, CASL is an acronym for (C)ross-platform (A)udio and (S)ound (L)ibrary

CASL is a simplistic cross-platform, .NET library for playing and managing sounds powered by OpenAL 1.1 using software rendering. This is accomplished by using low level bindings to the native OpenAL library.

This can be used for applications such as video games, sound players, and works on any .NET 5.0 compliant platform.

Features

!!NOTE!!

This library is still under development and has not been ran or tested under any other environments except windows. The goal is to get this to run on multiple platforms

Audio Formats

Currently this library can play .ogg and .mp3 file formats. There are plans to support .wav files in the future as well as other possible sound formats.

Cross-Platform

We strive for CASL to be a cross platform library by running under .NET v5.0. There are plans for this library to continually be updated as we approach .NET 6.0 and beyond.

Maintainers

We currently have the following maintainers:

Building And Dev Environment Setup

  1. Click here for instructions on development and environment setup for windows.

  2. Click here for instructions on development and environment setup for linux.

    • NOTE: Still in development and might not work

Contributing

CASL encourages and uses Early Pull Requests. Please don't wait until you're finished with your work before creating a PR.

  1. We use a simple branching strategy that has 5 branches
    • master - This is is a long living branch for the purpose of stable production versions of the library. Stable nuget packages are created from this branch.
    • develop - This branch holds the current development work being produced for an upcoming release
    • feature/my-features - This branch is where development work will be performed and will be merged into the develop or release branches via pull requests. When this is created from the develop branch, this will only be merged back into the develop branch for fixing bugs or adding new features. When created from a release branch, it will only be merged back into the release branch. PR's tagged with pre-release will be used to make it easy to know that the feature branch's purpose is for making changes to a pre-release.
    • release/v1.2.3 - This branch is created from the develop branch to encompass a number of features that could be released to production and is where extensive testing will occur before a release. Pre-release nuget packages will be created from this branch until deemed to be ready for a production release. Once ready, this branch gets merged into the master branch which then creates a stable production release of the library. This will also get merged into the develop branch to update current development and merge conflicts resolved.
  2. Fork the CASL repository
  3. Add an empty commit to a new branch to start your work off: git commit --allow-empty -m "start of [thing you're working on]"
  4. Once you've pushed a commit, open a draft pull request. Do this before you actually start working.
  5. Make your commits in small, incremental steps with clear descriptions.
  6. All unit tests must pass before a PR will be completed.
  7. Make sure that code follows the project set coding standards.
  8. Tag a maintainer when you're done and ask for a review!

Branching Diagram

Practices

  1. The code base is highly tested using unit testing with a high level of code coverage. When contributing, make sure to add or adjust the unit tests appropriately regarding your changes.
  2. We use a combination of StyleCop and Microsoft.CodeAnalysis.NetAnalyzers libraries for maintaining coding standards.
    • We understand that there are some exceptions to the rule and not all coding standards fit every situation. In these scenarios, contact a maintainer and lets discuss it!! Warnings can always be suppressed if need be.

Further Resources

  • A sample project CASLTesting can be found in the Testing Folder
    • This project serves the purpose of a sample project as well as a simple way to do manual testing of the library
  • Goto OpenAL for more information and documentation.
  • Checkout NVorbis for dealing with .ogg data.
  • Checkout MP3Sharp for dealing with .mp3 data.
  • Checkout OpenTK and Silk.NET for great examples on how to deal with native library interop.

Licensing And Governance

CASL is distributed under the very permissive MIT license and all dependencies are distributed under MIT-compatible licenses. This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community.