Skip to content

Latest commit

 

History

160 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Delay Lama Logo

Delay Lama Recreation

Unit Tests GitHub contributors GitHub commit activity GitHub last commit

reccmp progress


This is an open source recreation of Delay Lama. A plugin that was originally released in 2002 by AudioNerdz.

I recently learned that DAWs (like Cubase and Ableton) are phasing https://jor02.github.io/DelayLama/progress.htmlout support for 32-bit plugins (when my friend tried using this plugin in Cubase), and since the original Delay Lama only has a 32-bit build available this would mean that this plugin also no longer would be supported. So I decided to try to reverse engineer it to hopefully be able to make a 64-bit version of the original plugin. With this project I am aiming to update one of my favorite audio synthesizers to support modern DAW's by using "clean-room" reverse engineering (basically meaning, I am not using any public or leaked code for my code) to be able to create modern 64-bit version of it.

Alternative Project: MonkSynth

I just found out that JonET coincidentally launched another open-source recreation called MonkSynth exactly 4 days before I created this repository.

Their version is more complete and functional than my current project. If you need an operational 64-bit plugin for your DAW right now, use MonkSynth. This repository will still continue to focus on clean-room reverse engineering and binary accuracy. Credit to JonET for also preserving the plugin.

Goal

The goal is a 1:1 functional recreation of the original plugin, that has all the same features, looks and feels the same, and hopefully also sounds exactly the same.

My motivation

I've loved this plugin ever since I first found out about it in some random youtube video, but unfortunately delay lama is slowly getting less and less supported by existing DAWs. So because of that, and because I've been wanting to get into reverse engineering for ages now, I decided I would try creating a faithul open-source recreation of my favorite audio synthesizer.

Current Limitations

As a note of warning, quite a few of the member/variable names in the DelayLamaAudio class are currently generated by LLMs, meaning that their names might currently not fully reflect their actual behavior or functionality. I'll rename these members later once I get a better understanding of the working of the binary.

Development Roadmap

  • Fully annotate all functions in the original binary using Ghidra.
  • Turn the ghidra findings and functions into actual C++ code.
  • Get a fully working 32-bit build. (Actually getting pretty close to this, though the current version isn't very accurate)
  • Clean up source code to improve the maintainability and readablitiy of the codebase, without changing the functionality.
  • Hopefully get a 64-bit build of Delay Lama working.
  • And lastly, if at all possible, get the project to compile to a fully byte accurate binary that 100% matches the original dll. (I've already added Reccmp to help showing the current progress)

I think it'd also be fun to make a very accurate 3D model of the Monk himself and his environment as a Blend file, but I haven't yet decided If I actually wanna do that.

DamSDK

Because I want this to be not be using any proprietary and deprecated frameworks, this project is built hand in hand with DamSDK.

DamSDK is a custom, VST-compatible plugin interface I am developing specifically for this project. It give the plugin the interface with existing plugin hosts and basically contains the interface parts and some gui parts of the original Delay Lama.

Repository Structure

DelayLama/
├── src/                    # Source code for the recreation
├── docs/                   # Reverse engineering analysis and documentation
│   ├── analysis.md         # Overall project analysis
│   ├── class-analysis.md   # Class structure analysis
│   └── function_map.json   # Map of all functions in the binary, categorized by class and namespace
├── original/               # Original plugin files for reference
│   ├── decomp/             # Contains unprocessed headers directly exported from Ghidra. 
│   └── docs/               # Original documentation, manual, screenshots fom AudioNerdz
└── build/                  # Build output directory (created during compilation)

Prerequisites

  • Cmake
  • Other than that not yet determined

Build Instructions

cmake -B build -A Win32 cmake --build build --config Release

  • (more build instructions will come later when the build process is less crappy)

Documentation

Licensing

Unless otherwise noted, the source code in this repository is licensed under the MIT License.

The recreated assets contained in assets/reconstructed/ are licensed separately under the Creative Commons Attribution 4.0 International (CC BY 4.0) license. See assets/reconstructed/README.md and the accompanying LICENSE file in that directory for details.

Legal Notes

This is a reverse engineering project for educational and historical preservation purposes. Delay Lama is a product of AudioNerdz. This project is not affiliated with or endorsed by AudioNerdz.

The original VST 2.4 SDK is no longer publicly distributed by Steinberg. This project utilizes my DamSDK alternative to handle host communication, ensuring the project remains open-source and distributable without infringing on restricted SDK licenses.

About

An attempt at reverse engineering the Delay Lama synthesizer.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages