Skip to content

smdsbz/doh

Repository files navigation

doh

NOTICE

Since Huawei just officially announced system support for MIDI devices in API24, I recon Huawei is likely building their own DAW. So I decided to halt the development of this project and disclose it for anyone's reference who is still falling down this rabit hole. Good luck to y'all and hopefully I can get my hands on the first "GarageBand" on HarmonyOS soon (without having to give up my own one-hour-after-work)!

doh is a DAW (Digital Audio Workstation) for HarmonyOS Next. It is intended to be a musical software covering casual music creation, software synthsizer, transcription utility to semi-professional music production, providing low-latency playback, native MIDI support and an easy-to-use interface, just like GarageBand for i-devices.

NOTE

This project is currently in its very early stage, close to proof-of-concept, far from a minimal viable product. Expect bugs, crashes, limited audio file format support (currently only 48k 16bit WAV is supported) and breaking changes.

Core Visions

  • doh is expected to take advantage of the Huawei Nearlink technology to provide professional grade low-latency wireless audio solution for everyone wanting to freely express their music without towing a cable nor spending a fortune
  • doh will possiblly support AI content generation for the less musical folks, pushing music creation to those with taste but less agile fingers

Development

Agentic development

This project is expected to be agent-friendly as it provides an AGENTS.md and an AI-generated repo wiki. Happy vibing!

Special thanks to:

Design

Workspace

Design goals

  • Renaming should be trivial, it should not invalidate in-memory metadata or handlers.

    ==> Always prefer UUID over legible names.

  • Treat assets and resources as archives, never invalidate any original information unless the user tell us to do so.

Project folder structure
<project_name>.doh-proj                         # project workspace folder
    |                                           # project name cannot be changed once created
    |
    |-- project.json                            # entry manifest file to index all project files
    |
    |-- imported/                               # imported resources
    |       |-- <an_imported_audio_clip>.wav    # files are imported as is
    |       `-- <an_imported_midi_clip>.mid
    |
    |-- tracks/                                 # tracks stored by their uuid
    |       |
    |       |-- xxxx-xxxx/                      # example sound sample track
    |       |       |-- track.json              # manifest for a track
    |
    |-- pipelines/                              # processing / routing pipelines
    |
    |-- cache/                                  # everything in the cache folder should be rebuildable
    |       `-- xxxx-xxxx.wav                   # e.g. resampled imported clip as pcm-based sound file
    |
    ...
Manifest schema

See doh-project/constants.h.

About

A DAW on HarmonyOS.

Resources

License

Stars

2 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors