Loopy Pro: Create music, your way.
What is Loopy Pro? — Loopy Pro is a powerful, flexible, and intuitive live looper, sampler, clip launcher and DAW for iPhone and iPad. At its core, it allows you to record and layer sounds in real-time to create complex musical arrangements. But it doesn’t stop there—Loopy Pro offers advanced tools to customize your workflow, build dynamic performance setups, and create a seamless connection between instruments, effects, and external gear.
Use it for live looping, sequencing, arranging, mixing, and much more. Whether you're a live performer, a producer, or just experimenting with sound, Loopy Pro helps you take control of your creative process.
Download on the App StoreLoopy Pro is your all-in-one musical toolkit. Try it for free today.
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.
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
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.
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.
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!