Modern vision of the development of a new DAW (such as Renoise 2.0)

For modern vision! I’d like you to use this thread solely for discussing these things. If possible, this could be truly helpful, even if it’s just a theoretical scenario. These “summaries” may help many composers better understand the complexity of programming software like a complete DAW, and not only that, but also adapting it to current times while maintaining a foundation of older software. The amount of code, trial and error testing, and research involved is enormous.

Obviously, I had to use AI tools for this. I’m wondering where things could go in new DAW developments like Renoise, in a hypothetical scenario of developing from scratch, with current hardware and software capabilities.

By the way, I forgot a crucial approach here, which would be “centralized MIDI control” (allowing the user to route a controlled number of controllers, for example, 32, and thus control almost all of Renoise with general routing). I suppose this should be focused on the MIDI 2.0 protocol.

The following points represent a correct path to follow, or are there more efficient and effective alternatives for designing this type of software? The discussion here focuses heavily on process queuing and related aspects related to audio, as well as the logical utilization of CPU and GPU resources (how to get the most out of everything currently available).

Rethinking DAW Architecture for Modern CPUs (and Beyond)

I’ve been looking into how DAWs like Renoise or others actually use the CPU, and why—even on powerful multi-core systems—they often don’t scale as well as expected. This post summarizes both how things currently work and what a “from-scratch” modern design could look like.


1. How DAWs Use the CPU Today

Modern DAWs process audio in small buffers (e.g. 64 samples). For each buffer, they:

  1. Traverse the audio graph (tracks, effects, routing)
  2. Process each node in order
  3. Output the result to the audio device

The key constraint is real-time deadlines. For example:

  • 64 samples at 48 kHz ≈ 1.3 ms
    All processing must finish within that time, or you get dropouts.

Where parallelism exists

  • Independent tracks can run on different threads
  • Some DAWs distribute tracks across cores

Where it breaks down

  • Effect chains are sequential (A → B → C must run in order)
  • Feedback loops force single-thread execution
  • The master bus becomes a synchronization point

So even on a 16-core CPU:

  • One core may be maxed out (critical path)
  • Others sit underused

2. The Core Problem: Dependencies

The real bottleneck isn’t “bad threading”—it’s dependency chains.

In any audio graph, there’s always a critical path (longest chain of dependent operations). That path determines total processing time, regardless of how many cores you have.

This is a classic parallel computing limitation (Amdahl’s Law).


3. A More Modern Approach: Task-Based Audio Engine

Instead of thinking:

“one track = one thread”

We can move to:

“audio as a graph of small tasks (jobs)”

Key ideas:

a) Audio as a DAG (Directed Acyclic Graph)

Each node (synth, effect, bus) is a unit with explicit dependencies.

b) Job system scheduler

  • Break processing into small tasks
  • Use a thread pool with work-stealing
  • Dynamically distribute load across cores

c) Wavefront parallelism

Process nodes in layers:

  • All nodes without dependencies → parallel
  • Then next layer → parallel
  • etc.

This keeps all cores busy instead of assigning fixed threads.


4. Real-Time vs Non-Real-Time Separation

One major limitation today is treating everything as equally “real-time”.

A better model:

Real-time domain (strict deadlines)

  • Live input
  • Monitoring chain
  • Low-latency effects

Deferred domain (relaxed timing)

  • Long reverbs
  • Analysis
  • Background rendering
  • Non-active tracks

This allows:

  • Better CPU utilization
  • Larger buffers where possible
  • Fewer dropouts

5. Hybrid Buffer Strategy

Instead of fixed buffer sizes:

  • Critical nodes → small buffers (e.g. 64 samples)
  • Non-critical nodes → large buffers (512–2048 samples)

This improves efficiency without affecting latency where it matters.


6. Smarter Scheduling (Critical Path First)

The engine can compute the “longest dependency chain” and prioritize those tasks.

Result:

  • Reduced risk of glitches
  • Better real-time stability

7. Parallel Mixing (Removing the Master Bottleneck)

Instead of summing everything sequentially:

  • Use tree-based reduction:

    • (A+B), (C+D), then combine results

This makes even the final mix parallelizable.


8. SIMD and Data-Oriented Design

Beyond multithreading:

  • Use SIMD (AVX, etc.) inside each task
  • Optimize memory layout for cache efficiency

