Audiobus: Use your music apps together.

What is Audiobus?Audiobus is an award-winning music app for iPhone and iPad which lets you use your other music apps together. Chain effects on your favourite synth, run the output of apps or Audio Units into an app like GarageBand or Loopy, or select a different audio interface output for each app. Route MIDI between apps — drive a synth from a MIDI sequencer, or add an arpeggiator to your MIDI keyboard — or sync with your external MIDI gear. And control your entire setup from a MIDI controller.

Download on the App Store

Audiobus is the app that makes the rest of your setup better.

DSP :: Digital Signal Processing, audio programming, and Xamarin Where can or do I start? Thank You!

Hello, Everyone!!!

My name is Steven and I'm looking to get into software & application development, more particularly Audio Programming. I've been on these forums for a bit and have been helped a lot and just want to start by saying thank you. ... Anyways... I've been trying to get into and study everything I can get into to become an iOS Dev. I started This: https://forum.audiob.us/discussion/18162/app-development & this: https://forum.audiob.us/discussion/18375/the-music-machine-project some time ago, but haven't really made too much progress... I did get my coding environment setup last night, I think. with Visual Studio 2017, and the Xamarin Tools, etc. Got my mac connected, and everything... but before I get too excited I wanted to make sure I'm going in the right direction.

Anyways... I'm wanting to start learning about whatever it takes to do this. ...

I was told to try to get into learning about DSP or Digital Signal Processing, and that there are audio programming frameworks or whatever out there, but to be honest I just don't know enough about what I'm looking for. I'm wanting to try and do this with and w/in Xamarin, and with like C#, or really with whatever it takes. ... I've been told C# can do whatever Objective-C, C, & C++ can do for the most part... but, like I said. Idk. :neutral:

Anyways... I'm wanting to try and create something simple to start with... Like if I could I would like to create like an Oscilloscope or something, and eventually would like to get into creating virtual instruments, and synthesizers, etc.

I don't know how hard this will be... I know it can't be easy, but I have nothing but time... and have been dreaming of this for long enough to know I'm in it for the long haul, or at least for as far as I can see. It really is a passion of mine. ... As said, I just don't know where or how to start.

Anyways... thank you again for all the help. I appreciate it.

