The Audio Programmer Podcast Episode 11 (Eyal Amir)

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
can you hear my audio now i can earlier you had a little bit of a delay yes yes i'm just fixing it so it's fine now uh yeah seems fine now can you hear my audio now i can earlier you had a little bit of a delay we are live we're live oh my god awesome um cool i'm i'm going to uh just do a little social blast here all right so are we just on youtube yep we're on youtube right now hey people the audio program this let's post on the discord maybe yep absolutely boom there it is and we'll go to linkedin and gotta tag you in as well that's it and discord i really need to get one of those things that just post it everywhere should i do should i do an everybody blast i only normally do those for a really big things i'll just yeah yeah why not let's bring them in they might have questions and and uh things they can actually add to our uh to our dialogue yeah that sounds great yeah okay let's bring everybody in and facebook okay how many people do we have joining us so we have five people joining us hey five people who's here with us come say hi those six people hey what's up daniel if you don't know daniel daniel is uh the person who makes our soul tutorials and uh i love how we could just hit a button and it's just like we're we're there we're out there to the world i think that's so cool let me pop out the chat here before we [Music] yeah nine people 12 people though i see nikolai on the chat saying that he's been learning juice for a bit and he's been uh has been on the discord and learning from the people on discord which is awesome yeah super awesome yeah thanks for joining us nikolai hello adam yeah we'll give a couple we'll give a couple more minutes for people to to step in and say hi you know it's really kind of amazing how the discord uh community has evolved it's been it's been something hasn't it it's really been something and uh it's it there are so many discussions that are happening nowadays that i can't even keep i can't even keep up with them all uh it's it's pretty uh it's pretty scary in some ways yes i mean it's really evolved in some of the some of the uh some of the discussions are in topics that i know nothing about right there's all the you know now there's a blueprint channel and stuff that i'm i'm reading about and i'm i'm happy to learn about but i you know like there's all these experts in specific fields that are yeah we got blueprint we got max msp yeah it's it's uh it's pretty amazing we're gonna get nick we're gonna get nick on here soon as well to talk about blueprint and uh what he's doing with that you got a phone call my mom is calling okay yeah thanks thanks everybody who's joining us hope you're having a great friday uh we we just kind of did this as a as a last minute thing really we just thought uh we were talking yesterday and we we were talking about some stuff and y'all said you know what we should really do a video about this and uh i said yeah that sounds great he says um should we do one tomorrow and i thought um yeah sure why not because we've been meaning to do videos for a while now and i always get caught up in meetings and paperwork and stuff and then uh eal invited me in officially uh to a meeting so once it's once it's in the diary it's official so uh so yeah so there's no agenda really here today so we thought that it would be uh pretty cool to just talk about some things that have been happening in the audio programming world so there's been a lot of exciting a lot of exciting stuff a lot of things that i've seen um some of them i could talk about some i can't really talk about uh but it's a really exciting time for audio development and um we're really uh quite humbled to be you know here able to be on one of the larger platforms where we're able to speak about this to everybody and uh yeah what uh what an awesome opportunity um so i guess first order of business would be to uh us congratulating y'all uh so yesterday you won the mini innovation award it was actually you and uh and gal as well uh so i'll let you i'll let you take the spotlight and tell tell everybody a little bit about it yeah you know that was really exciting so uh so this this there's this a new plug-in that came out uh by and it was it was created by this musician from india right his name is krishna chaitan he's a very very good musician from india and he he came uh with this idea and actually the the lead developer for this plugin was was which is uh who happens to be also my my girlfriend but she is also a very very talented developer and i was a consultant on the on the project so i kind of knew what was happening and i was uh a bit involved she was doing the the majority of the heavy lifting uh and uh and yesterday there was the midi midi uh uh innovation awards at the part of the of the namm of the virtual activities and we won and that was really exciting that uh it got some recognition on that front that's amazing yeah and uh can you tell can you tell people a little bit about the plugin what does what the plugin actually does yeah and perhaps i can even i can even show it so maybe maybe i'll give you sharing permissions here you go should be good to go now so you know you know live demos are always supposed to fail right all right so let's see let's see what's going i'm gonna uh play a few notes am i am i getting a cross uh yep yep you're all good great see i'm sending out my uh my audio my midi great okay so um so uh that was that's a problem that's meant to solve a a universal problem with uh with using uh pitch band on midi keyboards and let let me first show the problem before we show the solution so the problem was you know i'm just you can see my hands here but i just have a midi keyboard underneath my uh my screen and i'm just controlling the you know the built-in logic uh electric piano this is just whatever this is the the thing that comes with logic if you buy it and here's what happens if you try to you know if you ever use the pitch band on on the keyboard you try to control any kind of synthesizer sample or whatever so a pitchman usually has a range right usually i'm playing the note and then you pitch bend up and it goes like two semitones up or something there's usually a default interval like uh one semitone up and if you go down [Music] it's gonna go two uh two semitones sorry two semitones up and two semitones down would be the default uh in some instruments you can configure that so maybe it's you can do one octave up or down but really it's just a fixed a fixed number of semitones that you go up and down and you can try you know if you if you have very sensitive fingers you can try to control that so for example if i have this two semitones and maybe i want to pitch bend just one semitone up right i want to go to from i'm playing c and i want to go to c sharp so you have to have really sensitive fingers right you have to go something like [Music] and you can see it's really hard it's really hard like my finger is moving in these micro micro steps it's really hard to be in tune if i had played this fast and i wanted to do something like just pitch bend up to this note [Music] ah you know i'm i'm getting off to you in a bit and it's hard to play and you know you know so there's players who learned how to control this right to learn how to really find the note that they're looking for in the in the pitch bend but it's pretty it's pretty hard so and and also it's it's it's creating weird things because let's say you're playing in a key like let's say you're playing in in c major and i'm just gonna play you know just a regular c major uh key and if you're starting to use the pitch band so i press c and i pitch bend up that that makes sense that goes to d i go to d and i pitch bend up that makes sense that goes to e but then e suddenly gives me f sharp so i'm i'm kind of out of tune right it's super weird like the pitch bend gives you all these like off key notes and it doesn't make any sense so that's uh that's a that's a problem that's something that you know skilled players had to learn how to uh how to deal with right they had to like practice their fingers and when when it's just two semitones you can kind of practice it you can practice going halfway with your hand but if you're if you had like a larger interval like an octave and you wanted to go like 1 12 of the way it's almost impossible like you need to be superhuman to control the the intervals so uh so this plugin uh is called fluid pitch and what it does it actually solves that problem so i'm loading it as a midi plugin in logic or ableton live or cubase or whatever and then you can see that there's a keyboard here with the with a scale in it and what it does is that according to the notes that i'm playing it's gonna match the pitch band to the key so if i'm in c major right and i'm going to play exactly the same thing that i played before [Music] sorry my internal keyboard sounds on [Music] right so now everything is in tune and i didn't have to do anything special it just quantize it to the scale uh let's go to c minor or something right [Music] suddenly so everything is in keys this makes it really easy to play musical stuff like very uh you know very smooth musical bending you don't have to think too much about where your finger is going i'm just pushing my finger all the way up on the pitch bend uh and to make things even more complicated you can even uh get uh creative with this so first of all you can pick like different skills like you can pick a scale like uh a pentatonic or something so maybe i'll go for like a minor pentatonic and it gives me this warning that says hey you know a pentatonic has larger intervals than what your synthesizer is using so let's uh change this to 12 so that will uh it will uh it can support the larger intervals and now i have stuff like [Music] say this is my key right so maybe i'm [Music] playing and it's really cool because if you're playing uh something like maybe a blues scale right so you can do stuff like [Music] and it's really nice like you can have all these you know fine grain control over licks that you're playing which is super fun and to make things even more you know crazy uh if you have uh an mpe supported uh instrument like let's say i have something like instead of this uh you know electric piano maybe i have something like a rolly equator that's an mpe synthesizer so i'm going to pick something like the breath flute preset on the equator and i can enable mpe mode and if i have mpe mode enabled everything i just did will work uh polyphonically as well so let's go back to this c major and now i can do stuff like i can play chord and the band will actually bend each note to the right place in the scale so each note will get different bending as if i'm doing uneven bands on a c board but just with a regular keyboard so [Music] [Applause] [Music] it's super cool right it's it's stuff you could you could never do before without buying a dedicated uh a dedicated controller it's it's uh it's pretty nice stuff and it actually uh this this thing is actually pretty deep you can actually do micro tuning on individual notes and have like uh non-western scales you can pick different scale degrees uh there's a key switch feature where if you're playing live you can just map different scales to uh to like specific keys so that you can you know change from minor to major or from c major to c minor c major to d minor whatever live uh there's a bunch of like fine grained control anyway so it's a it's a it's a cool plug-in like it really uh it really helps you like play a bunch of different uh styles of music where before you had to either practice really hard or you know just give up which is what i would do i would just give up playing difficult difficult passages on the pitch band because like if i if i had to play you know a third in a pitch bend live i'd be i'd be like okay no i'm just gonna i'm just gonna use portamento or something and uh and give it up because it's too hard so this this allows you to actually uh play those and it works with every synthesizer that you're already using so it works with software synthesizers hardware synthesizers whatever you're already using for the sound source this will support so uh so it's pretty cool wow yeah that's awesome and i mean there's so many things that that uh i could ask about i guess one thing that a lot of people don't know is that you're kind of a world-class keyboardist aren't you so uh i was going to put you on the spot and see if you could play play a little tune for us you got anything that you can play like just off the top of your head i'll put you on the spot if you if you can say no if you want something i don't have any like any like fluid pitch demo ready right yeah but uh yeah but i can definitely try to play something just a regular regular uh thing that i'm i guess more more i have more practice on yeah let's try something so let me switch here my um let's let me close logic there for a second yeah by the way if you don't um if you don't know we have an audio developer community on discord and you can join us if you're curious about audio programming curious how to create things like the uh like these and you can join us over at the audioprogrammer.com forward slash community nice discord we're nearly at five grand 5 000 people on the discord now which is pretty mind-blowing i mean i remember i remember when we had like 30 people in our in our group uh yeah wow pretty pretty awesome uh yeah but uh which what you got for us yeah you got some stuff for us yes uh i'll definitely so but before i play something i see some questions on the on the live chat uh-huh uh so uh alice is asking uh does this makes does this make much more sense for mpe controllers uh i have found those quite hard to tame though uh rolly offers a lot of shaping uh for for the bands and this is actually quite right so if you have something like this like the the seaboard blocks which i which i love it's my uh uh one of my my favorite cool you know different controllers right so this gives you a lot of like fine grained control like if you want to bend from whatever you want to hold c and bend up to e flat you can bend exactly to where you want so this is actually really cool but uh i would say that this is very only suitable for very specific kind of things because it's actually way harder for a keyboard player like me who's traditionally trained on the regular instruments you know to play this so like i mean if i would just play a monophonic sound and i'd have to do a band then this this will give me like perfect control but if i would play a solo like a fast solo this is much harder to play than a regular keyboard and that's i think where uh it's interesting like something like fluid pitch is interesting because it's like it uh it will blend in when for situations when i i can't use this right like if i if i play something fast that has you know lots of finger movements and then the occasional bluesy you know pitch band i would probably not choose this yeah i would choose this if i if i do like a expressive sliding thing and it would be like so i would pick choose this in different situations right so that's why i feel like there's a trade-off you know when you have more control in something like the seaboard uh because that more control means that you lose the the bounciness you know of just because because a midi keyboard is something so simple it's almost like you know you have buttons right that you click with your fingers and uh i feel like the simplicity of the keyboard is really something that you really want in many situations like if you're playing a fast bass uh or a lead or something then you know all i don't know you don't you you really want the instrument to respond to you in this way right it's kind of like uh you know fretless bass or guitar or whatever would not be useful if you're playing a fast lead like because then those in-between uh notes and the slides are not they're like in your way they're like they're almost like noise that you don't want when you're just trying to access nose you want the threaded guitar and the threaded uh instrument so i feel like there's there's a trade-off in how those things interact uh but definitely if you want the most control you get a c board right or or or a c or block like i did right or uh something like that uh now or maybe you get an uh something like geoshred which is like an ios controller uh that's a that's a really good one that has also fine-grained control over each note and you can do uh intricate bands so i feel like you know as a player you make these decisions uh according to whatever that you actually need to play right yeah awesome do we have some more questions there we go from federer don't we yeah yeah so far says uh i have an impression that some old keyboards have only 127 discrete points in range then with large ranges like an octave the mapping is not exact could you please comment on this so uh so that's actually an interesting point right because uh okay so maybe we have to explain this low level detail which is a very interesting detail so midi right midi is a very old format right now there's going to be midi 2.0 which will uh kind of uh fix a lot of these issues but midi 1.0 the midi that existed for whatever 30 40 years is a very dumb format and the and the message the message format uh was very un uh it was a format that's not very detailed so most midi messages like if you play a note you get between 0 and 127 right you get 128 possible values which is uh very limited so for example you know if you look at it in terms of like velocities or uh more accuracy it's really not very accurate right it's really because the real world like a real piano or whatever has way more than 128 velocities there's an infinite amount or something so uh so with the pitch bend uh so the pitch bend is kind of a hack in that sense because what the pitch bend did uh pitch band would pitch bend actually has two uh different values so there's one zero to 127 uh value for the for the tune for whatever for the let's call it the notes you're bending to and then there's 128 other values for the fine grain control so uh it's possible that uh like you mentioned that older keyboards did not assign that second value and then you would really get a low uh a low resolution control but in reality i think most keyboards in the last few years definitely most modern controllers i don't know about i haven't tested like super old synth and stuff but definitely but uh but most keyboards and most soft synth they treat this as one thing so basically you get uh a resolution of 128 times 128 which is 16 000 something so so there's actually quite a big resolution on the pitch bend it's actually the the the controller with the most uh resolution in a midi keyboard so usually it's pretty uh pretty fine grain like you can even if you have an octave or two octaves you can probably hit almost every point in between because because you the resolution is uh is enough uh definitely again i haven't tested every old synth or something but it's usually fine like it's usually good enough i probably need to test with like i know old midi i know stuff from the 80s or something that could have different uh yeah yeah awesome stuff are you gonna play are you gonna play a tune for us sure team for us i was not expecting a concert but let's uh well i'll i'll i'm just going to jam on one of my compositions and see what's going to happen yeah as we do on the audio programmer podcast see what happens we'll play this can you hear me playing can you turn it up just a bit let's see my mixer so oh you know what i'm not sending my direct audio here it is [Music] how's that yeah great right so here we go [Music] do [Music] so [Music] so [Music] so so [Music] oh awesome that was amazing was that freestyle or was that uh that was a piece i i messed up some of the sections but it was uh something they wrote nobody noticed uh yeah thank you very much for that uh yeah so vato asks um what's the best tool to build modern uis with juice funny enough field and i were just talking about this um just recently um so if you're not familiar our friend daniel who's in our discord community in the audio programmer community he's actually built a fantastic tool for building uis called plug-in gui magic and you can check him out uh the name of his uh his organization is called foleys uh that's f-o-l-e-y-s finest so full leads finest and uh if you search that and i'm sure you'll find it on his github but uh that is a uh it's a great tool for building um plug-in uis quite quickly and it's almost like a uh what you see is what you get almost like a wix of uh of juice uh of juice ui building uh and we actually have a couple tutorials on the channel as well where daniel's done a walkthrough of that so uh he would appreciate your support so please uh go check it out plug in gui magic for juice yeah so cool so let's let's go back to um so your your uh the the fluid pitch blue what's that yes fluid pitch fluid pitch i'm glad i got that name right so uh so won the mini innovation award uh yesterday and um how many how many entrants were there do you happen to know oh how many entrance i don't know there were uh so the actual uh the award just had the finalists how many were considered there were like 10 finalists and actually it was such an interesting award because uh most of the participants were actually uh hardware stuff like controllers i think we're there was one uh really good by the way ipad synthesizer that was uh that was there and the rest of the stuff were all kinds of unique controllers so there was uh uh and i actually honestly i really loved a lot of the other participants so there was this guy who made this thing called places i think it's called which was like sculptures but they had like midi involved in them so you could it's super unique super interesting one guy made this really high resolution uh guitar controller uh there was this a guy that a guy made a pedal that you can use for uh like all these like non-western skills like even do uh retune your whole keyboard to like 24 steps and stuff like that so there's all these interesting uh creations in the in that award uh wow looking pretty brilliant i actually loved watching it and uh uh i actually actually today i was searching for some of the guys uh and just reached out just to talk to them because they made such cool stuff yeah so it was a very unique you know uh thing because it wasn't like a plug-in like i think we were we were we happened to be the plugin was nominated there yeah that's really that's really awesome and it it really goes to show how uh how much there is out there still to discover in terms of musical interfaces and uh and just generating sound as well i think there's a lot out there that hasn't been discovered yet and feels like an exciting time for audio in general i think audio audio development um yeah we have a few uh other kind of entities that are that are giving other perspectives on audio as well which i think is really cool like you have of course you have music hack space where the uh where the talk was held yesterday they're doing really interesting stuff giving another perspective on on audio development and uh big shout out to jb who's the head of music hackspace he is uh doing his thing there and uh doing some really awesome stuff and just seeing people really being creative at the moment and um i think if we look back even to a few years ago even to a year ago i think that the space uh to to really get in and make something serious you could only go down one of a few paths and i think those paths are now starting to open up a little bit you know you have max msp you have seoul of course that's really come on and they really came on with their 1.0 they released version 1.0 of their language and that's really doing well and bringing a lot of potential for people to get into audio development you have also nick thompson who is also doing a really cool project that is actually using javascript we're going to have nick on the channel soon to talk about that project so there seem to be some really interesting options uh out there uh yeah it's it's pretty exciting time um what do you think what do you think about all this ei you think you think we're going to be developing in c plus plus forever or do you think that some of these uh some of these other languages some of these other options are gonna be able to uh to make a debt in the market yeah you know i i think this is actually this is super exciting times the way this is concerned because things like seoul and nick's project that you just mentioned uh i'm really excited about those because i think that you know when we're making something in programming right right or whatever that doesn't mean if we're making it if we're making if we're writing code or we're building a device from parts or whatever what we're doing really is we take something that's uh that's not accessible to the user and then we make it accessible by patching things together right code or whatever and i i feel like these uh you know soul and all these you know other other solutions that are coming up uh they're really helping to uh basically expose different parts of the of the ecosystem like in in the case of soul it's the dsp right it's the single processing part and they're helping to expose it so that you don't have to touch the wires to you know to make it come together right to make something quality and i think that's that's a really good thing and i feel like a lot of different um fields have uh have made there like you know you know in game development uh you know unreal engine and unity and all these engines made it so that you can make games without necessarily touching all the you know all the internals of the system and i think that's a really good thing for audio i think it will open up a lot of different avenues for for developers and stuff yeah i think when we talk about like the future of languages and stuff like c plus you know if we're going to use c plus plus i think there will always be uh that place for c plus plus because there's always because it's it's really all about detail right and even in games you can see it even now uh so even if people write their games using unreal some studios will still make their own engine because you know if you want to do a game like spider-man you have to go deep into the system like you can't use a pre-made engine by somebody else so it's it but but it's definitely possible that the problems will be solved well enough for so that many developers will not need to touch the system right just like uh you can make a lot of good games in unity or unreal engine uh so because unless you're you want your game to like look you know have uh have like uh experimental new 3d technology you're usually okay with current engines right you just want to bring in your gameplay your story your characters whatever and it it's fine that it's not breaking any uh bringing any new technology and and soul or whatever uh faust and uh the the other uh equivalents that will come up they will allow you to do some of that right uh if you just wanna you know patch together some dsp algorithms why would you want to look at how the system works yeah yeah exactly that's that's the hang up about c plus plus is that i really i really enjoy programming in c plus plus but it takes so long to create anything that is uh really of any significance you know it's not it's very tough to do something that you can just uh do in a uh in a tutorial you know that that's really significant even when we're like we're doing a synth juice synth tutorial at the moment just the fact of wiring up the parameters and just getting the sound right and getting the envelope to sound right and you know just creating all of the scaffolding that you need around any sort of scent uh any sort of instrument that plays sound just takes just takes time to takes hours i mean you look at max msp it's literally like you know you generate you create a sign object you wire it into uh you give it a frequency you wire it into a gain and out of the of a dac and uh and you're there and you've generated it and tough to tough to argue with that yeah but but you know there's there's also the other side of that and i'm gonna uh paraphrase you know uh some of my gurus you know they're in the game world there's there's a big like this same discussion is happening in the game world because there's developers like jonathan blow uh who made this game called these games called braid and the witness and stuff like that and he's like he uh he has all these long you know uh lectures that he's doing about why it's important that you actually touch the system why using an engine is actually uh many times wrong because it kind of hides details that are crucial to what you're doing right like it might be easier but then uh but then you're losing like the magic of the of solving these problems so i'm i'm i'm living in this in between world where i feel like uh i feel like you know it's it's actually interesting to solve the system problems because some because if you manage to uh make an algorithm that has always been there but you make it with less latency and less cpu and you make the control simple accurate sometimes that's what makes it musical in in the eyes of a musician because we're all about speed and responsiveness and and that's one thing you know that max doesn't have you know i built a plug-in for denmaus right and he made the thing in max at first he had a max patch it worked just as he wanted it was like an uh an osc controller that would trigger uh all his lights light set stuff but then uh the problem with that was you know because max is not a system uh a system uh library he could not open lots of instances of that right it would overload his cpu and his in his live shows you know he needs to be able to you know to run a lot of instances of his plugins and then run the music and the lights and the video art and everything so we had to rewrite the thing in c plus plus because while the max patch was absolutely great and he could it did exactly what he needed in tr like you once you can't use something for live performance and it's not fast enough and whatever then it's almost useless right so that that's a lot of the problems i i feel like in the in the plug-in programming scene is that is that we're still not at the point where you can ignore the the system right right to the system uh but i but i do feel like that that there's a middle point there where uh especially something like soul because soul is such because soul is actually uh it compiles to a c plus plus program right it's actually something that has a lot of low level advantages so maybe something like that would actually bridge finally bridge that together you know i uh i still haven't seen any professional product that's using seoul uh but i'm really excited about it i've been to the workshops i'm really excited in about the way it's built yeah so maybe you know after a few people get used that maybe i will change my tone a bit because now there's the solution that actually works and people play live with it and yeah yeah yeah my friend uh my friend greg just chimed in and he said uh c plus plus it's like turntables and it actually brings up something that i was just thinking about which is which is interesting to me which is that uh i always think of the audio development industry almost like early 80s hip-hop in uh in some ways that we have uh we have some limitations in terms of um you know what we what we could do and how difficult it is to actually kind of get something going and because of that in a lot of ways it forces us to be more creative uh sometimes if all of the answers are if all the questions are kind of answered for us and this goes i think into any creative pursuit um when a lot of the when a lot of the answers when a lot of questions are kind of answered for you and then those answers become pretty uninteresting and it becomes a pretty dull uh pretty dull thing and we see that uh a lot i think i mean this my just my opinion but i think we see it a lot with um sometimes the music industry now in terms of uh you have dolls that have unlimited sounds and they have unlimited you can just get any plugin that emulates anything and um there are no limitations you know in terms of what you can get and um and i think that what happens is that it forces us to uh maybe limits our creativity whereas maybe if we had a limited palette of things that we'd be able to do like you could use these three instruments and you have to create a song out of them then i feel like we just get a lot more creative and we start thinking outside of outside of the lines of uh what's conventional and and we start coming up with things that are interesting like hip-hop you know like you look at the turntable as an instrument and the turntable wasn't meant to be an instrument it was something that was repurposed from uh you know from a piece of technology that was just meant to to play a record conventionally and uh and people took it and they they were actually able to uh repurpose it and extend the boundaries of it and make something that was new and interesting so i do and i think coding is like that in in a lot of ways uh in that we still have limitation uh and it forces us in ways to uh to come up with things that are maybe different from what the next developer comes up with i mean imagine if we just have like developers that imagine if we just had like a couple places where you could get code for you know a delay or for a reverb well everybody has the same delay or reverb now uh in their in their audio app or in their plugin and that to me is uh kind of boring yes exactly and and that's uh that's you know again in the game world it's a huge thing like are you using because as some people uh will say and they're it's kind of right to say that you can kind of recognize a unity game you know because i mean even though there's amazingly creative unity based games they're all using similar you know uh similar pieces if you call it that with accelerophysics engines and stuff like that so there's a sameness to to them that sometimes is not exactly you know what you uh what you want like sometimes that specialness of a great game uh you know what i'm i'm going back to like you know uh like there's there was this game you know uh a few years ago called super meat boy which is like a fast platformer game and one of the cool bits about it is that it's it's you can see that they made it with their own engine because it doesn't play like any other game it's very different like it feels cool and it's fast and it's like you can play it on your laptop and on a console and it's so there's something about the fact that it's costume and it's and and you know and it's actually interesting because there's no 3d graphics on this game which is 2d it's very basic controls that doesn't have anything that you get from an unreal unity game like there's no crazy textures that rotating and you don't get the free features but then i feel like a lot of people actually a lot of people actually connected more to to this specialness because you can see that people worked on every keyboard response right people actually sat down and programmed how would it work when you press the space bar what would happen when you do this yeah no i don't know so so i feel like music is that way too like there's a lot of the magic you know of these old instruments like you mentioned you know even a turntable or old synthesizers or the piano or whatever like the magic about them is that people actually handmade a lot of these stuff like people handle how it feels and how it would respond and i don't know so there's there's something about it that i i personally like i feel like that's also where i feel like maybe plugins that i make will be you know uh will have some emotional uh added value right versus just being another piece of software yeah yeah absolutely yeah and i think i think there's a flip side as well uh that we see like in video games for example where you look at a game like my game at the moment is assassin's creed valhalla and it's i mean what an incredible game i mean it's absolutely huge huge maps really uh and i just think wow how did they build because they come out with an assassin's creed every uh like every year and a half every two years and the scale of it is just insane and it's uh and it's really it really blows my mind and i just think wow you know you would just you just have to have these you just have to have these game engines and you just have to have some of this stuff that helps that helps you get up and running quicker uh or else it would just take if you were doing it all from scratch it would just take you forever uh but yeah it's uh you know especially when you talk about aaa games and things like that i think i think that we'll probably have something like that in the future for audio as well i mean we you know we talk about building plug-ins and um the things that we do you know how long it takes just to build a plug-in any sort of plug-in uh to a decent level but then we have these larger abstractions don't we like you know we talk about hardware we talk about things that do sequencing and these things that do timing and i think that that's still a level that hasn't really been tackled uh in juice where a lot of that stuff still has to be done bespoke doesn't it where uh you know to create any sort of semblance of a track or a doll well you have traction engine for sure that that uh that does that um you know has these you know higher level abstractions but still quite i think i think it's still the threshold is still a little bit too high for the for audio developers at large to really embrace it and uh and start using it yeah yeah and you know what i i as a programmer i i actually feel like there's there's a scaling that that can be made that's i i feel like somebody that goes into this business right as to an audio developer should know a range of abstractions so for example in my like uh for example in my projects i hate solving the same problems over and over right so for example there's so there's some problems like i don't know loading a track yeah connecting parameters to the gui components and maybe uh doing midi control of stuff i don't know there's all these problems that uh you definitely don't want to set them up from scratch every time right it's annoying right and it's also like takes you away from from actually doing something interesting so uh in my case i have a bunch of shared libraries that i've built for myself right that like my motto is i solve a problem and i wha immediately i will go to my shirt library and see if i can if next time i tackle this problem i can solve it with one line of code or something very very quickly right i'll write a template or or something that will allow me to uh to not deal with this annoying problem again right and and i feel like that's something that uh that is really cool because because i have like when i start a new plug-in project i get up and running really quickly right it's different than when i had to start out with juice for the first time when i didn't have all these but the advantage you know that i do have that i will i wouldn't have if i had used something like uh uh you know traction or whatever right is that i control these abstractions so once in a while i'll look at my obstruction say okay this is the wrong one i can i'm gonna tear this apart and actually do it from scratch right i have this uh range of control uh that i feel like it's important when you wanna have flexibility when you're building something where you can where sometimes the pre-made solution that worked for the previous plug-in is good enough but sometimes you want to go down to lower level you want to touch the memory or something that in a way that's actually suitable for this next thing so i feel like i feel like if you're a programmer and you want to get uh be professional you need to be able to control uh to have a range of controls you can't just i mean on one hand you cannot do the same thing over and over again because if you're just mechanically copy-pasting code and changing stuff and you're doing the same things that's boring right but on the other hand if you're uh so you want to be able to also abstract the things yourself like for for example if you mention a daw so even if even if you used the engine like traction or if you write your own doll whatever whatever it is you're doing you have to kind of solve this problem so that you can build on top of that right you have to i know create an abstraction for tracks and clips and timeline that you can do other things you know uh on top of that right so because so it's uh i feel like there's a process here that's hard to define on when when it's the right level of abstraction and when it's too much because i also feel like if i don't see the detail then uh then i'm losing interest like for example uh uh i worked on this project once that started with unreal engine i didn't build the beginning of the project it was built in unreal and it was great other than the fact that it had latency what we could not get get rid of because unreal engine does not let you touch the audio samples directly like it's not it's not meant for that it's not meant for somebody to create an instrument it's meant to trigger samples in a in a in a game right yeah then once we had you know once we switched it to juice and we touched the samples we didn't have all the nice you know 3d controls that unreal had yeah not abstraction but then uh so then we had to decide what's more important right do we want the fine control over samples or do we want to have a 3d image that rotates automatically right so i so i feel like a developer needs to you know needs to make the hard decisions on when when they actually unwrap the stuff and there's actually a few interesting questions about that in the in the comments nice segue that's really good yeah uh so uh yeah there's there's some really cool cool stuff in the comments here so first of all um [Music] so there's there's a comment here that's uh by vil which is in hebrew so i'm gonna i'm gonna translate it for somebody who doesn't know hebrew uh he says uh he says hey al uh it's it's it's uh it's fun to see israeli people and he asked me are you working in developing audio apps and can i say what's it like to progress in the field as an israeli right i guess it's an it's an interesting question i had to translate it because i realized that most people will not be able to read it i don't know what's the israeli ratio or hebrew speaker's ratio i would imagine not high so i i guess that's an interesting question uh i mean i don't want to talk too much about myself but in this particular podcast but i've i did i know i i do work in audio apps for for a few years i worked for for waves i worked uh my last job was for extra records i made a plugin for uh for deadmau5 i worked on one plugin for polyverse i was just a consultant on this fluid pitch plugin uh so i've been working on these kind of things like plugins and audio apps for years uh but i think other than waves uh and perhaps polyverse are kind of israeli too i didn't really work you know uh on in for israeli companies necessarily so it's not like there's this uh i mean waves are a big company that's happening here and there's also another really good plug-in company called soundredix yeah but anyway i'm just saying that there's no there's no israeli scene in that sense so my way of getting there was really getting involved with the with the international scene you know going out to namm and uh and and trade shows talking to people on the internet uh so there's nothing you know very is really about what i do right i'm not it's not like uh there's uh you know it's not like there's a silicon valley for plug-ins in jerusalem or something i mean some of my collaborators were israeli or israeli-based uh but there's nothing you know i guess there's nothing specific to this country that's uh that's helpful i do have to say that there's uh there's really good israeli facebook groups and stuff where a lot of the interesting people will also be you know for like uh there's a there's a really good sound sound group that that thousands of people are in that's talking about plugins in general uh so there's some discussions about that but there's nothing concrete that's happening here about plug-in dev like if you want to be a plug-in dev you go to the audio programmer youtube channel and you learn it's not like there's uh there's some uh anything that gave me an advantage locally uh all right so there's other questions here uh or other comments i certain questions uh so let's see oh so so first of all vivid active ip vivid activity is saying that he he's keen to see what uh what jonathan blows jai language uh could be used in audio world uh so i mentioned him before jonathan blow is a game developer and in the last few years he's been working on a language uh i honestly don't know so much about it the one thing i do know is that his language is kind of a hybrid because it's it's also it has a c style quality to it like you can actually i think touch the memory and manage memory and stuff like that so it's so it's very different from a concept like so there's another questions about soul there it's very different because it does not abstract away a lot of the system stuff i think i think what he did was again i'm not an expert but i think what it was uh a way that's uh from a syntax perspective made it easier to write like c c gaming engines uh because he he really cares about these uh low level controls he didn't want to abstract away the system wow so it's so it's a very it's a very unique thing that he made and i can't comment so much about it i'm i'm actually kind of uh interested now's because he he he likes streams all the time updates and stuff and i haven't been so up to date in the latest that he's doing so maybe i should uh go to youtube or twitch and check out check it out because it's uh it's very interesting and very different from from anything else wow we got a question from edward who asks why are companies not interested in linux users well i would i guess i would say because there aren't a whole lot of people who are making music on linux i mean can we can we say it can we expand on that at all yellow i think that's really about what it comes down to that is an awesome question yeah it's awesome because you know people who use linux right are very passionate about linux and i feel like rightfully so uh so so whenever this that kind of uh discussion comes up about linux uh that there will be you know it's it's a very uh i don't know if charge is a word it's very it's a very emotional yeah sensitive yeah it's it's almost like you know if you start debating about mac versus windows like should you use match windows it's a people have you know a big uh uh what's the word like they feel very close to the system uh and it's true for linux users they really like the system that they have uh and uh and and here's the thing linux i'm not i'm not a linux expert or anything but i feel the problem with linux is it's hard to uh to reason about the system of the user because it's not like all the linux users are using ubuntu or something we're using many many distributions uh a lot of them customize their system in very interesting ways so there's so linux is now this big world of stuff like do you have do you support x11 or this like there's all these you know uh low-level details that are in there on mac and windows and ios so it's very hard to distribute to uh so any kind of software you know for for for devon you can see that you know not just in the audio world you know there's no photoshop for linux there's no uh whatever final cut pro uh for linux sorry so there's there's all these uh i mean there's there are alternatives that were built and do work on linux but it's like there's no uh one system that we know that users will have uh and i think for a plug-in company it's very hard like you will you will need a serious amount of support uh if you don't support it just supporting windows and os x is just enough to keep a lot of plug-in companies quite uh pretty occupied yeah right exactly and but at least on windows you know you can kind of if if i'm building some code for windows that shows gui on the screen or whatever it will most likely work on most windows systems it's not the case in linux you might need dependencies on your system and your your your uh distribution might not even support the the one uh the one gui system that you chose to use so it's it's now very very uh so it's a wild jungle of support so so it's so it's so it's it's kind of difficult and i feel like the there's also of course the problem with with uh can you make money yeah this right and that's another thing because linux users are not usually fans of paying for software right they like open source stuff that's free to use so as a company you need to make sure that all your efforts will eventually you know make that money back yeah it's pretty hard uh i think so so it definitely looks like you know a lot of companies and and they mentioned waves so waves do create linux products but they're not like plugins that the user is using they will make their own you know when when they have like hardware systems or something those will run linux internally but uh but user space linux user distributions is not common uh in any in in the audio world in general i mean i i i mean even i want to say most of the daws don't support linux i think i think traction does and reaper does and bit wig fairwick does that and other there's a few like i don't know about that yeah i know traction does i know bit wig does reaper does those are the only three that i know yeah yeah but but none of the none of the really famous ones does like logic cubase studio one ableton fl studio you know all of these ones are not supported right uh same for whatever photoshop premiere uh final cut pro yeah so i feel like if you're a plug-in maker then usually you in or pro tools it does not as well so you so it's if you're if you're a plug-in developer it's very hard to now reason about which environment will your plugin be opened in so it's just it's just complicated i feel like i feel like unless a standard system of linux will will emerge like unless everybody decides that all the linux users will want to use ubuntu or some some distribution that will uh uh will be decided then then i i feel like this situation will not change uh maybe it does maybe maybe you know maybe some distribution will come and it will be you know easy to use kind of like you know maybe maybe like windows but easier so a lot of people switch to that i don't know about that we have another great question um how would you go about creating a midi plug-in that detects chords you play and what scale you're in using juice well uh if it's a midi plug-in i mean the place i would start is you the good news is that you know what keys you're pressing so that would be that's pretty helpful for knowing what key you're in so i imagine that you just have to have a database wouldn't you of just different different chord uh different keys and then you just test it against what uh test it against your database test what keys you're in against the database is that an oversimplification of of uh of the problem space what do you think what do you think of yao you know first of all i think uh you know you've had uh uh in your you know here on the channel you've had this uh if you've had chuck madcat has an app that does that it's called the cordy app so he has an app that you know as you're playing notes on the keyboard it detects the chords he's he's definitely more of an expert in how to do this because he has a he has a pro app that does it uh but it's so so the question of chords is a philosophical question almost and it's actually a question that music researchers deal with regardless of code regardless of any kind of there's a few approaches right you can definitely say that you know you can look at the quote in a static way right you can say that i'm going to look at the keys pressed right now and you can extract the cord from either from a database or by using an algorithm to detect the intervals there's a few ways but this is certainly possible but it's uh it's get interesting because a chord if you're going to and this is this is going to be a very nerdy nerdy uh rant right here we go but accord is actually something that gets created as a result from the notes that are played and when they are played right so if you take some like baroque music in me and you play like a chorale right many times the chord isn't played as a unit many times the chord will be like a perception of the notes that happen to have fallen in the same time and maybe sustained from the previous chord so there's all these uh musicology approaches to how to analyze a chord because uh i like to do this stuff so you know uh if you look at modern music like hip-hop or something and it's very possible the chord like the chord will be whatever c minor c major but then all the music that's played right now is like a bass and that's it right and how would you know if it's c major or c minor well you could look at the vocals and maybe the vocals will do something like uh and so may so you can see that the vocals kind of passed on that that e note which kind of hints on c major so we perceived it as c major but to make things complicated this is not always the case because like in blues sometimes the piano will play a c and the singer will actually sing an e flat and you'll think okay well maybe this is a c a c minor but then only when the piano comes in with their chord later on you hear that it's actually something like a fl like a like a sharp nine chord and our brain conceives it immediately like our brain doesn't even think about that our brain thinks of chords like we think of about words it's like it's like we don't analyze you know syllable by syllable we kind of hear the context and we we know if it's happy or sad or major or minor like we have we know what it is without naming it and musicians have a feel for what it is but if you look for the name you have to decide on uh how far do you want to read into the context like do you want to go back to notes that have been played before and look for clues on the chord maybe you only care about the chord that's playing right now and this second like notes that are because that because that's easier to reason about but it will uh it will not necessarily answer every kind of question like you know nowadays in modern music uh you know a lot of music is just bass and vocals some of the time so it's yeah you might not even hear a chord i don't know it's it's a very very hard question yeah and the code you have to write would have to i guess first of all uh answer to what's your definition of what you want to do and that's probably true uh for any kind of musical problem like you have to first lay it out in word in words and see if it um applies at the cordy app it's really good because it uh i think it works with what's played right now like it doesn't look at the history of music it's because i think i think that app is more for people who are doing live tutorials yeah they so they somebody does a piano tutorial they play a chord and then the chord app analyzes that chord and shows that it's c over g yeah uh and it doesn't care about the history it just hears about right now and that's cool because that the person doing the tutorial knows that they they can change how they play according to that yeah i imagine that machine learning probably has some really interesting approaches for for this type of problem um learning uh would help so so machine learning helps if you can't if the algorithm is too complicated to put in words or all numbers right so if you're saying there's too many variants here a human cannot calibrate it in a in a flat algorithm put it into machine learning and the machine will give us that algorithms that's good but in the case of music and chord analysis there's the aspect of time so are you going to put into the machine learning model the previous two minutes does it happen yeah you have you certainly have algorithms that do that that take time into account like dynamic time warping for example right but i'm just thinking if you do that even if you had machine learning now your program needs to say i'm gonna wait x out of time before i can give you the result is this applicable for the use case because something like for the app if the guy doing the tutorial has to wait for a minute until it shows the chord then people will lose interest right they want to know the chord right now right so it will it's only applicable if you're if you can if you can wait if you if you're happy to analyze the entire context and use your algorithm cool another interesting question from vellins who says i'm going to school for web development how should i start to branch into audio programming i'm currently i'm also learning primarily java at school as the language well i as a person who recently got their starting audio development i could tell you a couple approaches uh i started off with a language called processing which is actually a library a java library that i learned kind of the logic side of coding with that and then the audio side i started with max msp actually and max msp is nice because i think one was touching on what i was saying earlier one of the tougher parts of c plus plus is that it takes quite a while to develop something of significance whereas with max msp you can get something up and running in seconds and it helps give get you into the idea of how things are um how audio apps and audio algorithms are actually constructed uh and how they're in the components that they use and you can get them up and running quickly it's almost like a step you know it's a it's it's two or three steps lower than being a music producer uh you know so there are a lot of things that maybe if you were a music producer you would take for granted that these things are set up for you and then you have to it's kind of a surprise or it was a surprise for me when i started uh working with max msp where i thought oh like something like tempo i have to really kind of define what that is for myself you know there's no just metronome that i that i just um that i just put in so from there then i moved uh towards c plus plus i actually used a uh a framework called open frameworks which is another c plus framework it's great for like creative creative coding like if you like to do visual stuff visual representations and it has audio um as well and then i moved in i moved into juice but i really think seoul is definitely a great one for uh that i think is a great one that's kind of similar to max msp and its way of thinking but it's uh it's also um you know it's also typed out rather than just objects so uh so i think that there's a lot of room for education with seoul uh and um yeah so there so i think there are quite a few options that are out there i would i would look at maybe max msp or seoul to start off to start out with um yeah that sounds pretty good i mean the thing is i guess if you want to work in audio right it's usually not one thing that you learn i mean you can be a c plus plus programmer in an audio company or something but i feel like most of the time you need to learn the echo system of things right so it doesn't matter if you're starting with max msp uh or or you know there's or maybe you're do sound uh sound programming in reactor some people do that right just open a modular synthesizer uh or maybe you take a programming language and you you know uh you start to wire the things eventually you need to learn if you want to make products you need to kind of know the echo system right which means that there's some components that are uh system components like we mentioned c plus plus uh like all the plugin formats and stuff like that like these like if you want to make these you have to know the system uh but there's all you know other things that you don't have to know the system for like the sound chain and how synthesis uh works and those kind of things you don't need to learn some specific language for right there's tools so maybe i i feel like there's there's some process that you have to go through uh yeah you know what people are doing and how they're doing that i can tell you that um i feel like personally uh no like having good control over c plus plus is uh really helpful because because the echo system is a lot about that like if you if you walk into some company some audio company there's a big chance that they will be using c plus plus uh it doesn't matter which com which company that is right could be a plug-in company a doc company and hardware company uh so even if they will work in some other language too they will use c plus plus yes so that's one of like a common uh something pretty common uh that scene like even if you for example if you prefer rust and write your code in rust most other programmers you'll talk to will be c plus plus programmers so you will have to know that too or something so uh i would say that will be uh you know almost like um like a like a what's the word for it you know like there's common thread yes exactly right like that would be something common that you'll always always find if you open the door to some office i think i think you touched on another great point which is that uh one thing to understand about audio developers is that there are different types of audio developers as well so uh so one big thing is that uh where i when it comes to starting you have to one thing that i would advise is asking yourself the question well what do i know what do i know right now what am i interested in so for example if you uh synthesizers weren't particularly interesting to me so um so in terms of learning synthesis and you know different ways of synthesizing sounds i know the basics i know like fm am you know um you know subtractive synthesis things like that but i'm not i wouldn't be the person to really develop a synthesizer but djing is something that i know very intimately about so if you're talking about developing a dj app i know quite a bit about how a user would would want to um you know have the interactivity with dj app things like that um so you have different skill sets that uh that really go with what you're trying to build so if you were trying to build a doll you would have to know a lot about like multi-threading uh you'd have to know a lot about like things like file loading systems uh systems level things uh whereas if you were maybe developing a some sort of plug-in effect then you would want to know more about digital signal processing and about um you know then that's a little bit more of a of a math thing so you don't need a whole lot of math to to develop something like a doll you just really need to know c plus plus really really well whereas if you want to create something that's a unique um a unique plug-in effect then that's where the math and things like that come in so you really have to ask yourself what do i know now do i know my math really well uh you know do i really know how to uh do i know the language really really well what am i interested in building and then try to maybe shape your skill set around that foundation that you already have am i a full-time audio dev hmm that's a great question um i'm not so do i develop for a living that's a tricky that's actually kind of a tricky question because i do in a sense because i make tutorials for this channel and uh it's the channel that allows me to make a living so in a sense in a roundabout way yes but uh in the truest sense no i'm not a developer i'm more of a i would describe myself more of a uh of a manager facilitator uh you know on that side of things so i'm great i i think that um i'm quite good at getting a person from uh from zero to one getting a person started but if you wanted if you were to come to me and say uh what's the best you know what's the best way to build this doll i wouldn't be able to tell you the answer but i know who i would need to ask to find the best thing to find the answer so you know if you want to if you want to develop a uh a really unique sounding you know reverb or you want to create like a really like a next level synthesizer i know the people who could build that uh who could like do like a killer ui do something that looks like it's coming from one of the biggest plug-in companies in the world but in terms of like doing that myself i could do like the basic version uh i could do like the stick i could do like the stick figure stick figure version of of that but uh probably not i mean i don't know i'd say probably not beyond that but i have a dj app that's pretty uh this is pretty significant does a lot of um there's a lot of pretty complex stuff so um so i'm i'm all right as a programmer but i'm definitely not like ninja level like al is but i'm also you know i have my own skills but there's things that i don't know like for example now uh you know ilia uh is asking about like math dsp stuff and honestly i'm really bad about these things like i uh i mean i can i can do basic sample manipulation things but if i need to write like some filter some i don't know some tube simulator or a reverb or something i i have no idea how to do those those right so i also have a set of skills that i'm good with and there's a lot of things that i would go to somebody else josh yes what is toasting so we got toast toast here with us the uh the audio programmer mascot has joined us today [Laughter] um so we have another great question which math topics would encompass audio dsp so i believe uh linear algebra would uh would would be in there um depending on what you're doing so if you're doing like spatial audio that side of things then you got like trigonometry calculus uh you got like physics uh that that side of things um yeah it really depends on what i mean you have some people who specialize just in spatial audio you know like that's what they do uh and you have some people who are just like if you look at um if you look at like sean costello for example i mean he's he could probably do loads of different other things but he really specializes in reaver like he's probably one of the best in the world at reverb algorithms and that's he's been able to make a living just off of off of reverb algorithms so um yeah it's a it's uh it really depends on where's your knowledge level at what are you interested in doing and i say that to people that are who are getting um who are looking to get a job as well so a lot of people ask us how do i get a job in the industry and i say what kind of job do you want really you know who do you want to who do you want to work for because if you want to develop on ableton live for example that would be a set a different set of skills than if you wanted to do something for let's say focusrite you know or like native instruments who don't necessarily have a doll so uh so you really have to look at the skills you really have to look at what type of job that you're really trying to get and then try to shape your skill set around those uh around that skill set that you need for that job you know try to build like a simplified version of it um was i always a programmer no i i only uh i went to university in 2015 uh and i so i come from a djing and music production background uh and a in a psychology background actually funny enough i used to be a counselor a long time ago in a past life uh so psychology music production djing and then in 2015 i went back uh i went to university to learn how to code had never typed a line of code in my life and uh have now been in the industry professionally for two and a half years uh which is pretty pretty interesting it's been a hell of a journey so far thank you yeah thank you very much yeah it's been a it's been pretty uh pretty awesome but uh y'all hasn't funny enough yeah you haven't been in for yeah i mean you have quite a legacy but at the same time you haven't been in for a very long time either have you well depends how you define it right working in the music tech industry for uh definitely over 10 years but i wasn't a programmer for some of that time right i kind of switched into being a programmer from doing other things so i've i'm in this weird place where i have uh a big background knowing things around the field you know and uh being i mean being a musician producer but then doing you know uh uh production tutorials and maybe making presets for companies or helping demo stuff at trade shows so i've been around you know that business for some time and then made the switch into writing code so it's it's kind of different from somebody for example who comes in from a computer science background and then just studies the the music part yeah because to me the music part was easy because i knew i mean i mean a lot of people in the business were my friends so i i would talk and ask questions not about code but about how does this work and how how would you do this and whatever uh but then i so i had to just uh fill in the code part but for other people i feel like they have to take the other route they know all the code stuff but they need to know how vsts work in ableton or logic and what are the differences and yeah it's hard to generalize this because it's such a i feel like it's an interes it's an industry where a lot of people have different um specializations so it's hard to say what's the what's the common route between them because it's not like uh if you're a web developer there's you know hundreds of thousands or maybe millions of web developers so you can you can kind of generalize what a web developer is right and an audio developer is more of a more of a weird jungle of different things yeah yeah i would say that you have i would say roughly speaking the categories that i think of you you have some people who are great kind of all-around developers you know they they understand a little bit of dsp or they understand at least how to take a piece of dsp implemented they really understand audio like general just audio basics like what is a buffer what's happening in the process block these are kind of like your foundation level sort of things so you have some people who are just general audio people uh can can implement a ui um you know can do a little bit of everything then you have some people who are uh really good on dsp maybe not the strongest uh c plus programmers but they specialize in dsp algorithms and that's what they do they make dsp algorithms and that's their that's their thing you also have people who are more framework developers you know like really low level really understand um just data and how data moves from one place to another and there are more kind of framework developers but not necessarily people you would necessarily have developing on your product um and yeah so so i think those are really kind of the general categories i would say that it's really tough it's i i think that uh people out i have clients who think that they can just hire one developer and that the the developer will be able to create a product from beginning to end and i think those developers are actually quite rare i don't i don't really know a whole lot of developers who can just really take a concept from a client and just do it the whole way through from the very beginning to the final product um so not a not a whole lot of those yeah i think a lot of those exist in other uh development areas as well like it's very hard to find people who are who have the ability to comprehend a fully framed project uh in in in web development you can find a bit more of those because then when you make a website it's a bit more contained right but when you talk about a program right like an app or something like that it's it's definitely i mean there's definitely some solo developers but they're not uh there aren't that many of those just because there's a lot of aspects to it especially when you do a platform yeah yeah development that like you know classic one is that you know you want to do your uh take your plugin out for both pc and mac you physically need to have a pc and a mac so that part already requires some resources some understanding of different systems you know it's and that's like this that's not something that you cannot learn you can definitely learn how to run xcode and visual studio and find how to make it work and everything and do the code sign on the apple side and it's like like it's all things that you can learn but it's already a skill that it's not like uh it's not a textbook skill it's more of like a thing you have to evolve into uh into uh what you're doing yeah i think i think the learner i think more than anything uh you know in terms of like skills i think just the ability to learn new things and the ability to just digest new information and to take projects that you don't know how to do and you maybe you don't have any sort of thing to do and to open up some sort of api that you don't have any idea about and being able to just kind of baby step through the api and just figure out things step by step i think more than anything else is probably the strongest asset of an audio developer or maybe even just a a developer in general um yeah it's just that ability you have to have the ability and i think that uh like for me i i think that's when i knew that i could like if i wanted to i think i could develop for a living because i can take concepts now where they where i get something that i haven't done before and then i can just start reasoning and breaking down the problem and thinking about oh well you know this is one approach or this is one way that this could be that this could happen and then you start looking through the api you start looking through the juice documentation you see a a class that uh you know that that could be used for part of the solution and you can start like going through the code and start reasoning about well maybe this is the way that the code gets set up looking through the forums looking you know asking questions when you get stuck that's really the process i think it's not about just you know like it's so rare to to say you know to find somebody where you say okay i want to build a doll yeah you know i want you to build me a dawn he'll say yeah i've done that exact i've done that exact thing before uh you know a lot of times they're it's just too big and that you know i would have to go out and he'd have to search he'd have to do research and he'd have to do a little bit of an r d mission on finding out the different kind of components of being able to do that but most important thing is being able to reason about well you would need something like this you're going to need some sort of thing where you're going to be able to switch audio devices you're going to need to have some sort of um you know representation where you're going you're going to have to have some place where you're going to host vsts so you're going to have vst hosting capability you're going to have to be able to load files uh you know things like that and be able to put a put together a set of requirements and then just start building it step by step that's that's really what being a developer is about in in my opinion yes yes i totally agree uh and you know i know it's really funny because every even as a seasoned developer there's always the thing where you know you start a new project and sometimes you get overconfident you're like oh yeah of course i've done that before project you know two months ago i'm just gonna do the same thing and then you realize that you know that the slightest change in the definition of the product is actually actually means that you have to expensive oh yeah who's to think break it down uh so there's you know the it's it's never a state of uh that's why you know it's always a problem when people look for uh you know the cure the ready-made solution for how to do things it's more more about understanding the aspects right uh and then uh seeing how you can apply you know although or maybe sometimes not even apply to yourself sometimes maybe you have to know that hey this is a complicated field you need to bring in an expert yeah exactly absolutely and i know the very basics of dsp but if i had but there's no way i could write a reverb algorithm like sean costello or somebody like so if i if i wanted to do that i'd have to bring somebody like that in it's just that's a field that i already know that i know generally speaking how it works but i know that it's requires an expert right that even he will lead to spending a big amount of work to do something that's not you know an exact replicate of what he's done before even even though he's an expert exactly uh so i i i think there's there's uh you know in programming you kind of there's you know you kind of have to start recognizing the pitfalls like what's what's way more complicated than you can solve yourself where it's better to use a pre-made solution or hire a person yeah absolutely that's that's one of the one of the great things about our discord group as well is that we have we have some people in there that are mega geniuses probably some of the best audio programmers in the world um you know in their respective fields and i don't know it's so rare that i see that i see things that nobody is able to answer uh you know like i i think maybe graphics is one of those areas where that's like kind of a still kind of a dark art uh in a way you know like opengl and metal and vulcan that that side of things but um yeah i think i think there are a lot the majority of questions um there are people around who can actually help answer those things it's important to know when to when to phone a friend um you know what's interesting the people don't get it but it's like so much of a plugin development is actually about ui and there's never one way to do ui like it's always like always you know there's always be like the solution to do one thing and then the the new product will want some different interaction and then the previous solution no longer no longer works you have to so you have to really know how to solve ui problems it's not like there's no magic that will always solve uh i'll resolve that for you and it's like people think that you know that uh the plugin development whatever is uh is just writing some dsp and then magically connect the ui but it's the other way around you know many cases the dsp will take you a couple of days to solve but the the ui will take you a month to get the right interaction even if you're an expert right just because the problems are complicated the problems are more are you know are uh creating right the right flow from one feature to another making it look good you know look like smooth and not like be uh fiddly right because sometimes you create something and it it works but you know maybe the controls aren't accurate and the user will not easily easily understand what's going on so so there's a lot of uh a lot of process about that and it's never the one there's never one tutorial that we'll show you how to do the perfect ui right yeah absolutely but we're going to show you some in the near in the very near future it won't give you the perfect ui but it'll help you get started lesson i wanted to address there's one question by dan jones so he asks anyone here know the best way to be able to load a vst in the stream of a vst i'm trying to wrap my head around making a vst that would be like a pedal board where you can load vsts in a chain and i and i i feel like this is a really good question because uh this actually shows how like uh things in in audio come together right because this uh the idea of loading a plug-in just one plug-in being able to load it is uh that means you have to understand how plugin hosting works right there's some mechanics there you can look at the uh juice audio plug-in host and you will see how they implemented those mechanics right of bringing a plug-in bringing up playing audio through the plugin scanning the plugin showing the gui like there's a bunch of mechanics that need to happen for the for the thing to to exist and then there's another aspect of after you've internalized you know the the flow of everything in a plug-in you want to make a product that has a multiple of those that maybe has a chain right has an order maybe you want to be able to change the order of plugins like in uh like in an instance chain on a in a daw maybe it's a standalone thing maybe maybe uh so so the the so all the all that i mean uh i think we probably need to do at some point in a tutorial about hosting but it's uh but it's it's once you understand uh the the different flows and it's just a very low level you know there's all these like low level answers to this question right uh because because uh because hosting a plug-in is is more complicated than you might think because a plug-in if you're hosting you know third-party plugins one of them could crash what happens if the user's plugin crashes like does it crash your entire program do you find some way around it you know it's coming are you are you scanning uh are you gonna scan from a directory or are you gonna scan from the system directories like there's all these like product questions you have to think about right it's not like uh like you do now have a configuration window that the user can bring in all their external plug-in directories are you supporting vst3 and audio units and yeah i don't know it's like it's like it's like there's all these questions when you make a pro product like this that uh would uh would would make the answer more complete the straightforward way is once you know how to bring up a plug-in a plug-in is basically just a function that processes sound right so you can call these in a chain but everything around it would be pretty complicated yeah absolutely uh we have another great question from axalis i hope i don't i didn't mispronounce that and paxalys asks i would like to kindly ask you what are the c plus plus sections or principles that should be considered when developing real-time audio applications so once again it goes it's really difficult to say because it depends on what type of application that you're building so but i would say generally speaking we we have a tutorial series that we're doing uh where i actually teach my son c plus plus uh that's here on the channel and we're we're starting to wrap up a lot of the very basic fundamentals uh so there are a couple other ones uh so you have to know all of your kind of basic logic if statements for for loops you know what is a function return you know returning uh functions that return um the return of value um you know what are classes things like that then you have kind of the next level which is kind of higher level abstractions like classes how to interact with classes what is inheritance um what is uh what's a pure virtual function what's an abstract class overriding functions i think once you get through that like then you can kind of step into juice uh but then you know the com like i said the the the um the level of c plus that you need to be at in order to create something really depends on what you're creating um but you have like for example let's say that you have some sort of application where like i have one that um you know where you click on a track and it needs to calculate and it needs to calculate the the bpm of the track to move on to the next before you're able to load it the problem you run into is that you run into a you run into a threading problem because what happens is that while when you click on the track and the bpm uh detector is computing the bpm and it blocks it blocks your ui you can't do any you can't do anything and it and the ui freezes well that means that you likely need to move the bpm detection over to a new thread so then you need a skill like knowing how to set up a thread or knowing how to set up um you know you have these you have these uh ways that you can run like a small task uh by just like kind of setting up a really quick uh a really quick uh thread doing the task and then killing the threat and things like that so then those skills start coming into play so it really just depends on what you're building but when it comes to plug-ins uh i would say it really just starts off with like those fundamentals like the stuff that i teach my son in the series and there's other things that i mentioned and you'll be um and from once you have that you'll be functional you'll be able to move around and actually um and actually kind of make your way around a bit um yeah anything to addie out on that uh i mean first of all that's that's really correct uh i feel like you know there's because you know nobody really knows the entire c-plus plus like class is massive so even if you take an expert in c plus plus there's probably corners that they have to you know look up if they run into them as well and i think the main thing is that you need enough control of the language to be able to read code right so that you can uh read it because again like you might not know everything but you need to understand the flow of the language like you mentioned classes uh inheritance if statements for loops pointers references uh yeah you're able to to kind of obs you know let's say you open a source and juice or in some library that's built in c plus plus you need to be able to sort of uh follow that and see what's going on right uh you don't have to know everything right because every every piece of code will have complications that you will not be able to follow but you need you need to have a way to solve those kind of problems right so it it takes some control and experience in the language uh that i i feel like it would be it would be really good if you have it because otherwise and you see that happening sometimes or people don't like that i don't know they have problems with how you know uh memory management works or like like references or pointers so then every problem they run into is like this big deal they have they don't know how to fix the syntax and you know you know so so you really need to be able to get to a point where at least when you run into a mechanical problem you know what to search for you know how to test your problems in isolation so you can uh for example let's say you look at something that you don't know you can maybe open a new console c plus plus app and try something that's like that so you can look at see if your problem is in your code or in the juice code you need to be able to debug debugging i was going to say debugging is huge it's huge so underestimated we actually have a video coming out next week with my friend aaron lease on on debugging itself so uh be sure to check that out but debugging is huge i think i think one thing that's also underestimated is that when you've been developing for a little while or once you have a little bit of experience under your belt sometimes you get these errors or sometimes you get these things that happen and it doesn't directly point to the thing that's actually wrong but you can get a good intuition for what's actually happening and i can't even really describe what it is it's almost like a sixth sense of i i can't really explain it um but it's one of these things that when you've been developing for a little while and something goes wrong it's almost like the idea like something just pops into your head and it says oh it's this i just you know or what about this uh yes it's it's something that really just comes from experience um sometimes you'll get errors like if you're if you've been working in an ide for a while like xcode where the error isn't pointing towards the error but because of the way that it's set up it uh or because of the way it's giving you the error you can actually get a good intuition about what the error actually is what's actually happened sorry that's my dog showing her bone in the background um yeah so yeah that's quite intricate but i i thought it would be a cool to uh address although we can't address the whole thing but it's uh so this question by tali digital media he asks or they ask sorry does juice have a way to segment what developers have access to or what is the best way to have different people working on different pieces of an application so nobody can take the whole thing and this is actually a very interesting question that i've been thinking about as well because um you know in some i mean sometimes sometimes you it's totally fine for everybody in the company to see every piece of the code but sometimes there's secret pieces of the code they're like protected by your uh your ip by your intellectual property like sometimes let's say you want to have some you know special dsp algorithm that you bought you know from some expert and you can't just have any developer that that you know might be working from home or whatever be exposed to it kept in a gold box and it's actually it's not super easy to do but it's definitely possible to do so uh but that's that's not really a juice thing although juice presents some special complications about that uh it's more of a c plus plus thing like you uh so the the classic way to do this is to pre-build the thing into a static or dynamic library right so then you have the whatever developer that works on it in isolation the only they have access to the source code and they will have to build on their machine uh if it's so uh they'll build a dynamic library or static library object file that you can link with the rest of the c plus plus code so it's so it's a pre-built code you will not have access to the entire code usually what you do in cases like this is you expose a header file that only has the calling convention like you say okay well here is some functions that we do want the user to know about like uh so a good example would be how vst plugins work right it's it's uh if we're buying a vst plug-in we know that there's going to be a process block function right or the equivalent of the vst3 call to process block but we have no idea what's going to happen inside processblock that part is hidden from us it's only the developer knows about it uh but we can load it and and run it so it's pretty much the same with uh with code that you want to integrate on your own however juice makes it uh slightly more difficult just because uh there's some complications in how juice is built maybe it's something to talk about in another video because it's a very involved issue but if you wanted to build a static library or a dynamic library using juice and you wanted to link with somebody built separately like you want to build your part and somebody else to link with that you actually need to hide juice as an implementation detail so what it means is that you'll need to expose headers that have your own functions like process audio or show gui or whatever you want to call your functions but you cannot expose juice types like uh i don't know components or audio buffer or something like that you'd have to hide hide these so that uh because because juice will need to build privately just because that's how uh how juice is structured just a structure so that whenever you build it it needs to build with a set of flags that i develop only the developer has and uh and if you want to have like two separate units you're gonna have to maintain some code structure that's absolutely separate and you will see that that's how it's done in a lot of libraries like for example uh how vst3 works because if you're hosting or vst3 or audio unit or whatever if you're hosting a vst plugin you have some header that you're aware of that has a few functions but that's it like you're exposed to some interface that you and this other developer can agree can agree upon so it's so it's uh it will make the development harder because it's not like you can put something on github and share it you need to uh have some agreement on how this will work uh a simple way would be to have the developer produce a vst version for example or something but sometimes that's not the case sometimes you need your own proprietary uh format uh but but it's it's definitely an issue in in the c plus plus world world because uh sometimes all these security measures have to have to come in place like it's not it's not not everybody are just single developers with one code base nice i think it might be a good time to wrap up we're running in at uh two and a half hours two and a half hours in yeah nice little run um and i think my dog needs to go outside as well but this is cool yeah we're talking about trying to make this a weekly thing um yeah which would be which would be awesome and bring some other people bring some other people in as well i'm sure we have a whole bunch of people who would love to come in and uh and say hey and uh talk about what their all the awesome stuff that they're up to so uh yeah anything anything to say yeah before we sign off i know this is a lot of fun yeah perhaps next time we could get even a bit more technical and maybe you know open some some code and start getting uh getting into it because some some questions are just answered clear when we see the details of the implementation right otherwise sometimes we're around the subject but not really answering the meat of the question yeah yeah absolutely yeah we definitely need to do some tutorials i mean there are so many that um that i want to do custom custom components look and feel class is definitely one that people ask me about all the time stuff like implementing image files um you know things like that that's a good one um building one another one that i want to do is building and packaging plug-ins so you finished your plug-in now you want to distribute it how do you distribute the plug-in that's that's one i definitely want to do um yeah there's loads there's loads of there's loads of them um yeah and if you have other ones and if you have other ones that you'd like to uh know about please feel free to leave a comment uh on the video description under the video description you know where to leave it and uh join our community once again uh so you can join our community on discord uh we're right near we might have broken 5000 uh community members today so you can join us on the audioprogrammer.com forward slash community and yeah we will we will sign off we hope to see you next time uh thank you for to everybody who tuned in see you later
Info
Channel: The Audio Programmer
Views: 791
Rating: undefined out of 5
Keywords:
Id: 789LDn70Uic
Channel Id: undefined
Length: 123min 10sec (7390 seconds)
Published: Fri Jan 22 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.