This improves per-core performance significantly.


9. Extending to CPU + GPU

Once you have a task-based system:

  • CPU handles low-latency, sequential work

  • GPU can process:

    • Convolution reverbs
    • Spectral processing
    • Granular synthesis
    • AI-based tools

The scheduler decides where each task runs.


10. Integrating Lua (or Scripting) in a Modern DAW

A key question is how scripting systems (like Lua tools in Renoise) could fit into this architecture.

The problem

Lua (and similar scripting languages):

  • Are not thread-safe by default
  • Use garbage collection (non-deterministic pauses)
  • Are not suitable for real-time DSP processing

So running Lua directly in the audio thread is not viable.

The solution: decouple control from processing

Instead of using Lua for DSP, use it as a control and orchestration layer:

a) Lua defines behavior, not audio processing

  • Build/modify the audio graph
  • Schedule tasks
  • Control parameters and automation
  • Generate procedural musical logic

b) Sandboxed execution

  • Each tool runs in its own isolated state
  • Executed outside the real-time audio thread
  • Communicates via lock-free messaging or double buffering

c) Job system integration

Lua can:

  • Spawn background jobs (analysis, MIDI generation, etc.)
  • Interact with the engine’s task system

But heavy work is executed in:

  • Native code (C++/SIMD)
  • Or GPU kernels

d) Strict domain separation

Domain Lua allowed
Audio thread :cross_mark: No
Worker threads :warning: Limited
UI / logic :white_check_mark: Yes

Result

Lua becomes a kind of DSL (domain-specific language) for:

  • procedural composition
  • advanced automation
  • dynamic routing

While the actual audio processing remains fully parallel, deterministic, and real-time safe.


11. Why This Isn’t Standard Yet

  • Legacy plugin formats (VST/AU) aren’t designed for this
  • Real-time audio constraints are unforgiving
  • Complexity of scheduling + determinism
  • Backward compatibility requirements

12. Bottom Line

Current DAWs aren’t “badly optimized”—they’re constrained by:

  • Sequential DSP chains
  • Real-time deadlines
  • Old architectural assumptions

But a from-scratch design could:

  • Use a task-based graph engine
  • Fully exploit multi-core CPUs
  • Separate real-time and deferred processing
  • Integrate scripting (like Lua) safely as a control layer
  • Potentially leverage GPU acceleration

This wouldn’t be an incremental improvement—it would be a paradigm shift.


Curious to hear thoughts—especially from people working on DSP, engines, or plugin systems. Where do you see the biggest practical blockers?

Discussion Questions

  1. Do you think current DAW architectures are fundamentally limited by real-time constraints, or just by legacy design decisions?

  2. How much parallelism do you actually see in practice in tools like Renoise? Does it match what modern CPUs should be capable of?

  3. Would a fully task-based audio engine (instead of track-based threading) be viable in a real-world DAW?

  4. Where do you think the biggest bottleneck is today: CPU scheduling, plugin design, or audio graph structure?

  5. Could existing plugin standards (VST/AU) adapt to a task-based / heterogeneous system, or would a completely new format be required?

  6. How would you handle determinism and reproducibility in a highly parallel audio engine?

  7. Do you see a practical way to separate real-time and deferred processing without breaking workflow expectations?

  8. Would users accept a system that dynamically changes buffer sizes internally for efficiency?

  9. How could a tracker-style workflow (like Renoise) evolve within a graph-based engine without losing its precision and speed?

  10. What role should scripting (e.g. Lua) play in a next-generation DAW: UI only, orchestration, or something deeper?

  11. Is there any realistic way to safely integrate GPU processing into real-time audio, or is it inherently better suited for offline tasks?

  12. What lessons could DAWs borrow from game engines (job systems, schedulers, data-oriented design)?

  13. If you were to design a DAW from scratch today, what would you not keep from existing designs?

  14. And most importantly: do you think the complexity of such a system is justified by the potential performance gains?

:compass: Feasible Roadmap for a Modern Audio Engine (Hypothetical Small Team)

This outlines a realistic development plan for a hypothetical small team (1 lead developer + 2 part-time contributors) aiming to build a next-generation audio engine based on a task-based, graph-driven architecture rather than a traditional DAW.