Comments

  • edited August 2017

    C# is not the best language for realtime audio generation as you cannot guarantee the garbage collection is not going to kick in and cause interruptions. You can use C# and do the audio stuff in C++ but it's a pita to deal the the managed/unmanaged interoperability. If you want a cross platform solution JUCE looks like a nice framework and although it is C++ it has a whole library of stuff to maker life easier. Also there is Audiokit for macOS and iOS which you can use Swift with for easier programming, although if you want to build your own custom DSP you will still need to use C/C++. But you can do a lot in Audiokit without needing to.

  • @Mark B said:
    C# is not the best language for realtime audio generation as you cannot guarantee the garbage collection is not going to kick in and cause interruptions. You can use C# and do the audio stuff in C++ but it's a pita to deal the the managed/unmanaged interoperability. If you want a cross platform solution JUCE looks like a nice framework and although it is C++ it has a whole library of stuff to maker life easier. Also there is Audiokit for macOS and iOS which you can use Swift with for easier programming, although if you want to build your own custom DSP you will still need to use C/C++. But you can do a lot in Audiokit without needing to.

    Sweet, thank you!

  • First learn how to program using C(++). Then dive into DSP. Otherwise it will be like studying quantum physics before you can read.

    And stay away from frameworks until you know exactly why and how you want to use them.

  • edited August 2017

    Even if you can use libraries from others and know low level and responsive coding, you should understand the fundamentals. Behavior of waves, how analog instruments work (capacitors, comparators etc for filters. E.g. why is it challenging to emulate 4 single pole stepped analog filters digitally) and be able to visualize the flow through the instrument (both real and coded). Basics in music theory will not harm you.

  • The reason I'm suggesting starting with a framework is that it will be much less complicated to get started if you are new to programming. For example if you are using Visual Studio you will need to create an unmanaged C++ project and this will either have a blank screen or a command line - there is no graphical user interface built into C++. By using JUCE it will at least give you a UI library. And then before you start writing code to generate audio you need all the platform specific code to setup the audio environment. This is also handled by the framework.
    But I agree with Brambos that you should learn to program first before you even think about DSP. You could however learn and create at the same time with Audiokit. Creating an oscillator, connecting it to a filter and envelope and displaying the output on an oscilloscope is just a few lines of code.
    Creating your own DSP though can involve very complex math. You might want to check out this course https://www.coursera.org/learn/audio-signal-processing

  • My advice is to first learn C and study how to craft it for optimal performance. Then move up to C++. You will find a wealth of helpful (and unhelpful and very contradictory) advice on the web regarding C++ programming. My advice is once you've learned how to use and optimise C you'll be a position to make up your own mind how you approach C++ regarding DSP and audio programming. With C++ though, remember if you're crafting a DSP engine to keep it as low level as possible, keep your code close to the CPU, high level C++ also has a high overhead. Bear in mind also it takes years to learn all this stuff to an expert level so keep it simple at first. For example start by implementing a little delay/echo effect then move on to simple filters etc. Don't be afraid to experiment, you can have loads of fun and get lots of learning by simply having a mad idea and going for it.

    Frameworks are useful and great and I agree mostly with advice given so far but I would also strongly suggest that one should attempt to code without relying on 3rd party code for all sorts of reasons. If you can find open source code and there's plenty of that, use it to reverse engineer what they're doing. Understand that other people make mistakes too so never look at a piece of 3rd party code and assume it's necessarily the best way to do something or even that it's correct!

    Try to learn all about different forms of synthesis, psycho acoustics and music theory. But most important is to learn to trust your own ears and your own ideas. Take on board and try to understand and read as much as possible but also at the same time don't worry too much about what acoustic purists and theoretical mathematicians write in their fancy papers. After all it's music we're dealing with here, it's not satellite signal processing it's audio processing and if something sounds good then it IS good! And that advice was given to me by one of my college tutors , (Tim Orr from EMS), and I still think is some of the best advice I ever had.

    Finally for beginners here's a couple of useful web links I've still got in my browser.

    Will Pirkle's Books are quite good if you're new to DSP, but his engine isn't all that efficient but he writes quite well and manages to avoid confusing you with far too much theoretical proofing.. .
    http://www.willpirkle.com/about/books/

    And some useful knowledge here too...
    http://dspguide.com

    There are other much higher level resources but you should hunt them down yourself if you're that keen ;)

    Finally building an app means also learning how to program for your target platform! You'll soon find DSP is only a small part of a much bigger picture! Don't give up!

  • JUCE 5.1 seems to add some DSP features:
    https://www.juce.com/releases/juce-5-1

  • Wow!!!! Thank you everyone!

  • As an alternative suggestion, it may be wiser to start with a MIDI app before doing a realtime DSP based app. You'll need that anyway if you want to get serious with music apps and it will let you descend more gently into the hellish pits of realtime-safe thread-lock avoidance and cpu-specific DSP optimizations.

  • edited August 2017

    Hi Steven!
    Matthew here from AudioKit. That's some great advice from Bram and Andy. Those guys are two programmers who can write better code in their sleep than I'll ever be able to write.

    We can't promise AudioKit is perfect, only that it is improving. And, we're honored to have a great cross-section of iOS Developers in our AudioKit Developer Slack Group, including lots of devs from this forum: Devs from Audiobus, Audulus, Propellerheads, TAAE, Adobe Audition, etc. So, when you have had a chance to play with the framework and think you're ready to join our slack, there are other developers willing and able to help.

    We're currently building some AUv3 examples. They're about 70% Swift and 30% C++. However, the C++ is partially self-documenting. If you go through a beginners book on C/C++, you should be able to pick it up.

    Good luck with your journey. Keep us posted.

    http://audiokitpro.com

  • @analog_matt said:
    Hi Steven!
    Matthew here from AudioKit. That's some great advice from Bram and Andy. Those guys are two programmers who can write better code in their sleep than I'll ever be able to write.

    We can't promise AudioKit is perfect, only that it is improving. And, we're honored to have a great cross-section of iOS Developers in our AudioKit Developer Slack Group, including lots of devs from this forum: Devs from Audiobus, Audulus, Propellerheads, TAAE, Adobe Audition, etc. So, when you have had a chance to play with the framework and think you're ready to join our slack, there are other developers willing and able to help.

    We're currently building some AUv3 examples. They're about 70% Swift and 30% C++. However, the C++ is partially self-documenting. If you go through a beginners book on C/C++, you should be able to pick it up.

    Good luck with your journey. Keep us posted.

    http://audiokitpro.com

    WOW, thank you so much!!! Will do! :smiley:

Sign In or Register to comment.