Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating a Digital Audio Workstation

Tags:

java

c

audio

I am trying to write my own DAW, mostly just to learn about the mathematics of how signals are processed to get effects, but also for fun. (A rather large undertaking, but I have the time at the moment). I would like for it to work something like Propellerhead's Record as in the rack especially.

I'm running on a Mac, so I'm thinking of using Audio Units for the different parts, then Core Audio for the scaffolding parts. So, the whole thing would be written in C or Obj-C.

However, I haven't used either Audio Units or Core-Audio before, and the internet hasn't been any help for learning.

Does anyone know where I could learn about these? Or would Java (The only other language I'd feel comfortable using) be better, or is there something I've completely missed while trying to find the "easy" way to do this?

Thanks, Jon

like image 263
Jon Egeland Avatar asked Feb 02 '11 04:02

Jon Egeland


People also ask

Can I create my own DAW?

Developing a DAW requires a lot of expertise in different areas such as programming, coding, graphic designing, digital audio, and DSP among others. Understanding how it works, what musicians and audio technicians need, and how digital audio works is essential in order to create a DAW.

What is needed for a digital audio workstation?

You can pretty much use any computer and in many cases a mobile device. To use web-based DAWs you will need to create an account. Other DAWs will require you to download the application. If you want to record audio with decent quality, you will also need some type of microphone (and in some cases an audio interface).


3 Answers

if you want to write a DAW:

  • at minimum, get your feet wet with an existing project. if i were to personally choose a project, i'd contribute to Ardour.

  • the signal processing in a DAW is relatively simple. you'll have to work with mixers, files, and graphics. if you're already comfortable writing apps, then you probably won't learn much (beyond the basics). of course, you could find an existing project and extend it with features which relate to what you want to learn; you could write plugs or visualizations for it.

if prefer to work with signal processing:

  • AU or VST plugins will be a good intro - there are many existing projects which you may reference. eventually, you'll get tired of waiting for a host to load to test your program.

language:

  • objc is not usable for realtime audio rendering.

  • java is very unusual for this application. there are actually wrappers for AUs and CoreAudio... but can't name one commercial Java AU for OS X.

  • most audio shops (that I know of) are using C++ - not C. (Hardware is different). this really seems like an odd omission from your list - most DAWs and plugins use C++, and that is the language you'd find the most examples in. if you're already comfortable with C and Java, I'd recommend coming to terms with C++ because that's the standard language in the industry when targeting desktops.

like image 192
justin Avatar answered Nov 03 '22 10:11

justin


Look at the cross platform C++ library JUCE, it is open source with the option to license the code (price isn't bad). Plenty of professional DAW and VST developers use it, I'm one of em.

https://www.juce.com/

Warning, this library is a lot of fun to play with. It renewed my interest in C++, which was no small feat.

like image 28
irdbisa Avatar answered Nov 03 '22 09:11

irdbisa


you are right-on in assuming that core-audio and audiounits could form the basis for a system (that may not need to be a fully-fledged DAW but may have some combination of multi-track audio recording, editing, playback, etc...) much easier than worrying about cross-platform concerns, massive all-encompassing frameworks like Juce, or ASIO and other os-bypassing hacks. i think you will find that audio programming is a specialized discipline and most folks here on stackoverflow are ill prepared to offer useful advice. Java is rather unsuitable, as is C#, as are interpreted languages FOR AUDIO, in particular for multichannel audio, DSP, etc. due to time contraints and the need to work on a rather low-level for many critical loops. you will find the documents you need on developer.apple.com (you'll have to make a login) and you can find shell-examples for your interest directly inside of xcode examples... good luck

like image 33
aaronp Avatar answered Nov 03 '22 11:11

aaronp