The goal is not to build a commercial DAW, but a research-grade prototype audio engine that explores modern CPU parallelism, scheduling, and scripting integration.


:brick: Phase 0 — Core Design Definition (2–4 weeks)

The focus here is to strictly define scope and prevent overengineering.

  • Define internal data model:

    • Audio processing as a Directed Acyclic Graph (DAG)
  • Define execution unit:

    • “audio job” (small, independent processing task)
  • Define execution model:

    • thread pool + work stealing scheduler
  • Choose core technology:

    • C++ or Rust (C++ is more practical for audio ecosystem integration)
  • Explicitly exclude at this stage:

    • full VST host support
    • advanced UI
    • plugin ecosystem compatibility

:pushpin: Outcome:

A frozen technical specification and architecture blueprint


:gear: Phase 1 — Minimal Audio Engine (2–3 months)

Objective:

Achieve real-time audio playback with a minimal graph system.

  • Real-time audio callback (ASIO / CoreAudio / ALSA)

  • Basic graph engine:

    • oscillator/synth node
    • gain node
    • mixer node
  • Fixed buffer processing (64–128 samples)

  • Single-thread or minimal parallelism initially

:pushpin: Outcome:

A functional “hello world” audio engine


:brain: Phase 2 — Parallel Task Scheduler (3–5 months)

This is the core architectural innovation phase.

  • Convert audio graph into a DAG of jobs

  • Implement:

    • thread pool system
    • work-stealing scheduler
    • dependency resolution system
  • Introduce:

    • critical path prioritization
  • Add profiling tools for real-world performance measurement

:pushpin: Outcome:

Fully multi-core capable audio processing engine


:puzzle_piece: Phase 3 — Scripting Integration (Lua or equivalent) (2–3 months)

Introduce a scripting layer for orchestration and control.

  • Sandboxed scripting environment per instance

  • Message-based communication (no shared memory in real-time domain)

  • API capabilities:

    • create/modify audio nodes
    • control graph structure
    • schedule background tasks
  • Strict limitation:

    • no DSP processing inside scripting layer

:pushpin: Outcome:

A flexible orchestration layer for dynamic audio graph control


:control_knobs: Phase 4 — Minimal UI Prototype (2–4 months)

Not a full DAW interface, only a functional research UI:

  • Graph visualization (nodes + connections)
  • Simple transport controls (play/stop)
  • Basic parameter control system
  • Optional simplified tracker-style view

:pushpin: Outcome:

Usable interactive prototype for testing engine behavior


:rocket: Phase 5 — Advanced Optimization Layer (3–6 months)

Focus on performance engineering:

  • SIMD optimization (AVX2/AVX-512)
  • Lock-free data structures tuning
  • Cache-efficient buffer management
  • Hybrid buffer size strategy (adaptive processing blocks)
  • Advanced latency profiling tools

:pushpin: Outcome:

High-performance, production-grade audio core


:cloud: Phase 6 (Optional) — GPU / Advanced DSP Integration (indefinite)

Only after CPU engine stability:

  • GPU-based convolution processing
  • Spectral / batch DSP operations
  • Offline rendering pipeline
  • Hybrid CPU/GPU task scheduling

:pushpin: Outcome:

Experimental heterogeneous compute audio engine


:stopwatch: Realistic Time Estimates

:small_blue_diamond: Minimal viable research engine (MVP)

:backhand_index_pointing_right: 6–9 months

  • basic audio graph
  • simple scheduler
  • scripting integration
  • minimal UI

:small_blue_diamond: Functional research DAW prototype

:backhand_index_pointing_right: 12–18 months

  • stable multi-core scheduler
  • Lua-based orchestration
  • usable UI prototype
  • profiling and optimization layer

:small_blue_diamond: Advanced experimental system

:backhand_index_pointing_right: 18–30+ months

Only achievable if scope expands to include:

  • plugin ecosystem support
  • full UI/UX polish
  • external compatibility layers

:warning: Practical Constraints

Key challenges in such a system are not purely computational:

  • Plugin ecosystem complexity (e.g. VST/AU standards)
  • Real-time determinism requirements
  • Multi-thread debugging complexity
  • UI development often dominating total workload
  • Audio edge cases in real-time scheduling

:brain: Conclusion

This type of system is not intended to compete with established DAWs such as Ableton Live or FL Studio.

