Skip to content

krisvers/klatr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

klatr

setup

design principles

  • the cpu-side of the project should be as uninteresting as possible: just a solid base for management

roadmap

  1. initial project decisions
    • language: C++
      • version: 2014
      • coding style:
        • PascalCase for types and namespaced enum values
        • camelCase for functions/methods
        • all primitive types should be from with "std::" omitted
          • (exception) floating point types should stick to float or double
        • all enums should be backed by a int32_t
        • all functions should return either bool for success/failure, pointer to constructed object (where nullptr is failure) or void if status is irrelevant
        • avoid inheritance
        • stick to data in structures and regular functions that operate on data
        • the rest can be assumed from the repo's code
      • build system: meson
    • api selection: Vulkan
      • for more info (version, extensions, features, ...) see VULKAN.md
    • audio backend(s): Miniaudio and if necessary later, platform-specific backends
    • shader tooling: SPIR-V first, but other languages planned (see VULKAN.md)

libraries/dependencies

  • Vulkan loader (of course)
    • on macOS, it would be possible to prefer KosmicKrisp over MoltenVK if available (better Vulkan support on top of Metal 4)
  • SDL3 (windowing, input, platform abstraction)
  • Miniaudio (for simple audio API)
  • Dear ImGUI (simple immediate mode UI)
  • Vulkan Memory Allocator (GPU memory allocation management)
  • json (nlohmann/json) (for ease of use when managing processors and save data)

About

GPU-based DAW using Vulkan

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors