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 Store

Loopy Pro is your all-in-one musical toolkit. Try it for free today.

I want to learn how to build iOS apps .. starting from zero, where do I begin?

2

Comments

  • @NeuM said:

    @Gravitas said:

    @NeuM said:

    @Gravitas said:

    @NeuM said:

    @Gravitas said:

    @NeuM said:
    I’ll preface my comment with the acknowledgment that we’re all different and we all have the ability to learn and change.

    I partnered with someone on a year’s long (possibly longer) attempt to create an iOS app. I’m not a coder, the other person was. We worked on our project fairly consistently and ended up making little progress and ultimately abandoned the whole thing due to the difficulty to make progress.

    Is your app concept entirely abandoned or ar you going to start it up again?

    Don’t expect immediate results at anything and you’ll go into this with the right attitude.

    Good advise for many things.

    Our app would no longer be viable in the current marketplace. It was an attempt to take advantage of a gap in offerings which has since been filled with lots of other apps.

    Fair does.

    I have no interest in getting back into app development. LOL.

    I hear you, let the ones who how to do that stuff do it. :)

    I think someone who comes to the table with no programming preconceptions may have an easier go of it. Besides my own story, I hear stories from programmers who are familiar with other languages trying to use Swift and they seem to have a lot of difficulties with that (also because Apple has poor documentation regarding their own API's).

    As a non coder I don't know much about Apple and how they document their API's.
    I've heard about Swift as a programming language
    however I needed to look it up which I did here
    https://en.wikipedia.org/wiki/Swift_(programming_language)
    which I found rather interesting.

    If you ever get the coding bug, I wish you the best of luck and persistence. ;)

    Thank you. :)

    I think if I do go there then I would need to be working together with an actual coder.
    We would get there much faster and easier.
    If or once I get a really solid concept then I'll go for it however
    right now I've got dRambo for creating performance instruments
    and some of the pieces I've put together could actually
    work as standalone apps in themselves.
    Anyways I digress, this thread is proving rather interesting. :)

  • edited December 2024

    If you want to make a living off iOS music apps, after years of development and hard work, don't be crazy and expect more than $1500 / month, tops!

    @yellow_eyez said:

    @tom_ward said:
    The below is all IMO:

    Learn to compartmentalize, and get very good at it. Diving head-first into an app idea without knowing modern software engineering will get overwhelming in the first 10 minutes.

    For a music app you're going to need to learn, in no specific order:

    • UI development
    • Data management
    • File system interactions
    • Threading and parallelization
    • MIDI message building, receiving, synchronization
    • Audio subsystem basics, even if using AudioKit/similar
    • Synthesis basics, if making a synth app, even if using AudioKit/similar

    UI, specifically:
    Learn how they are composed, how basic interaction feedback works, and how to manipulate data using the UI. When you get the hang of this area, it should be clear why you can focus on it in isolation without digging into the music/etc. tasks you really want to build. Some systems like JUCE will provide UI tooling that could make your job faster. If you're making an iOS app, try using SwiftUI to build out some simple apps just to get an idea of how the system works.

    Audio/MIDI:
    Get a MIDI monitor app, of your choice, that lets you see the messages in hex. It's important to understand what MIDI messages are, how they are transmitted, and to build some muscle memory with the standard. There are libraries to help deal with MIDI, which are well worth using, but you need to know what they are doing to utilize them well. Likewise, with audio, do the research to develop an understanding of realtime audio systems. If making an iOS app, develop a working knowledge of CoreAudio, how the AU graph works, etc. This will go a long way towards your success, even if you end up using AudioKit or JUCE.

    Everything else:
    You will encounter all the other topics repeatedly while working on the two core areas above. Take the time to understand how each thing is working. It's critical to separate your UI from your audio/MIDI thread(s), for example, so take the time to learn why.

    If you're stuck in and feeling overwhelmed, break a problem into smaller problems and solve something. This is a long road, just keep taking steps and over time things will get easier.

    One last thought:
    Everyone is going to have an opinion on what language or framework to use. Most people will be giving you good advice, so it's going to be up to you to determine what tools you can work with. Languages like Swift do a lot for you, which may ease the initial learning curve. Languages like C++ will be comparatively punishing to learn, but you will likely need to learn some of it in the end for this type of app. Look at problem solutions on StackOverflow, Xcode project templates, JUCE project templates, etc. Expose your mind to everything and see what looks like the right way to dip your toes in.

    Good post

    One question : what do you think is the best language to learn? For all purposes not just iOS , c or c++ or ???

    JavaScript. It's everywhere, can be used to script in many environments, has insanely good runtimes now that rival C/C++ in performance, and you're prepared to use web technologies, which can be used to build anything nowadays (trust me, I know -- I HAVE built my ENTIRE SOFTWARE STACK using web technologies 😂)

    EDIT: By "best" I don't mean "most elegant" or "most well-designed". I don't program in JavaScript myself, I've designed my own programming language and a transpiler that outputs JavaScript. By "best" here I mean "most versatile" and "future-proof".

  • @SevenSystems said:
    If you want to make a living off iOS music apps, after years of development and hard work, don't be crazy and expect more than $1500 / month, tops!

    @yellow_eyez said:

    @tom_ward said:
    The below is all IMO:

    Learn to compartmentalize, and get very good at it. Diving head-first into an app idea without knowing modern software engineering will get overwhelming in the first 10 minutes.

    For a music app you're going to need to learn, in no specific order:

    • UI development
    • Data management
    • File system interactions
    • Threading and parallelization
    • MIDI message building, receiving, synchronization
    • Audio subsystem basics, even if using AudioKit/similar
    • Synthesis basics, if making a synth app, even if using AudioKit/similar

    UI, specifically:
    Learn how they are composed, how basic interaction feedback works, and how to manipulate data using the UI. When you get the hang of this area, it should be clear why you can focus on it in isolation without digging into the music/etc. tasks you really want to build. Some systems like JUCE will provide UI tooling that could make your job faster. If you're making an iOS app, try using SwiftUI to build out some simple apps just to get an idea of how the system works.

    Audio/MIDI:
    Get a MIDI monitor app, of your choice, that lets you see the messages in hex. It's important to understand what MIDI messages are, how they are transmitted, and to build some muscle memory with the standard. There are libraries to help deal with MIDI, which are well worth using, but you need to know what they are doing to utilize them well. Likewise, with audio, do the research to develop an understanding of realtime audio systems. If making an iOS app, develop a working knowledge of CoreAudio, how the AU graph works, etc. This will go a long way towards your success, even if you end up using AudioKit or JUCE.

    Everything else:
    You will encounter all the other topics repeatedly while working on the two core areas above. Take the time to understand how each thing is working. It's critical to separate your UI from your audio/MIDI thread(s), for example, so take the time to learn why.

    If you're stuck in and feeling overwhelmed, break a problem into smaller problems and solve something. This is a long road, just keep taking steps and over time things will get easier.

    One last thought:
    Everyone is going to have an opinion on what language or framework to use. Most people will be giving you good advice, so it's going to be up to you to determine what tools you can work with. Languages like Swift do a lot for you, which may ease the initial learning curve. Languages like C++ will be comparatively punishing to learn, but you will likely need to learn some of it in the end for this type of app. Look at problem solutions on StackOverflow, Xcode project templates, JUCE project templates, etc. Expose your mind to everything and see what looks like the right way to dip your toes in.

    Good post

    One question : what do you think is the best language to learn? For all purposes not just iOS , c or c++ or ???

    JavaScript. It's everywhere, can be used to script in many environments, has insanely good runtimes now that rival C/C++ in performance, and you're prepared to use web technologies, which can be used to build anything nowadays (trust me, I know -- I HAVE built my ENTIRE SOFTWARE STACK using web technologies 😂)

    EDIT: By "best" I don't mean "most elegant" or "most well-designed". I don't program in JavaScript myself, I've designed my own programming language and a transpiler that outputs JavaScript. By "best" here I mean "most versatile" and "future-proof".

    In many cases is the runtime performance rivaling C++ because internally it has been transpiled to C++, or leveraging C++ libraries? I think this is where it becomes muddy for me when determining these things. I have a lot of projects involving Eurorack firmware. There's no point in me writing Javascript which is later just transpiled into C++ if I can simply write the C++. This is a niche scenario, but for the purpose of this discussion I'm curious to know your thoughts.

  • @SevenSystems said:
    If you want to make a living off iOS music apps, after years of development and hard work, don't be crazy and expect more than $1500 / month, tops!

    @yellow_eyez said:

    @tom_ward said:
    The below is all IMO:

    Learn to compartmentalize, and get very good at it. Diving head-first into an app idea without knowing modern software engineering will get overwhelming in the first 10 minutes.

    For a music app you're going to need to learn, in no specific order:

    • UI development
    • Data management
    • File system interactions
    • Threading and parallelization
    • MIDI message building, receiving, synchronization
    • Audio subsystem basics, even if using AudioKit/similar
    • Synthesis basics, if making a synth app, even if using AudioKit/similar

    UI, specifically:
    Learn how they are composed, how basic interaction feedback works, and how to manipulate data using the UI. When you get the hang of this area, it should be clear why you can focus on it in isolation without digging into the music/etc. tasks you really want to build. Some systems like JUCE will provide UI tooling that could make your job faster. If you're making an iOS app, try using SwiftUI to build out some simple apps just to get an idea of how the system works.

    Audio/MIDI:
    Get a MIDI monitor app, of your choice, that lets you see the messages in hex. It's important to understand what MIDI messages are, how they are transmitted, and to build some muscle memory with the standard. There are libraries to help deal with MIDI, which are well worth using, but you need to know what they are doing to utilize them well. Likewise, with audio, do the research to develop an understanding of realtime audio systems. If making an iOS app, develop a working knowledge of CoreAudio, how the AU graph works, etc. This will go a long way towards your success, even if you end up using AudioKit or JUCE.

    Everything else:
    You will encounter all the other topics repeatedly while working on the two core areas above. Take the time to understand how each thing is working. It's critical to separate your UI from your audio/MIDI thread(s), for example, so take the time to learn why.

    If you're stuck in and feeling overwhelmed, break a problem into smaller problems and solve something. This is a long road, just keep taking steps and over time things will get easier.

    One last thought:
    Everyone is going to have an opinion on what language or framework to use. Most people will be giving you good advice, so it's going to be up to you to determine what tools you can work with. Languages like Swift do a lot for you, which may ease the initial learning curve. Languages like C++ will be comparatively punishing to learn, but you will likely need to learn some of it in the end for this type of app. Look at problem solutions on StackOverflow, Xcode project templates, JUCE project templates, etc. Expose your mind to everything and see what looks like the right way to dip your toes in.

    Good post

    One question : what do you think is the best language to learn? For all purposes not just iOS , c or c++ or ???

    JavaScript. It's everywhere, can be used to script in many environments, has insanely good runtimes now that rival C/C++ in performance, and you're prepared to use web technologies, which can be used to build anything nowadays (trust me, I know -- I HAVE built my ENTIRE SOFTWARE STACK using web technologies 😂)

    EDIT: By "best" I don't mean "most elegant" or "most well-designed". I don't program in JavaScript myself, I've designed my own programming language and a transpiler that outputs JavaScript. By "best" here I mean "most versatile" and "future-proof".

    I could never get a good workflow working with JavaScript directly on the iPad.

    WebMIDI wasn’t possible on the chrome or the safari version on iOS. But it was worth looking into, especially with the chat I had in Sweden with the Klevgrand developers earlier this year.

    My take - I like WebMIDI, and Tone.js. It’s just not for me.

    I did see a ton of amazing scripts using the scriptable and Jayson apps but once I realized I could run a decent Python using Pythonista, I stuck with that and never looked back.

    But I do love messing around with json files and changing the nature of a project by adjusting a few parameters.

  • heshes
    edited December 2024

    @wim said:
    Swift Playgrounds on the iPad is also a good place to get down to very beginning programming basics.

    Yes. I'm not positive, but I think Swift Playgrounds might also be the only way to write an actual "app" on an iPad.

    Not sure I would recommend trying to use an iPad to actually write an iOS/iPadOS app, though. People should be aware that for any serious iOS/iPadOS programming they're going to want to do it on a Mac, probably using xcode. That might sound strange to someone new to programming, but something to be aware of.

    Also, USE CHATGPT! Don't use it for coding. But do use it for asking questions. It will mostly be a huge help. (Yes, partly, it will steer you wrong, but so also will people who respond to you online. ChatGPT can be a huge help. Don't start out trying to program with it. Start out by asking it your questions, as well as by posting your questions online. I think you'll find that ChatGPT is a valuable resource.)

  • wimwim
    edited December 2024

    @hes said:

    @wim said:
    Swift Playgrounds on the iPad is also a good place to get down to very beginning programming basics.

    Yes. I'm not positive, but I think Swift Playgrounds might also be the only way to write an actual "app" on an iPad.

    That is correct.

    Not sure I would recommend trying to use an iPad to actually write an iOS/iPadOS app, though. People should be aware that for any serious iOS/iPadOS programming they're going to want to do it on a Mac, probably using xcode. That might sound strange to someone new to programming, but something to be aware of.

    Also 100% correct. Anything more than a few minutes in Playgrounds should be enough to dispel that notion. Also, it would be pretty much a miracle if you could write a music app anything like what we're used to here, and almost certainly impossible to write an AUv3 plugin.

    But, for an early beginner to programming, it serves very well as a teaching tool for basic concepts. If you can stomach the cutesy kid level teaching approach.

  • @hes said:

    @wim said:
    Swift Playgrounds on the iPad is also a good place to get down to very beginning programming basics.

    Yes. I'm not positive, but I think Swift Playgrounds might also be the only way to write an actual "app" on an iPad.

    Not sure I would recommend trying to use an iPad to actually write an iOS/iPadOS app, though. People should be aware that for any serious iOS/iPadOS programming they're going to want to do it on a Mac, probably using xcode. That might sound strange to someone new to programming, but something to be aware of.

    Also, USE CHATGPT! Don't use it for coding. But do use it for asking questions. It will mostly be a huge help. (Yes, partly, it will steer you wrong, but so also will people who respond to you online. ChatGPT can be a huge help. Don't start out trying to program with it. Start out by asking it your questions, as well as by posting your questions online. I think you'll find that ChatGPT is a valuable resource.)

    Yes, definitely use ChatGPT. I save tons of hours asking questions to GPTs instead of "normal" internet search these days. It just gets to the point faster. It helps to know what to ask, though...

  • @yellow_eyez said:

    @tom_ward said:
    The below is all IMO:

    Learn to compartmentalize, and get very good at it. Diving head-first into an app idea without knowing modern software engineering will get overwhelming in the first 10 minutes.

    For a music app you're going to need to learn, in no specific order:

    • UI development
    • Data management
    • File system interactions
    • Threading and parallelization
    • MIDI message building, receiving, synchronization
    • Audio subsystem basics, even if using AudioKit/similar
    • Synthesis basics, if making a synth app, even if using AudioKit/similar

    UI, specifically:
    Learn how they are composed, how basic interaction feedback works, and how to manipulate data using the UI. When you get the hang of this area, it should be clear why you can focus on it in isolation without digging into the music/etc. tasks you really want to build. Some systems like JUCE will provide UI tooling that could make your job faster. If you're making an iOS app, try using SwiftUI to build out some simple apps just to get an idea of how the system works.

    Audio/MIDI:
    Get a MIDI monitor app, of your choice, that lets you see the messages in hex. It's important to understand what MIDI messages are, how they are transmitted, and to build some muscle memory with the standard. There are libraries to help deal with MIDI, which are well worth using, but you need to know what they are doing to utilize them well. Likewise, with audio, do the research to develop an understanding of realtime audio systems. If making an iOS app, develop a working knowledge of CoreAudio, how the AU graph works, etc. This will go a long way towards your success, even if you end up using AudioKit or JUCE.

    Everything else:
    You will encounter all the other topics repeatedly while working on the two core areas above. Take the time to understand how each thing is working. It's critical to separate your UI from your audio/MIDI thread(s), for example, so take the time to learn why.

    If you're stuck in and feeling overwhelmed, break a problem into smaller problems and solve something. This is a long road, just keep taking steps and over time things will get easier.

    One last thought:
    Everyone is going to have an opinion on what language or framework to use. Most people will be giving you good advice, so it's going to be up to you to determine what tools you can work with. Languages like Swift do a lot for you, which may ease the initial learning curve. Languages like C++ will be comparatively punishing to learn, but you will likely need to learn some of it in the end for this type of app. Look at problem solutions on StackOverflow, Xcode project templates, JUCE project templates, etc. Expose your mind to everything and see what looks like the right way to dip your toes in.

    Good post

    One question : what do you think is the best language to learn? For all purposes not just iOS , c or c++ or ???

    IMO There isn’t really a single language for all purposes … sure you could do pretty much anything in C or C++ if you have the time and energy and knowhow. But many languages/frameworks are designed and optimised for certain purposes, so your choice depends on what kind of solutions you want to build with it.

  • But it was worth looking into, especially with the chat I had in Sweden with the Klevgrand developers earlier this year.

    Klevgrand allowed you into their studio!!!

    What was Danny thinkin!!!

    (Jk ofc)

  • edited December 2024

    I've never done it--kindly discount accordingly--but I would start small so I can have fun. I already understand modular synthesis pretty well, which is the most abstracted level of musical programming. I'd take one step down in abstraction at a time. So my next step would be to learn Pure Data. I think the Mutable Instruments guy used to start off his projects in PD. And there are ios apps that allow you to load some PD projects on the ipad.

  • wimwim
    edited December 2024

    Very much agree as far as PD goes. It didn’t sound much like it was too usable on iOS yet. Hopefully I’m wrong on that point. Even getting into it on desktop would be helpful.

    Audulus 4 can also do a lot and lets you go very deep into the DSP side, or put bigger modules together. It might be worth checking into at least by way of understanding the range of options available to you (even for just learning).

  • If you want to do audio, it will have to run on a realtime thread in iOS, which means that you'll have to write (at least your audio code) in a realtime-safe "non blocking language". The most obvious choice for this is C (not C++).

    For UI my personal recommendation would be to skip 3rd party frameworks and stick to pure native Apple stuff. I'm still using Objective-C with UIKit, but today there are probably other choices.

    In my experience, if you stick with Apple's own native libraries, the chances of stuff breaking with iOS updates are fairly small. Once you start using JUCE and things like that it becomes a crapshoot every summer.

  • edited December 2024

    @brambos said:
    If you want to do audio, it will have to run on a realtime thread in iOS, which means that you'll have to write (at least your audio code) in a realtime-safe "non blocking language". The most obvious choice for this is C (not C++).

    For UI my personal recommendation would be to skip 3rd party frameworks and stick to pure native Apple stuff. I'm still using Objective-C with UIKit, but today there are probably other choices.

    In my experience, if you stick with Apple's own native libraries, the chances of stuff breaking with iOS updates are fairly small. Once you start using JUCE and things like that it becomes a crapshoot every summer.

    Agree with using Apple-native libraries and frameworks. Starting from ground zero, today, I would guess that Swift/SwiftUI is easier to learn than Objective-C/UIKit...but that's just a guess after many years of using both.

    I'm curious about using pure C for audio code. What's the scope of the audio code in this context? I have core synthesis code (the actual generator functions) in C, but I find it very hard to not use C++. Apple's template examples also use C++ for a lot of AUv3 boilerplate, although C seems to be mixed in freely. A lot of examples I've seen while learning audio coding use "C" in the sense that they are using C++ and avoiding classes. I see this a lot in VCV Rack module code, and in Eurorack firmware. I'm sure not everyone does it that way, so I'd like to know more about how you approach it.

  • edited December 2024

    @tom_ward said:

    @brambos said:
    If you want to do audio, it will have to run on a realtime thread in iOS, which means that you'll have to write (at least your audio code) in a realtime-safe "non blocking language". The most obvious choice for this is C (not C++).

    For UI my personal recommendation would be to skip 3rd party frameworks and stick to pure native Apple stuff. I'm still using Objective-C with UIKit, but today there are probably other choices.

    In my experience, if you stick with Apple's own native libraries, the chances of stuff breaking with iOS updates are fairly small. Once you start using JUCE and things like that it becomes a crapshoot every summer.

    Agree with using Apple-native libraries and frameworks. Starting from ground zero, today, I would guess that Swift/SwiftUI is easier to learn than Objective-C/UIKit...but that's just a guess after many years of using both.

    I'm curious about using pure C for audio code. What's the scope of the audio code in this context? I have core synthesis code (the actual generator functions) in C, but I find it very hard to not use C++. Apple's template examples also use C++ for a lot of AUv3 boilerplate, although C seems to be mixed in freely. A lot of examples I've seen while learning audio coding use "C" in the sense that they are using C++ and avoiding classes. I see this a lot in VCV Rack module code, and in Eurorack firmware. I'm sure not everyone does it that way, so I'd like to know more about how you approach it.

    Good point.

    Generally any parts of your code that get called from the audio thread must be non-locking and not do any dynamic memory allocation. If you do anyway, your code may run fine, until it doesn't, and then the issues are a real pain to debug.

    You are correct that some C++ is realtime safe. But 80% isn't, so you really have to know what you're doing. That's why I generally recommend beginners to stick to C because it's really hard to figure out which C++ bits to use and which to avoid. I you can solve an issue in clean C, it's probably safe.

    (I actually use some C++ myself, but I make sure that any object instances are instantiated off the realtime thread, no memory is allocated during realtime execution, etc.)

    E.g. it's tempting to use C++ vectors, because who doesn't like resizable arrays? But that's asking for trouble, as are many of the most convenient and alluring C++ patterns :)

    Here's an old (but gold) blog by our resident hero @Michael , which is always a good read for anyone wanting to start in audio software development:

    https://atastypixel.com/four-common-mistakes-in-audio-development/

  • @tom_ward said:

    @SevenSystems said:
    If you want to make a living off iOS music apps, after years of development and hard work, don't be crazy and expect more than $1500 / month, tops!

    @yellow_eyez said:

    @tom_ward said:
    The below is all IMO:

    Learn to compartmentalize, and get very good at it. Diving head-first into an app idea without knowing modern software engineering will get overwhelming in the first 10 minutes.

    For a music app you're going to need to learn, in no specific order:

    • UI development
    • Data management
    • File system interactions
    • Threading and parallelization
    • MIDI message building, receiving, synchronization
    • Audio subsystem basics, even if using AudioKit/similar
    • Synthesis basics, if making a synth app, even if using AudioKit/similar

    UI, specifically:
    Learn how they are composed, how basic interaction feedback works, and how to manipulate data using the UI. When you get the hang of this area, it should be clear why you can focus on it in isolation without digging into the music/etc. tasks you really want to build. Some systems like JUCE will provide UI tooling that could make your job faster. If you're making an iOS app, try using SwiftUI to build out some simple apps just to get an idea of how the system works.

    Audio/MIDI:
    Get a MIDI monitor app, of your choice, that lets you see the messages in hex. It's important to understand what MIDI messages are, how they are transmitted, and to build some muscle memory with the standard. There are libraries to help deal with MIDI, which are well worth using, but you need to know what they are doing to utilize them well. Likewise, with audio, do the research to develop an understanding of realtime audio systems. If making an iOS app, develop a working knowledge of CoreAudio, how the AU graph works, etc. This will go a long way towards your success, even if you end up using AudioKit or JUCE.

    Everything else:
    You will encounter all the other topics repeatedly while working on the two core areas above. Take the time to understand how each thing is working. It's critical to separate your UI from your audio/MIDI thread(s), for example, so take the time to learn why.

    If you're stuck in and feeling overwhelmed, break a problem into smaller problems and solve something. This is a long road, just keep taking steps and over time things will get easier.

    One last thought:
    Everyone is going to have an opinion on what language or framework to use. Most people will be giving you good advice, so it's going to be up to you to determine what tools you can work with. Languages like Swift do a lot for you, which may ease the initial learning curve. Languages like C++ will be comparatively punishing to learn, but you will likely need to learn some of it in the end for this type of app. Look at problem solutions on StackOverflow, Xcode project templates, JUCE project templates, etc. Expose your mind to everything and see what looks like the right way to dip your toes in.

    Good post

    One question : what do you think is the best language to learn? For all purposes not just iOS , c or c++ or ???

    JavaScript. It's everywhere, can be used to script in many environments, has insanely good runtimes now that rival C/C++ in performance, and you're prepared to use web technologies, which can be used to build anything nowadays (trust me, I know -- I HAVE built my ENTIRE SOFTWARE STACK using web technologies 😂)

    EDIT: By "best" I don't mean "most elegant" or "most well-designed". I don't program in JavaScript myself, I've designed my own programming language and a transpiler that outputs JavaScript. By "best" here I mean "most versatile" and "future-proof".

    In many cases is the runtime performance rivaling C++ because internally it has been transpiled to C++, or leveraging C++ libraries? I think this is where it becomes muddy for me when determining these things.

    It is internally compiled ("Just-In-Time compilation" or JIT) -- if using C/C++ as an intermediate or directly to machine code, I don't know. Yes, that's why it's so fast.

    I have a lot of projects involving Eurorack firmware. There's no point in me writing Javascript which is later just transpiled into C++ if I can simply write the C++. This is a niche scenario, but for the purpose of this discussion I'm curious to know your thoughts.

    Sorry I have no idea about Eurorack, but it's reasonable to assume that JavaScript is useless there, yeah 😄

  • @seonnthaproducer said:

    @SevenSystems said:
    If you want to make a living off iOS music apps, after years of development and hard work, don't be crazy and expect more than $1500 / month, tops!

    @yellow_eyez said:

    @tom_ward said:
    The below is all IMO:

    Learn to compartmentalize, and get very good at it. Diving head-first into an app idea without knowing modern software engineering will get overwhelming in the first 10 minutes.

    For a music app you're going to need to learn, in no specific order:

    • UI development
    • Data management
    • File system interactions
    • Threading and parallelization
    • MIDI message building, receiving, synchronization
    • Audio subsystem basics, even if using AudioKit/similar
    • Synthesis basics, if making a synth app, even if using AudioKit/similar

    UI, specifically:
    Learn how they are composed, how basic interaction feedback works, and how to manipulate data using the UI. When you get the hang of this area, it should be clear why you can focus on it in isolation without digging into the music/etc. tasks you really want to build. Some systems like JUCE will provide UI tooling that could make your job faster. If you're making an iOS app, try using SwiftUI to build out some simple apps just to get an idea of how the system works.

    Audio/MIDI:
    Get a MIDI monitor app, of your choice, that lets you see the messages in hex. It's important to understand what MIDI messages are, how they are transmitted, and to build some muscle memory with the standard. There are libraries to help deal with MIDI, which are well worth using, but you need to know what they are doing to utilize them well. Likewise, with audio, do the research to develop an understanding of realtime audio systems. If making an iOS app, develop a working knowledge of CoreAudio, how the AU graph works, etc. This will go a long way towards your success, even if you end up using AudioKit or JUCE.

    Everything else:
    You will encounter all the other topics repeatedly while working on the two core areas above. Take the time to understand how each thing is working. It's critical to separate your UI from your audio/MIDI thread(s), for example, so take the time to learn why.

    If you're stuck in and feeling overwhelmed, break a problem into smaller problems and solve something. This is a long road, just keep taking steps and over time things will get easier.

    One last thought:
    Everyone is going to have an opinion on what language or framework to use. Most people will be giving you good advice, so it's going to be up to you to determine what tools you can work with. Languages like Swift do a lot for you, which may ease the initial learning curve. Languages like C++ will be comparatively punishing to learn, but you will likely need to learn some of it in the end for this type of app. Look at problem solutions on StackOverflow, Xcode project templates, JUCE project templates, etc. Expose your mind to everything and see what looks like the right way to dip your toes in.

    Good post

    One question : what do you think is the best language to learn? For all purposes not just iOS , c or c++ or ???

    JavaScript. It's everywhere, can be used to script in many environments, has insanely good runtimes now that rival C/C++ in performance, and you're prepared to use web technologies, which can be used to build anything nowadays (trust me, I know -- I HAVE built my ENTIRE SOFTWARE STACK using web technologies 😂)

    EDIT: By "best" I don't mean "most elegant" or "most well-designed". I don't program in JavaScript myself, I've designed my own programming language and a transpiler that outputs JavaScript. By "best" here I mean "most versatile" and "future-proof".

    I could never get a good workflow working with JavaScript directly on the iPad.

    Oh I don't think you can use an iPad for serious software development. I was just generally commenting on the programming language question, not specifically on iPad or even for music app development :)

    WebMIDI wasn’t possible on the chrome or the safari version on iOS. But it was worth looking into, especially with the chat I had in Sweden with the Klevgrand developers earlier this year.

    Yes, last time I checked, Safari didn't support WebMIDI (but that's not surprising, Safari is "the new MSIE" or has actually already "surpassed" that classic status... but not in a good way).

    My take - I like WebMIDI, and Tone.js. It’s just not for me.

    I have never used Tone.js as I tend to avoid frameworks and libraries like the plague.

    I did see a ton of amazing scripts using the scriptable and Jayson apps but once I realized I could run a decent Python using Pythonista, I stuck with that and never looked back.

    Python is definitely a more elegant language than JavaScript! 😃 Though probably not as much general-purpose usefulness. And the runtimes also tend to be slower.

    But I do love messing around with json files and changing the nature of a project by adjusting a few parameters.

    Yes, JSON is a good general-purpose data serialization format.

  • edited December 2024

    @brambos said:

    @tom_ward said:

    @brambos said:
    If you want to do audio, it will have to run on a realtime thread in iOS, which means that you'll have to write (at least your audio code) in a realtime-safe "non blocking language". The most obvious choice for this is C (not C++).

    For UI my personal recommendation would be to skip 3rd party frameworks and stick to pure native Apple stuff. I'm still using Objective-C with UIKit, but today there are probably other choices.

    In my experience, if you stick with Apple's own native libraries, the chances of stuff breaking with iOS updates are fairly small. Once you start using JUCE and things like that it becomes a crapshoot every summer.

    Agree with using Apple-native libraries and frameworks. Starting from ground zero, today, I would guess that Swift/SwiftUI is easier to learn than Objective-C/UIKit...but that's just a guess after many years of using both.

    I'm curious about using pure C for audio code. What's the scope of the audio code in this context? I have core synthesis code (the actual generator functions) in C, but I find it very hard to not use C++. Apple's template examples also use C++ for a lot of AUv3 boilerplate, although C seems to be mixed in freely. A lot of examples I've seen while learning audio coding use "C" in the sense that they are using C++ and avoiding classes. I see this a lot in VCV Rack module code, and in Eurorack firmware. I'm sure not everyone does it that way, so I'd like to know more about how you approach it.

    Good point.

    Generally any parts of your code that get called from the audio thread must be non-locking and not do any dynamic memory allocation. If you do anyway, your code may run fine, until it doesn't, and then the issues are a real pain to debug.

    You are correct that some C++ is realtime safe. But 80% isn't, so you really have to know what you're doing. That's why I generally recommend beginners to stick to C because it's really hard to figure out which C++ bits to use and which to avoid. I you can solve an issue in clean C, it's probably safe.

    (I actually use some C++ myself, but I make sure that any object instances are instantiated off the realtime thread, no memory is allocated during realtime execution, etc.)

    E.g. it's tempting to use C++ vectors, because who doesn't like resizable arrays? But that's asking for trouble, as are many of the most convenient and alluring C++ patterns :)

    Here's an old (but gold) blog by our resident hero @Michael , which is always a good read for anyone wanting to start in audio software development:

    https://atastypixel.com/four-common-mistakes-in-audio-development/

    I remember during my first semester of University being able to grasp the concepts of programming when we used MATLAB scripting. We learned all the basics of programming, and they used it as a tool to teach us object oriented programming.

    Next semester was C, and it was a nightmare for me and most of the class members. Once we got to pointers, and memory allocation, half of the class dropped out.

    I tackled it, and a few other dedicated programming classes, and that’s what gave me the core concepts that have stayed with me to date. We used C for an automated crane, paired it with MPLABX to program a PIC microcontroller for a self driving car with a robotic gripper attached. It was great, then I realized I could do the same thing on Arduino and make it easy for beginners to learn it.

    All this to say, C is not a beginner friendly way to do iOS. It is very easy to lose motivation sitting in one place trying to magically figure out how to solve a problem.

    You can always optimize programs, use different libraries, and programming languages to get similar results. Just like we produce using GarageBand, Logic Pro, Pro Tools, etc…, there are many tools to get you results.

    I’m of the school of thought to get the work started as simple as possible, then decide if you want to make it more advanced, or you want to do other cool things, knowing you’ve done what you set out to do.

    Plus, we’re in the age of AI. I’ve literally sent my old VHDL code to ChatGPT and it explained to me exactly what I was doing at the time and gave me recommendations on how to do it easily, with modern technology.

    SPEAKER PROJECT : UNIVERSITY

    This was 10 years ago…

    And I learned a lot of lessons this year. It is very easy to have ideas. People have a ton of them. It’s the way you solve the problem, and execution that matters.

  • I think that if you consider “C” to be too difficult to learn, perhaps making performance-optimized audio plugins is not a realistic goal?

    Not everything in this world is easy mode, unfortunately, and sometimes you have to put in the work.

  • edited December 2024

    @brambos said:
    I think that if you consider “C” to be too difficult to learn, perhaps making performance-optimized audio plugins is not a realistic goal?

    Not everything in this world is easy mode, unfortunately, and sometimes you have to put in the work.

    Absolutely, I understand your perspective, and that’s why I recommended starting with simpler options before delving deeper. Jumping straight into C is definitely a valid approach for some, but it’s not the only path.

    As someone with 10 years of experience programming in C, I’d never advise beginners—whether it’s my kids or anyone exploring programming for fun robot, or software design projects—to start there. Tools like Scratch, Python, or even ChatGPT offer a far gentler introduction. It’s not about underestimating their ability to learn but about recognizing that there’s no need to reinvent the wheel. Once they grasp the basics and build confidence, they can dive deeper into areas like performance optimization or lower-level programming when it makes sense.

  • @SevenSystems said:

    @tom_ward said:

    @SevenSystems said:
    If you want to make a living off iOS music apps, after years of development and hard work, don't be crazy and expect more than $1500 / month, tops!

    @yellow_eyez said:

    @tom_ward said:
    The below is all IMO:

    Learn to compartmentalize, and get very good at it. Diving head-first into an app idea without knowing modern software engineering will get overwhelming in the first 10 minutes.

    For a music app you're going to need to learn, in no specific order:

    • UI development
    • Data management
    • File system interactions
    • Threading and parallelization
    • MIDI message building, receiving, synchronization
    • Audio subsystem basics, even if using AudioKit/similar
    • Synthesis basics, if making a synth app, even if using AudioKit/similar

    UI, specifically:
    Learn how they are composed, how basic interaction feedback works, and how to manipulate data using the UI. When you get the hang of this area, it should be clear why you can focus on it in isolation without digging into the music/etc. tasks you really want to build. Some systems like JUCE will provide UI tooling that could make your job faster. If you're making an iOS app, try using SwiftUI to build out some simple apps just to get an idea of how the system works.

    Audio/MIDI:
    Get a MIDI monitor app, of your choice, that lets you see the messages in hex. It's important to understand what MIDI messages are, how they are transmitted, and to build some muscle memory with the standard. There are libraries to help deal with MIDI, which are well worth using, but you need to know what they are doing to utilize them well. Likewise, with audio, do the research to develop an understanding of realtime audio systems. If making an iOS app, develop a working knowledge of CoreAudio, how the AU graph works, etc. This will go a long way towards your success, even if you end up using AudioKit or JUCE.

    Everything else:
    You will encounter all the other topics repeatedly while working on the two core areas above. Take the time to understand how each thing is working. It's critical to separate your UI from your audio/MIDI thread(s), for example, so take the time to learn why.

    If you're stuck in and feeling overwhelmed, break a problem into smaller problems and solve something. This is a long road, just keep taking steps and over time things will get easier.

    One last thought:
    Everyone is going to have an opinion on what language or framework to use. Most people will be giving you good advice, so it's going to be up to you to determine what tools you can work with. Languages like Swift do a lot for you, which may ease the initial learning curve. Languages like C++ will be comparatively punishing to learn, but you will likely need to learn some of it in the end for this type of app. Look at problem solutions on StackOverflow, Xcode project templates, JUCE project templates, etc. Expose your mind to everything and see what looks like the right way to dip your toes in.

    Good post

    One question : what do you think is the best language to learn? For all purposes not just iOS , c or c++ or ???

    JavaScript. It's everywhere, can be used to script in many environments, has insanely good runtimes now that rival C/C++ in performance, and you're prepared to use web technologies, which can be used to build anything nowadays (trust me, I know -- I HAVE built my ENTIRE SOFTWARE STACK using web technologies 😂)

    EDIT: By "best" I don't mean "most elegant" or "most well-designed". I don't program in JavaScript myself, I've designed my own programming language and a transpiler that outputs JavaScript. By "best" here I mean "most versatile" and "future-proof".

    In many cases is the runtime performance rivaling C++ because internally it has been transpiled to C++, or leveraging C++ libraries? I think this is where it becomes muddy for me when determining these things.

    It is internally compiled ("Just-In-Time compilation" or JIT) -- if using C/C++ as an intermediate or directly to machine code, I don't know. Yes, that's why it's so fast.

    I have a lot of projects involving Eurorack firmware. There's no point in me writing Javascript which is later just transpiled into C++ if I can simply write the C++. This is a niche scenario, but for the purpose of this discussion I'm curious to know your thoughts.

    Sorry I have no idea about Eurorack, but it's reasonable to assume that JavaScript is useless there, yeah 😄

    Thanks. Definitely the ability to compile it, vs. using it interpreted in a browser, is powerful! I'm always tempted to revisit this, as it's a language that's used everywhere as you noted. Is your own language public, or something you just use internally for yourself? Would it be beginner friendly?

  • @brambos said:

    @tom_ward said:

    @brambos said:
    If you want to do audio, it will have to run on a realtime thread in iOS, which means that you'll have to write (at least your audio code) in a realtime-safe "non blocking language". The most obvious choice for this is C (not C++).

    For UI my personal recommendation would be to skip 3rd party frameworks and stick to pure native Apple stuff. I'm still using Objective-C with UIKit, but today there are probably other choices.

    In my experience, if you stick with Apple's own native libraries, the chances of stuff breaking with iOS updates are fairly small. Once you start using JUCE and things like that it becomes a crapshoot every summer.

    Agree with using Apple-native libraries and frameworks. Starting from ground zero, today, I would guess that Swift/SwiftUI is easier to learn than Objective-C/UIKit...but that's just a guess after many years of using both.

    I'm curious about using pure C for audio code. What's the scope of the audio code in this context? I have core synthesis code (the actual generator functions) in C, but I find it very hard to not use C++. Apple's template examples also use C++ for a lot of AUv3 boilerplate, although C seems to be mixed in freely. A lot of examples I've seen while learning audio coding use "C" in the sense that they are using C++ and avoiding classes. I see this a lot in VCV Rack module code, and in Eurorack firmware. I'm sure not everyone does it that way, so I'd like to know more about how you approach it.

    Good point.

    Generally any parts of your code that get called from the audio thread must be non-locking and not do any dynamic memory allocation. If you do anyway, your code may run fine, until it doesn't, and then the issues are a real pain to debug.

    You are correct that some C++ is realtime safe. But 80% isn't, so you really have to know what you're doing. That's why I generally recommend beginners to stick to C because it's really hard to figure out which C++ bits to use and which to avoid. I you can solve an issue in clean C, it's probably safe.

    (I actually use some C++ myself, but I make sure that any object instances are instantiated off the realtime thread, no memory is allocated during realtime execution, etc.)

    E.g. it's tempting to use C++ vectors, because who doesn't like resizable arrays? But that's asking for trouble, as are many of the most convenient and alluring C++ patterns :)

    Here's an old (but gold) blog by our resident hero @Michael , which is always a good read for anyone wanting to start in audio software development:

    https://atastypixel.com/four-common-mistakes-in-audio-development/

    Thanks for expanding on that. :smile:

    I get what you're saying about C++ leaving a lot of room for breaking the realtime rules. It would be pretty hard to debug an issue caused by using a vector in a realtime thread, for sure...not something I'd want to start my programming journey with. In that light, recommending C makes sense.

  • @seonnthaproducer said:

    @brambos said:
    I think that if you consider “C” to be too difficult to learn, perhaps making performance-optimized audio plugins is not a realistic goal?

    Not everything in this world is easy mode, unfortunately, and sometimes you have to put in the work.

    Absolutely, I understand your perspective, and that’s why I recommended starting with simpler options before delving deeper. Jumping straight into C is definitely a valid approach for some, but it’s not the only path.

    As someone with 10 years of experience programming in C, I’d never advise beginners—whether it’s my kids or anyone exploring programming for fun robot, or software design projects—to start there. Tools like Scratch, Python, or even ChatGPT offer a far gentler introduction. It’s not about underestimating their ability to learn but about recognizing that there’s no need to reinvent the wheel. Once they grasp the basics and build confidence, they can dive deeper into areas like performance optimization or lower-level programming when it makes sense.

    These are interesting points. I would argue that in many ways, C represents the basics better than newer languages. But our expectations from software have become so large that it's overwhelming to imagine how to create modern apps with it, especially if starting from zero.

  • @tom_ward said:

    @seonnthaproducer said:

    @brambos said:
    I think that if you consider “C” to be too difficult to learn, perhaps making performance-optimized audio plugins is not a realistic goal?

    Not everything in this world is easy mode, unfortunately, and sometimes you have to put in the work.

    Absolutely, I understand your perspective, and that’s why I recommended starting with simpler options before delving deeper. Jumping straight into C is definitely a valid approach for some, but it’s not the only path.

    As someone with 10 years of experience programming in C, I’d never advise beginners—whether it’s my kids or anyone exploring programming for fun robot, or software design projects—to start there. Tools like Scratch, Python, or even ChatGPT offer a far gentler introduction. It’s not about underestimating their ability to learn but about recognizing that there’s no need to reinvent the wheel. Once they grasp the basics and build confidence, they can dive deeper into areas like performance optimization or lower-level programming when it makes sense.

    These are interesting points. I would argue that in many ways, C represents the basics better than newer languages. But our expectations from software have become so large that it's overwhelming to imagine how to create modern apps with it, especially if starting from zero.

    Exactly. As time goes on, we gain new tools and ways to solve problems. Things scale in scope.

    I remember learning Assembly Language in my early programming days. There’s no way in hell I’m ever doing a project in assembly. Rollercoaster tycoon is an amazing game, yeah. But, it’s also hard to maintain unless you have that skillset, and as time goes on, it’s harder to find people who would dedicate a lot of time to learn ancient code.

    C is low level enough that you can get a lot
    done, and it can be taught, but for a lot of times, I’d rather use Python to prove a concept or prototype, then when I have the go-ahead, I can refine it using C.

    Make the most of the time you have. Solve the problem and go to the next phase.

    Yeah, this song has been on my playlist. Arcane is an insanely great show.

  • @seonnthaproducer said:
    ...
    Make the most of the time you have. Solve the problem and go to the next phase.

    Wise words! Except that as a beginner, you usually have no idea how much work will hide behind the choice of a certain way to go. Things that look simple at first sight might need quite an amount of deep diving into code or even re-think the whole concept once you've hit the first road block, and I believe that audio software is a great example here 😉

    On the other hand, if all you want is a rough proof of concept and your app doesn't need to be maintained in the future, there are certainly a number of toolkits and libraries to get you going.

    Maybe @mikejohn can elaborate a little about what he has in mind?

  • @tom_ward said:

    @SevenSystems said:

    @tom_ward said:

    @SevenSystems said:
    If you want to make a living off iOS music apps, after years of development and hard work, don't be crazy and expect more than $1500 / month, tops!

    @yellow_eyez said:

    @tom_ward said:
    The below is all IMO:

    Learn to compartmentalize, and get very good at it. Diving head-first into an app idea without knowing modern software engineering will get overwhelming in the first 10 minutes.

    For a music app you're going to need to learn, in no specific order:

    • UI development
    • Data management
    • File system interactions
    • Threading and parallelization
    • MIDI message building, receiving, synchronization
    • Audio subsystem basics, even if using AudioKit/similar
    • Synthesis basics, if making a synth app, even if using AudioKit/similar

    UI, specifically:
    Learn how they are composed, how basic interaction feedback works, and how to manipulate data using the UI. When you get the hang of this area, it should be clear why you can focus on it in isolation without digging into the music/etc. tasks you really want to build. Some systems like JUCE will provide UI tooling that could make your job faster. If you're making an iOS app, try using SwiftUI to build out some simple apps just to get an idea of how the system works.

    Audio/MIDI:
    Get a MIDI monitor app, of your choice, that lets you see the messages in hex. It's important to understand what MIDI messages are, how they are transmitted, and to build some muscle memory with the standard. There are libraries to help deal with MIDI, which are well worth using, but you need to know what they are doing to utilize them well. Likewise, with audio, do the research to develop an understanding of realtime audio systems. If making an iOS app, develop a working knowledge of CoreAudio, how the AU graph works, etc. This will go a long way towards your success, even if you end up using AudioKit or JUCE.

    Everything else:
    You will encounter all the other topics repeatedly while working on the two core areas above. Take the time to understand how each thing is working. It's critical to separate your UI from your audio/MIDI thread(s), for example, so take the time to learn why.

    If you're stuck in and feeling overwhelmed, break a problem into smaller problems and solve something. This is a long road, just keep taking steps and over time things will get easier.

    One last thought:
    Everyone is going to have an opinion on what language or framework to use. Most people will be giving you good advice, so it's going to be up to you to determine what tools you can work with. Languages like Swift do a lot for you, which may ease the initial learning curve. Languages like C++ will be comparatively punishing to learn, but you will likely need to learn some of it in the end for this type of app. Look at problem solutions on StackOverflow, Xcode project templates, JUCE project templates, etc. Expose your mind to everything and see what looks like the right way to dip your toes in.

    Good post

    One question : what do you think is the best language to learn? For all purposes not just iOS , c or c++ or ???

    JavaScript. It's everywhere, can be used to script in many environments, has insanely good runtimes now that rival C/C++ in performance, and you're prepared to use web technologies, which can be used to build anything nowadays (trust me, I know -- I HAVE built my ENTIRE SOFTWARE STACK using web technologies 😂)

    EDIT: By "best" I don't mean "most elegant" or "most well-designed". I don't program in JavaScript myself, I've designed my own programming language and a transpiler that outputs JavaScript. By "best" here I mean "most versatile" and "future-proof".

    In many cases is the runtime performance rivaling C++ because internally it has been transpiled to C++, or leveraging C++ libraries? I think this is where it becomes muddy for me when determining these things.

    It is internally compiled ("Just-In-Time compilation" or JIT) -- if using C/C++ as an intermediate or directly to machine code, I don't know. Yes, that's why it's so fast.

    I have a lot of projects involving Eurorack firmware. There's no point in me writing Javascript which is later just transpiled into C++ if I can simply write the C++. This is a niche scenario, but for the purpose of this discussion I'm curious to know your thoughts.

    Sorry I have no idea about Eurorack, but it's reasonable to assume that JavaScript is useless there, yeah 😄

    Thanks. Definitely the ability to compile it, vs. using it interpreted in a browser, is powerful! I'm always tempted to revisit this, as it's a language that's used everywhere as you noted. Is your own language public, or something you just use internally for yourself? Would it be beginner friendly?

    Sorry, not public or open-source... is it beginner-friendly? 🤔 maybe more so than Javascript, as it's far cleaner and more expressive... it's actually a CoffeeScript dialect, so much of the credit has to go to the revolutionary thinking and work of Jeremy Ashkenas!

  • @rs2000 said:

    @seonnthaproducer said:
    ...
    Make the most of the time you have. Solve the problem and go to the next phase.

    Wise words! Except that as a beginner, you usually have no idea how much work will hide behind the choice of a certain way to go. Things that look simple at first sight might need quite an amount of deep diving into code or even re-think the whole concept once you've hit the first road block, and I believe that audio software is a great example here 😉

    On the other hand, if all you want is a rough proof of concept and your app doesn't need to be maintained in the future, there are certainly a number of toolkits and libraries to get you going.

    Maybe @mikejohn can elaborate a little about what he has in mind?

    First of all thanks for all the responses .. I definitely have a better sense of what it takes to build an app than I did before making the post.

    I’m reluctant to get into too much detail at the moment, but one of the “simpler” ideas I have isn’t an audio generator, but rather a kind of global organization system for presets .. something to help the unreliable memory remember where (synth + bank + preset) that perfect bass sound is, for example.

  • edited December 2024

    @mikejohn said:

    @rs2000 said:

    @seonnthaproducer said:
    ...
    Make the most of the time you have. Solve the problem and go to the next phase.

    Wise words! Except that as a beginner, you usually have no idea how much work will hide behind the choice of a certain way to go. Things that look simple at first sight might need quite an amount of deep diving into code or even re-think the whole concept once you've hit the first road block, and I believe that audio software is a great example here 😉

    On the other hand, if all you want is a rough proof of concept and your app doesn't need to be maintained in the future, there are certainly a number of toolkits and libraries to get you going.

    Maybe @mikejohn can elaborate a little about what he has in mind?

    First of all thanks for all the responses .. I definitely have a better sense of what it takes to build an app than I did before making the post.

    I’m reluctant to get into too much detail at the moment, but one of the “simpler” ideas I have isn’t an audio generator, but rather a kind of global organization system for presets .. something to help the unreliable memory remember where (synth + bank + preset) that perfect bass sound is, for example.

    I would say to save presets on your favorite DAW and go from there. I personally save audio presets on Drambo, Audiobus 3, or screenshot apps and label them like

    BASS - Southern Solace
    LEAD - Rave Master

    Then I just open Audiobus 3, and open the presets I saved and continue from where I stopped at.

    Nowadays, I’ve gone through a lot of my favorite synths, and I’ve started migrating them all into Drambo. That way, I can run it as an AUv3 and share them with others who don’t have the app but want the sound I’ve made.

    But if you want to actually do that project, I’d say this. Start by seeing what’s out there first

    1. Find that sound does exist…maybe start with that and see what it’s missing before you begin building the app. Get ideas from other apps that do what you want, combine them, then make a prototype off of them. Even if it means screenshotting them.

    https://apps.apple.com/ca/app/find-that-sound/id6469339032

    1. Look for iOS and desktop tools that do similar things and see what works and what doesn’t work. Write out the exact feature you want, and how you want it to work. For example: I want a way to save the state of an application.

    2. Use Apple Keynote or Google Slides or Microsoft PowerPoint to make a visual of how the app will look like. And what I mean is each of the menus of the app. Plan how you want it to work. Best part is since it’s already on an iPhone and iPad, you can test out portrait and landscape mode. This is what they call UX/UI. But honestly, it means, “make stuff look and feel good to use”

    3. Use Python and ChatGPT to make the algorithm. I’m serious on this. It’s the fastest way to begin. Say something like

    “ what is a simple way to organize presets on iOS? How can I accomplish this on iOS”

    “Make a code that does that using Python..”
    It will give you some rough ideas. It will even write code for you.

    You can also do the same on C. I recommend starting it first with Python because it’s a lot more forgiving on syntax and you can quickly understand the code.

    Then have it rewrite your Python code into C, and start optimizing it.

    Again, this won’t be your final code. Developers are constantly adding new features or having to deal with compatibilities, or finding new ways to solve a problem.

    1. Join the visual portion with the algorithm. In other words, it’s a lot of conditional statements. For example : if I push button, use the reverb. Else, don’t use the reverb.

    This is what I recommend, but there are other ways to solve the same problem. Break it down into small steps, or even ask ChatGPT to give you a step by step plan on how to tackle it based on what you know. I wish you great success.

  • @mikejohn said:
    I’m reluctant to get into too much detail at the moment, but one of the “simpler” ideas I have isn’t an audio generator, but rather a kind of global organization system for presets .. something to help the unreliable memory remember where (synth + bank + preset) that perfect bass sound is, for example.

    One one interpretation this app has nothing to do with music, audio or midi. It's just a simple little database app, where you store little bits of patch/preset info and look them up later. (This is actually probably more suitable for beginning programming.) Is that what you mean? Or something else?

  • @hes said:

    @mikejohn said:
    I’m reluctant to get into too much detail at the moment, but one of the “simpler” ideas I have isn’t an audio generator, but rather a kind of global organization system for presets .. something to help the unreliable memory remember where (synth + bank + preset) that perfect bass sound is, for example.

    One one interpretation this app has nothing to do with music, audio or midi. It's just a simple little database app, where you store little bits of patch/preset info and look them up later. (This is actually probably more suitable for beginning programming.) Is that what you mean? Or something else?

    Yeah pretty much .. seems a more realistic place to start than an all out music app

  • @mikejohn said:

    @hes said:

    @mikejohn said:
    I’m reluctant to get into too much detail at the moment, but one of the “simpler” ideas I have isn’t an audio generator, but rather a kind of global organization system for presets .. something to help the unreliable memory remember where (synth + bank + preset) that perfect bass sound is, for example.

    One one interpretation this app has nothing to do with music, audio or midi. It's just a simple little database app, where you store little bits of patch/preset info and look them up later. (This is actually probably more suitable for beginning programming.) Is that what you mean? Or something else?

    Yeah pretty much .. seems a more realistic place to start than an all out music app

    Are you already a Mac user? You can download and start with Xcode for free, and dip your toes in to see how it goes.

    Make a new project, pick the "App" template (it will ask you to pick a template), and see if you can get it to run on your iPhone or iPad. This template produces the standard "hello world" using SwiftUI. If that process doesn't dissuade you, start working with ChatGPT/similar to get something going with:

    • SwiftUI
    • SwiftData

    To see what would happen, I gave ChatGPT the following prompt:
    "Please generate a simple app template that is written in Swift, using SwiftUI and SwiftData. I want to have a simple database, and the UI should show the contents of this database."

    To be fair, the code it gave me didn't compile but it was pretty close to working. You'd need to think through and make a better prompt, but what's important is to tell it the right frameworks to use.

Sign In or Register to comment.