Instead, it represents a research-oriented architecture exploration focused on:

  • task-based audio computation
  • full multi-core CPU utilization
  • separation of real-time and deferred processing
  • scripting as a control layer rather than DSP execution
  • potential future hybrid CPU/GPU audio systems

The most realistic outcome is not a commercial DAW, but a proof-of-concept engine that could influence next-generation audio software design.

3 Likes

New DAWn fades..

Idk, the existing daws are good enough, if people would just make music, then again there is already enough music omho.

How did they make operas back in 19th century without daws it’s crazy, they must have had talent, dedication and energy or something, I sampled an amen, choped and threw some 808 kick on one, my days work is done.

Rest of thr day I will spend bitching about minor opinion differences on various online platforms :wink:

Id pay for a mini daw that emulates look, feel and limitations of 4track casette multitracks.

Almost no visual feedback, you get what you do, some tape saturation emulation.

Also could use it as VST.

2 Likes

This is actually a cool idea. Try to imagine there are multiple gadgets floating on the screen connecting together and jamming it like a real hardware. Behinds these gadgets, there is no daw interface but your desktop screen unless you add a gadget onto the your screen and link a wire between the gadgets.

1 Like

Ah, a but like early Reason and Rack VCV.. Yeah, why not, connect virtual guitar pedals, route send return cables.

Tho I want something even more simple and lightweight straight forward like early Winamp, just start it and there it goes.

Ok, it could have 8 tracks, but that’s it, no more. Could have some built in typical efx like chorus, delay, reverb, flanger, vibrato for inserts and masters, perhaps some built in drive and fuzz, compressor for master.

One could use it as VST\i if one wants to finalise the recorded tracks in a serious daw.

Just so you know there is something out there very similar to this idea,it’s brand new I think it’s called tape 16 or something

1 Like

Here TAPE DAW | TAPE 16 Tape Machine DAW for Modern Music Production

Yes, I like it! No Undo as a feature! We have gone a full circle as civilisation :smiley:

It seems to be a resource hog and does not manage to record anything on my setup unfortunately. Yo, I don’t need anti-aliased animated scalable ui fonts, textures and animated tape reels - it’s silly. Everything worked fine in 2012 without all that cheezum. People recorded like albums on way less - what’s wrong with the world! Lol haha :smiley: :smiley:


I want this but 4 track

1 Like

You mean like Plogue Bidule?… There’s a ton of good audio soft, these days alotta bad LUA… I still use old Reason 2.5-3.0 & the efficiency is heart pounding… Reason 2.5 had the best demo tunes ever done as well… No need ever for track bouncing there was none in it anyway & this is running on old computers not ‘modern’… I think OP should’ve been more concise about what is being disgust here…

  1. How much parallelism do you actually see in practice in tools like Renoise? Does it match what modern CPUs should be capable of?

In generally for Renoise to few! But it may be strong depending on your prefered work scenario. More sample oriented, or more VST oriented. In my personal scenario the most CPU Usage comes from VST’s. They bring my CPU Utilisation to the max. But i dont know if my setup is representable for usership, because my CPU is a 15 years old I7-2600K Sandy Bridge (2. Generation)

  1. Where do you think the biggest bottleneck is today: CPU scheduling, plugin design, or audio graph structure?

I think its Plugin design for CPU utilisation and CPU sheduling on DAWs. I don’t know the internal coding mechanism of Renoise, but maybe a accessing an bounding VST’s Sandbox processes to different CPU cores would be help much. But then it shows up Questions of syncronisations of these sandboxes. At least for complex FX chains. So i not really know this is a practicable way.

  1. How could a tracker-style workflow (like Renoise) evolve within a graph-based engine without losing its precision and speed?

Pixelscrolling for the Pattern area would be nice from ergonomic standpoint, but it need good implementation to hold the CPU time cost low.

For a nextgen Tracker UI i would prefer a easier Pattern workflow. The Drag & Drop of Note OFF’s in Renoise is a pain, because often the selection & drag action not working properly for me. The selected Note OFF line will be deselected when i click on it to drag operation. Better would i vertical line visualisation from Note START to Note OFF in the Track Note Column and a extra exclusiv grip on the end of this line or on the Note OFF for easy change the single Notes lenghts.

