OpenDAW
- 24 Devlogs
- 164 Total hours
Attempting to build an open source DAW (Digital Audio Workstation)
Attempting to build an open source DAW (Digital Audio Workstation)
This is my last devlog before the first ship. I did some major bug fixes and formatting fixes. I uploaded everything to github and I think it’s ready to ship now. I’ve made a super basic demo website too (with no css).
This is probably my last major feature before the first ship. I’ve added a Mastering studio tool. The window contains Low, Mid, High, Compressor, Saturation and Limiter controls. I’ve also rearranged the toolbar and re added the mixer and zoom tool (It was bugging out). The next devlog I’ll prolly fix some of the bugs and send it out to ship!
As the finishing stage for the first ship arrives I’ve added two major features. So first, I’ve added a chord maker which has various settings. You can set the chord as a minor, major, diminished and an augmented. You can add chords directly into the piano roll. I’ve also added a plugin system. It loads python plugins from a plugins folder. It uses a simple register(app) api. I believe that the plugins feature is one of the core features of the daw as it’s based on the fundamentals of being an open source app
I’ve added Automation for volume and pan. You can now click automation on a track, click the lane to add points and right click to remove points. You can switch between volume and pan with the help of the dropdown. “A” can be used to toggle this. Automations are saved, loaded and exported.
I’ve finally given the piano roll a much deserved update. You now have variable note lengths and Velocity control (changes speed of the playhead). A quantize tool (for now we have 1/4, 1/8, 1/16 and 1/32 You can drag notes to move them, drag the right edge to resize and right click to delete them (or use the “x” key). It’s a 64 beat piano roll with 5 octaves, horizontal scrolling and clicking the keys now previews the respective note. MIDI input can be used for recording and “M” toggles it.
I’VE ADDED TWO HUGE FEATURES!!!:
1)Full Mixer- So now we’ve got a dedicated mixer screen with volume faders, pan, mute/solo and a master channel. The colour of the tracks correspond with the mixer track colours.
2)Fixed Timeline Zoom- The zoom is now visible on the left panel. It changes the timeline width. The zoom is also saved with projects.
I’ve fixed some major bugs with the drum machine. I added a startup window which appears when the application is opened. It appears with entries where you can set your project name, BPM, Make a new project, Open an existing project or even settings. I made a new logo which is displayed at the top. I’ve also added a zoom in timeline feature for better viewing in the timeline.
I’ve added a settings window. You can now select your preferred microphone, MIDI and you can refresh devices if you’ve connected a new one. Also the keyboard shortcut list is displayed here. Settings is accessible from both the toolbar or the File dropdown
I removed the fullscreen arrangement feature cause it kept bugging out and I wasn’t able to fix it. I’ll probably add it back on a future date. I also improved the vocals. You can now select your microphone from the input dropdown. You can record vocals when the instrument is playing. I’ve also added a vocal preset to the fx rack. The project is near completion (I’ll say around 3/4th way through).
I added a fullscreen arangement view. When you click f11 or the arrangement button in the top the daw expands into the timeline. It’s not perfect yet and it’s very buggy so I might remove it later (or fix it). The feature is inspired from ableton live.
I added markers (they get placed at your playheads position). I added Auto-save which is togglable currently but I’ll probably change that soon. I added clip fades which can be set after clicking the fade in or fade out button. A dialogue box appears asking you at what time you need the track to fade in and out. I also expanded the undo/redo to 100 states which now includes fades and the markers. The project is close to completion!
I added a drum beat maker ! (It shows up with an error tho whenever I try to play more than two drum tracks). It has a 16 step sequencer, A kick, snare, Hi-hats, clap. You can add cells by clicking them (they’re togglable). It uses your current BPM and is added to the timeline using the “Add to timeline” button. The code works by having separate parts for the tracks, audio engine, and GUI, which work together to load.
So I added undo and redo buttons (finally) in the top toolbar you can use ctrl+z and ctrl+y as shortcut keys. I’ve also added a looping feature. You can now enable the loop from the on/off button on the transport bar. Set A sets the loop start at current playhead. Set B sets the loop end at current playhead. “L” toggles looping and playback cycles continuously between Set A and Set B.
I finally added an effects rack. The effects I included were: Gain, Delay, Delay Time, Reverb, Distortion, Compressor, High-pass and low-pass filters. Each track now has an “fx” button or you can use the open effects rack on the left panel. The effects are added both to playback and export and you can use the “f” key to open the rack.
I finally found a purpose for the panel on the left. You can now see the current bpm, track count, track length, selected track, position and length. You can also rename your track, change its colour or split the track here. You can also split a track by moving the playhead and clicking “D” or split at a particular section of the track.
Ok! I added some core features that I was supposed to add before. You can now move your tracks in the timeline. Your supposed to click and drag the waveforms horizontally. I also added settable BPM. Now your BPM is visible in the top toolbar and I set the range from 40bpm to 240 (By default it’s 120). Also your bpm is saved and loaded with projects.
I finally added another instrument in the piano roll. You can now select between an acoustic guitar and a piano. I’ll add more in the coming days.
You can now rename and recolor all your tracks!
I also fixed the importing from the piano roll to the timeline. When you click the recolour button it randomly picks a colour. I’ll add particular colour pickers in the near future.
Added these keyboard commands
-I FINALLY FIXED THE RECORD BUTTON.
-I added a piano roll which can be switched to using the button on the top left (Probably might switch it’s location later).
-It’s a 4 octave piano you can left-click cells to add notes and click them again to remove.
-For now there’s only one instrument (Rhodes Piano). I’ll add more soon!
Tried to fix the record button cus it kept bugging out for some reason and I screwed everything up. I GIVE UP FOR TODAY. I’ll think abt this tmrw.
Had a bit of a longer session this time. The last 3 days have been highly productive for me but now my holidays are over :( . I’ve made some big changes:
-Added a record button. (Took me wayyy to long to make)
-Added partitions so now all the sections are clearly divided.
-Added a timeline.
-Added a panel on the left (Still don’t know what I’m gonna do with it)
-Added Save, Load, Export and Import features
-Now you can trim your audio clips
-Moved the add track button to the top left
Ok… I’ve got some huge changes. The DAW is starting to take shape now. You can now see the waveform of your audio track. I improved the audio quality drastically. I formatted so now everything is centered. I implemented a dark grey theme with neon blue accents. I’ve come up with the name… I think I’ll call it OpenDAW. I still don’t know what I’ll do with the space on the left but I know I’ll come up with something. My passion for this project is increasing every second I work on it.
FINALLY…After 8 hrs smth mins of scripting and debugging I have this….You can add many tracks, change their individual volumes and play it as a whole. My plan is to make an opensource DAW which can easily be modded. I have holidays where I live so I’ll try putting atleast 8hrs a day. I need to format it because it feels pretty barebones rn AND I NEED THAT LAPTOP (i have a 4gb ram rn). Ty all!!