Introduction
Welcome to the official documentation for LETsDAW, a Digital Audio Workstation directly in your browser!
This manual was created to help you understand and make the most of all the features LETsDAW offers. Here you will find detailed explanations about the interface, workflows, functionalities, and the technical aspects behind the project.
Our goal is to provide a powerful and accessible tool for music creation and audio processing, without the need for complex installations. Explore, create, and most importantly, have fun!
Project Overview
LETsDAW is a web application designed to offer a complete audio production experience in the browser. It allows loading up to 16 audio tracks (for now), applying real-time effects (EQ, Compressor, VSM plugins), performing multitrack recordings, managing sessions, and exporting the finished work.
The heart of the audio processing is Csound, a powerful sound programming language, executed via WebAssembly to ensure performance and compatibility. The user interface is built with HTML, CSS, and JavaScript, focusing on an intuitive and responsive experience.
Main Technologies:
- Frontend: HTML5, CSS3, JavaScript (modular)
- Audio Engine: Csound (via WebAssembly with @csound/browser)
- Audio Visualization: WaveSurfer.js
- MP3 Rendering (Export): LameJS (via cdn)
Minimum System Requirements and Recommendations
For a satisfactory experience with LETsDAW, we recommend that your system meets the following specifications. Although the application may work on lower configurations, performance, especially with multiple channels and effects, may be impacted.
General Recommendations:
- Modern Browser:
- Recommended: Latest versions of Google Chrome, Mozilla Firefox, or Microsoft Edge. These browsers generally offer the best support for WebAssembly and Web Audio API, crucial technologies for LETsDAW.
- Avoid outdated browsers or those with limited support for modern web technologies.
- Operating System:
- Desktop: Windows 10 (or higher), macOS 10.13 (High Sierra) (or higher), modern Linux distributions (e.g., Ubuntu 20.04+, Fedora 34+).
- The application is not primarily designed for mobile devices (smartphones/tablets) due to processing demands and interface.
- Processor (CPU):
- Recommended: Multi-core processor (Quad-core or higher) with a clock speed of 2.0 GHz or faster (e.g., Intel Core i5/i7/i9, AMD Ryzen 5/7/9 of recent generations).
- Minimum: Modern dual-core processor. Performance with Csound and multiple real-time effects is CPU-intensive.
- RAM Memory:
- Recommended: 16 GB or more. Essential for managing multiple audio files (AudioBuffers), the Csound instance, and the browser itself.
- Minimum: 8 GB. With less, you may experience slowness when loading many tracks or using complex VSM plugins.
- Internet Connection:
- Necessary to load the application and its libraries initially.
- Not critically necessary for real-time audio processing after full loading, but a stable connection is always welcome.
- Audio Interface (Sound Card):
- Highly Recommended: A dedicated external audio interface (USB/Thunderbolt) for better sound quality, lower latency (especially for recording and monitoring), and multiple inputs/outputs.
- Minimum: Onboard computer sound card, but be aware of potential latency and input quality limitations.
- Screen Resolution:
- Recommended: 1920x1080 (Full HD) or higher to comfortably view all sections of the interface.
- Minimum: 1366x768, but some parts of the interface may become cramped or require scrolling.
- Disk Space:
- Sufficient for the audio files you intend to use and for saved sessions/exports. Audio files can be large.
Additional Considerations:
- Browser Performance: Closing other heavy tabs and applications on your computer can free up resources and improve LETsDAW's performance.
- VSM Plugins: More complex VSM plugins (with many Csound opcodes) will consume more CPU. Monitor the LETsDAW memory meter.
- Recording Latency: The quality of your audio interface and your system/browser settings will influence latency. Use the "Recording Latency Compensation" feature in Audio Settings to help align your recordings.
Remember that these are recommendations. Actual performance may vary depending on the complexity of your session (number of tracks, effects, plugins) and the specifics of your hardware and software.
User Interface
The LETsDAW interface was designed to be familiar to those who have used other DAWs, but also accessible to new users. Below, we describe the main sections.
Basic Controls (Transport)
Located at the top, here you will find:
- Load & Process: Button to load selected audio files on the tracks into the Csound engine and prepare them for playback/processing. Enabled when there are new files to process.
- Play/Pause: Starts or pauses session playback.
- Stop: Stops playback and returns the cursor to the beginning (or to the last stop position, depending on future configuration).
- Record (Global): Main button to start and stop multitrack recording on "armed" tracks.
- Time Counter: Displays the current playback time in HH:MM:SS.mmm format.
- RMS Meters (Master): A pair of horizontal meters showing the RMS level of the left and right master output channels.
- Memory Meter: Displays JavaScript memory usage by the browser, useful for monitoring performance.
- Pre-Roll: Allows setting a countdown time (in seconds) before recording actually starts.
- Settings (Gear Icon): Opens the Audio Settings modal, where you can select input/output devices and adjust latency compensation.
- DOC (This Link): Opens this documentation page.
Session Panel
Allows you to manage your work session:
- Session Name: Field to name your current session. This name is used when exporting the session.
- Status: Displays informational messages about the current state of the application (e.g., "Initializing...", "Playing...", "Recording...").
- Import Session: Opens a file selector to load a previously saved LETsDAW project (
.mix
files).
- Export Session: Saves the current state of your session (audio files, parameters, loaded plugins) into a
.mix
file, allowing you to continue work later or on another machine.
Tracks Area
The heart of the DAW, where you interact with your 16 audio tracks.
Each track has the following elements (from left to right):
- Inline Controls:
- M (Mute): Silences the track.
- S (Solo): Silences all other tracks, except those that are "soloed".
- R (Record Arm): "Arms" the track for recording. When the Global Record button is pressed, only armed tracks will record audio from their selected inputs.
- Pan Knob: A horizontal fader to adjust the track's panorama (stereo left/right position).
- FX Button: Opens a modal to edit the channel's insert effects (Equalizer, Compressor, and VSM Plugin Slots).
- AUX Button: Opens a modal to adjust the track's send levels to global auxiliary processors (Reverb and Delay).
- Input Channel Selector (Input Ch.): Allows selecting which channel of your connected audio interface will be recorded on this track when it is armed. (e.g., "Input 1", "Input 2", etc.).
- Volume Control and VU Meter:
- Vertical Volume Fader: Controls the main volume of the track. A numerical display above shows the value in dB.
- Vertical VU Meter (Recording/Playback): This multifunctional meter shows:
- Green: Input level when the track is armed (Record Arm).
- Blue: Playback level of the track when not armed and playback is active.
- May change color to yellow/red to indicate clipping in the input signal.
- Track Content (Upload/Waveform):
- "Load audio file" Button: Allows loading an audio file (WAV, MP3, etc.) to the track. When loaded, the file name and size are displayed.
- Trash Bin Button (Delete): Appears after an audio file is loaded, allowing removal of the audio from the track.
- File Information: Displays the name and/or size of the loaded file.
- Auxiliary Output Controls:
- Send Value Display: Shows the send level to the selected auxiliary output.
- Auxiliary Send Volume Fader (Vertical): Controls the signal level sent from this track to the auxiliary output selected below.
- Auxiliary Output Selector: Allows routing the signal of this track (usually post-main volume fader) to a pair of physical outputs of an audio interface configured as "Auxiliary Output Device" in Audio Settings. Useful for creating separate headphone mixes, sending to external processors, etc. By default, sends to "Master" (no discrete auxiliary send).
Meters (RMS, LUFS, Peak)
Located below the basic controls, they provide visual feedback on the master output audio levels:
- LUFS:
- Short-Term: Short-term loudness.
- Momentary: Momentary loudness.
- Integrated: Loudness integrated over time (can be reset with the "Reset" button). Important for assessing the overall perceived volume of the mix, targeting streaming standards.
- dBTP (True Peak): Shows the true peak level, including inter-sample peaks. Essential for avoiding digital clipping in D/A conversion.
- RMS (Master): Displays the RMS (Root Mean Square) level of the master output (same as the horizontal meters in the transport panel).
Master/Aux Effects Panel
This section controls global effects and the master gain fader.
- Reverb (Aux 1):
- Size: Controls the perceived size of the reverb environment.
- Dry/Wet: Adjusts the mix between the original signal (dry) and the reverb-processed signal (wet) returning from the send.
- Delay (Aux 2):
- Feedback: Controls the amount of delay repetitions.
- Beat Div: Sets the rhythmic division of the delay time in relation to "Tempo (BPM)".
- Tempo (BPM): Sets the base tempo for the delay (beats per minute).
- Dry/Wet: Adjusts the mix between the original signal (dry) and the delayed signal (wet) returning from the send.
- Master Insert:
- Has 3 slots to load VSM plugins that will process all audio from the master output.
- Each slot has buttons for:
- Load VSM Plug-in: Loads a
.vsm
file. The plugin name will appear on the button after loading.
- View (Eye Icon): Opens the graphical interface of the loaded VSM plugin (if it has one).
- Bypass (Lock/Power Icon): Activates/deactivates plugin processing in the slot. The icon image changes to indicate the state.
- Master Param Knobs: If the VSM plugin loaded in the Master Insert exposes generic parameters (master_p1, master_p2, etc.), they will appear here as knobs. (Currently, the VSM plugin interface loaded via "View" is the main control method).
- Master Gain:
- A vertical fader that controls the final volume of the entire mix before it is sent to the meters and the browser's audio output.
- A numerical display below shows the value in dB.
Export Controls
Allows rendering your final mix:
- Export Format: Choose between WAV (44.1kHz/16bit) or MP3 (320kbps).
- File Name: Define the name for the exported audio file.
- Export Audio: Starts the process of rendering your mix to an audio file in the selected format and name.
- Progress Bar and Status: Display the export progress.
Edit Modals (FX/AUX)
Floating windows that allow for more detailed control.
- Channel Effects Modal (FX):
- Accessed by the "FX" button on each track.
- Contains sections for:
- Equalizer: High-Pass (HPF) and Low-Pass (LPF) filters, and 3 bands of parametric EQ (Frequency, Gain, Q). Each section (filters, EQ, Compressor) has its own Bypass button.
- Compressor: Controls for Threshold, Ratio, Attack, Release, and Makeup Gain.
- Plugin Inserts (3 Slots): Similar to the Master Insert, allows loading up to 3 VSM plugins specific to processing the audio of that channel only. Each slot has "Load", "View", and "Bypass" buttons. Parameters exposed by the channel VSM plugin may appear below the slot.
- Aux Sends Modal:
- Accessed by the "AUX" button on each track.
- Contains horizontal faders to control the signal level sent from the track to the global Reverb (Send 1) and Delay (Send 2) effects.
- Audio Settings Modal: (see below)
- VSM Plugin Modals: When clicking "View" on a plugin slot (channel or master), the graphical interface of that plugin (if provided in the .vsm file) is displayed in its own floating modal.
Audio Settings (Gear Icon)
This modal allows configuring important aspects of audio input and output:
- Audio Input Device (Recording):
- Allows selecting which audio interface/microphone connected to your computer will be used as the source for recording on tracks.
- An "Update Device List" button refreshes the list if you connect a new device while the DAW is open.
- Auxiliary Output Device (Monitoring/Sends):
- Allows selecting an audio interface for discrete auxiliary outputs. Useful for sending headphone mixes or to external processors. Available outputs (e.g., "Aux Out 1-2", "Aux Out 3-4") will depend on the channels of the selected interface. The "System Default / Main Out (1-2)" option uses the system's main output, disabling discrete auxiliary routing.
- Also has an "Update Device List" button.
- Recording Latency Compensation:
- Allows adjusting a value in milliseconds to compensate for inherent system latency during recording. This helps align recorded audio with the rest of the session. Typical values can range from 20ms to 250ms, depending on the system and interface.
- Auxiliary Output Latency Compensation:
- Allows adjusting a value in milliseconds to synchronize auxiliary outputs with the main mix, compensating for possible latency differences when using separate output devices.
Main Workflow
Here is a common step-by-step guide to using LETsDAW.
1. Loading Audio Files
For each track you wish to use with pre-existing audio:
- Click the "Load audio file" button on the desired track.
- Select the audio file from your computer (WAV, MP3, etc.).
- The file name and basic information will appear on the track. A waveform preview will begin to load.
- Repeat for all desired tracks.
2. Initial Processing ("Load & Process")
After loading all desired audio files:
- Click the "Load & Process" button in the transport panel.
- LETsDAW will:
- Decode all audio files.
- Normalize their durations (all audios will have the same duration as the longest, padding shorter ones with silence).
- Load the audios into the Csound engine.
- Initialize the Csound instance with all effects and routings.
- Update waveforms to reflect processed audios.
- During this process, a loading modal will be displayed. After completion, playback controls (Play/Pause, Stop) will be enabled.
3. Playback and Real-time Control
With processed audios:
- Use the Play/Pause/Stop buttons to control playback.
- Adjust volumes, pans, mutes, and solos on the tracks.
- Open the FX and AUX modals to edit equalizers, compressors, sends, and load VSM plugins on each track.
- Adjust master effects (Reverb, Delay) and load VSM plugins in the Master Insert.
- Monitor levels on RMS, LUFS, and Peak meters.
- All parameter changes are applied in real-time by Csound.
4. Multitrack Recording
- Configure Audio Input:
- Click the gear icon (Settings) in the transport panel.
- Select your audio input device (interface/microphone) in the "Audio Input Device" section.
- Adjust "Recording Latency Compensation" if necessary (can be fine-tuned after some test recordings).
- Close the settings modal.
- Select Input Channel per Track:
- For each track where you want to record, use the "Input Ch." selector (in the track's inline controls column) to choose which physical input of your interface will be recorded on that track (e.g., "Input 1" for the microphone on interface channel 1, "Input 2" for the instrument on channel 2, etc.).
- Arm Tracks for Recording:
- Click the "R" (Record Arm) button on the track(s) you want to record. The button will turn red and active.
- The armed track's VU meter will show the input signal level (in green/yellow/red). Adjust the gain on your audio interface for a good level (avoiding red/clipping).
- Configure Monitoring (Optional):
- If using an auxiliary output for headphone monitoring, select it in "Settings > Auxiliary Output Device".
- On the armed track, use the "Auxiliary Output" selector (rightmost column) to choose which pair of physical outputs from the auxiliary device the input signal (input monitoring) will be sent to.
- Adjust the track's "Auxiliary Send Volume" fader to control the input monitoring level.
- Set Pre-Roll (Optional):
- In the transport panel, adjust the "Pre-Roll" value in seconds. This will provide a countdown before recording actually starts.
- Start Global Recording:
- Position the playback cursor where you want to start recording (by clicking in the waveform area or using Stop to go to the beginning).
- Click the Global Record button (red circle icon) in the transport panel. The button will change to indicate active recording.
- If there is pre-roll, playback of the accompaniment (if any) will begin, and actual recording on MediaRecorders will start after the pre-roll time at the cursor point. If there is no pre-roll with accompaniment, recording starts immediately or after a silent pre-roll.
- Stop Recording:
- Click the Global Record button again to stop.
- Recorded audios will be processed (latency compensation, overdubbing/merging if there's pre-existing audio on the track) and the session will be reloaded with the new takes.
- Armed tracks will be automatically disarmed.
Advanced Features
VSM Plugins (Loading and Usage)
LETsDAW supports loading audio plugins in the VSM (Virtual Studio Mixing) format.
Loading Plugins:
- Channel Plugins: In the "FX" modal of each track, there are 3 "Plugin Inserts" slots. Click "Load Slot X VSM" to load a
.vsm
file.
- Master Plugins: In the "Master/Aux Effects" panel, the "Master Insert" section also has 3 slots for loading VSM plugins that will affect the entire mix.
After Loading:
- The plugin name will appear on the "Load..." button.
- View: If the VSM plugin contains a graphical interface, the "View" button (eye icon) will become visible. Clicking it will open a new floating modal with the plugin's interface, allowing adjustment of its specific parameters.
- Bypass: The "Bypass" button (lock/power icon) allows activating or deactivating plugin processing without unloading it.
- Generic Parameters (Master): Some VSM plugins may expose generic parameters (master_p1, master_p2, etc.) that will appear as knobs directly below the Master Insert slots. However, the "View" interface is the primary control method.
Important about VSM Plugins:
- LETsDAW decrypts the plugin and dynamically integrates it into the main Csound engine.
- To avoid conflicts, Csound control channel names within the plugin are automatically prefixed (e.g.,
ch0_s0_slider1
for the plugin in slot 0 of channel 1, or mstr_s0_param1
for the plugin in slot 0 of the master). This ensures each plugin parameter has a unique identifier in Csound.
Auxiliary Routing (Sends and Output Devices)
LETsDAW offers two main forms of auxiliary routing:
- Sends to Internal Effects (Reverb and Delay):
- Each track has an "AUX" button that opens a modal with two faders: "Send 1 (Reverb)" and "Send 2 (Delay)".
- These faders control the amount of signal from that track sent to the global Reverb and Delay processors, whose parameters are adjusted in the "Master/Aux Effects" panel.
- The returns from these effects are mixed back into the master output.
- Discrete Auxiliary Outputs for External Devices/Monitoring:
- Configuration: First, go to "Settings" (gear icon) and select an audio device in "Auxiliary Output Device". This designates a physical interface for auxiliary outputs. If "System Default" is selected, this type of discrete auxiliary routing will not be active.
- Selection per Track: In the tracks area, the rightmost column of each track ("Auxiliary Output Controls") allows:
- Selecting an output channel pair from the chosen auxiliary device (e.g., "Aux Out 1-2", "Aux Out 3-4"). The "Master" (or "No Aux Send") option disables the discrete send for that track.
- Adjusting a vertical volume fader that controls the signal level sent from this track to the selected auxiliary output pair.
- Use Cases:
- Headphone Mixes: Create separate headphone mixes for musicians during recording by sending different levels of each track to different interface outputs.
- External Hardware Processing: Send a track to an external effects processor and return the processed signal to another track in the DAW (requires manual configuration of the return input).
- Input Monitoring: When a track is armed ("R") and has an auxiliary output selected, the interface's input signal (what is being recorded) is routed directly to that auxiliary output, allowing low-latency monitoring. The level of this monitoring is controlled by the track's auxiliary output volume fader.
- Latency: The "Auxiliary Output Latency Compensation" section in Audio Settings allows adjusting a delay to help synchronize these auxiliary outputs with the main output, should there be noticeable discrepancies.
Session Export and Import
LETsDAW allows you to save and load your entire work.
- Export Session:
- Click "Export Session" in the Session Panel.
- Your current session (including session name, loaded or recorded audio files, all volume, pan, EQ, compressor, sends parameters, loaded VSM plugin settings and their parameters) will be packaged into a single file with the
.mix
extension.
- This file is downloaded to your computer.
- Import Session:
- Click "Import Session".
- Select a previously saved
.mix
file.
- LETsDAW will load all audios, restore parameters, and attempt to reload VSM plugins (if original VSM files are accessible or if future logic allows including them in the
.mix
).
- After import, you will need to click "Load & Process" to prepare the imported session for playback.
Final Audio Rendering
When your mix is ready to be finalized:
- Navigate to the "Export Audio" section located below the Master/Aux panel.
- Select the desired audio format for export: WAV (44.1kHz/16bit) or MP3 (320kbps).
- In the "File name" field, define the name for your finalized audio file.
- Click the "Export Audio" button.
"What You Hear Is What You Get" (WYSIWYG) Export Process:
LETsDAW now performs a WYSIWYG export. This means the final audio file will contain exactly what you are hearing on the master output, including all applied processing:
- Volumes, Panning, Mutes, and Solos of each track.
- Equalization and Compression of each channel.
- VSM plugins loaded in channel inserts and master inserts.
- Send/Auxiliary effects (Reverb, Delay) and their return levels.
- The final Master Gain.
To achieve this fidelity, LETsDAW records the audio output processed by Csound in real-time. Therefore, the export duration will be equal to the total duration of your audio session (the length of the longest loaded or recorded file). During this process, you will see a progress bar and the export status.
Canceling Export:
If you need to interrupt the process, the "Export Audio" button will change to a "Cancel Export" button as soon as the export begins. Clicking this button will stop the recording and processing, and no final file will be generated.
After completion (or cancellation), the LETsDAW interface will return to its normal state, allowing you to continue working or start a new export.
Troubleshooting (FAQ)
(This section will be filled with frequently asked questions and common solutions.)
- Audio doesn't play after clicking "Load & Process": Check the browser console (F12) for Csound or JavaScript errors. Ensure audio files are supported formats and not corrupted.
- VSM plugins don't load or work: Check if the .vsm file is valid and not corrupted. CSD errors within the plugin can prevent loading.
- Recording doesn't work: Ensure you have granted microphone permission to the browser for this site. Check if the correct input device is selected in Audio Settings and if the track is armed ("R") with a valid input channel selected for it.
- Low performance or "crackles" in audio: Real-time audio processing in the browser can be intensive. Close other heavy tabs or applications. If using many complex VSM plugins, this may demand more from your processor.
Contributions and Future of the Project
LETsDAW is a project under development with many possibilities for expansion!
Planned/Possible Future Improvements:
- MIDI Sequencing and Virtual Instruments (via Csound).
- Parameter automation.
- More advanced audio editing (cut, copy, paste, fades).
- "WYSIWYG" export that includes all Csound processing.
- User interface and user experience (UX) improvements.
- Support for including VSM files directly in the
.mix
session file.
- Performance optimizations.
If you are a developer, musician, or audio enthusiast and would like to contribute, get in touch!