It should able to visual audio samples and complete long audio tracks vertical along Tracks Pattern Area with ability to stretch/condense Audio content on every point to syncronize word siblings to Note infomation easy. This would be the heaven on earth for every remixer.

  1. Is there any realistic way to safely integrate GPU processing into real-time audio, or is it inherently better suited for offline tasks?

It remains to be hoped. GPU measurement can save a lot of expensive CPU Time which is needed for syncronising things and free for other things. And GPU algorithmens are often by orders of magnitude faster and more efficiently.

For the rest of you technical questions i’m not enouph into audio programming. But thx for the very interesting post and your thoughs to this thematics! Nerver change a running system, but technological standstill is the death for every software project.

happy tracking :slight_smile:

1 Like

Let’s see if I can effectively describe the idea behind this thread. This isn’t coming from someone who’s dissatisfied with anything. It’s more about considering where the current limitations lie and understanding what a new project of this scale would look like today. It is a purely educational matter, about learning, interest, and knowledge…

Regarding the GPU, my understanding is that it works with much larger data packages than the CPU, and while the CPU handles small packages very well in the audio realm, the GPU doesn’t. Let’s say the GPU could perform well in AI tasks, real-time post-processing tasks like loading a lot of data at once, and things like that, but not the raw audio itself in real time. This would free up CPU resources because it wouldn’t be doing everything.

The goal is to optimize the software so that all current hardware resources can work in a synchronized way, resulting in better overall performance.

The idea is clear; no one is complaining about anything. It’s simply a way to discuss programming concepts so that not only I, but we all, can understand the complexity of this type of software. For example, Renoise has over 1 million lines of code. Do we have a clear idea of ​​what’s under the hood? How expensive a new project would be? The maintenance? The base changes?

It’s fine to talk theoretically and consider hypothetical scenarios to analyze things, always from a constructive and learning perspective. I’m personally interested in knowing how everything is programmed and gaining a more general understanding of how a project of this scale is carried out.

I’m very interested in the feasibility aspect, and the time and resources required to carry out these things. It would be great if composers had a better understanding of what they’re using, and perhaps that would allow them to use it more effectively…

2 Likes

There’s another way to explain this.

Don’t composers study music theory and refine their composition techniques to achieve better results with their music?

Well, in the world of software programming, it’s exactly the same. Finding the most efficient ways to achieve results. I think that’s the approach. It’s not about focusing on making music because something already works remarkably well. Some of us are interested in composing music and also in programming, and also in understanding how it all works. Knowing a little about how programming works can help a composer compose better. Perhaps it could help in that way as well.

You’re not going to know “ a little about how programming works” by using AI or posting reams of bullshit that your LLM of choice generated for you.

What were you hoping for here?

1 Like

I think the OP already knows a LOT about how programming works. AI or not dude.

No doubt, but he brought it up and I am at peak “fuck AI and every single person who boosts AI for free”. Absolutely sick to my bollocks of hearing about it.

1 Like

AI is here. People use it. You don’t have to. Js :man_shrugging:t5:

But either way the OP had some very good points.

A while back the developer mentioned that the source code for Renoise was pretty much legacy code that instead of being rewritten was essentially “patched” with each update. Which is actually pretty impressive considering how well this program runs IMO.

Don’t quote me on that, but that was my understanding.

I’m just a script kitty but something tells me that’s going to always be a major hurdle when it comes to modernization.

Nothing about AI is inevitable. And if it was a simple as some people like it and use it and I don’t have to, that would be fine, but it’s fucking everywhere. Copilot in Notepad… FML. It is being aggressively pushed, if I could just ignore it I would, but it is impossible if you interact with technology at all.

For now it is being heavily subsidised, as soon as the AI labs need to charge what it costs to provide, plus enough to pay off debt/investors plus enough for a bit of profit it will rapidly become the preserve of the rich and enterprise clientele only.

Rather than let AI loose on the code, just vibe code yourself the tracker of your dreams. If I found out @taktik had used AI to code a future release I would delete Renoise immediately and investigate the viability of putting voodoo curse on him and all his descendants lol.

Time is so precious that it cannot be bought with money. I’m very sorry to say this, but unless it’s a matter of great importance, I think it’s best to refrain from mentioning the developer.
It seems likely that he will simply receive the notification, review the comment, and choose not to respond—but that will still waste a few minutes of his time.