Hi everyone. My name is Carmen Darley. I'm here at the Art Resin headquarters and today we're going to teach you how to make some tier trays. Here with me I have Hannah and she's going to be following along through the process and helping me out to make these tier trays. Hannah, are you excited? Yes, I'm super excited. Great, let's get started. First, you need to make your plates. Once you have your plates, then you can assemble it with your hardware of your choice. But first Hannah, let's talk a little bit about the molds that we're going to use today. Can you pass me that small one? Sure. Great. So this is a pre-made silicone mold. These are store bought. You can buy them online and they come with the little nub already. So what's great about this is you don't actually have to drill the hole. Okay, so thank you so much. These ones are homemade and they're made with parchment paper or you can use shower curtains or vinyl, anything that doesn't stick to the resin that's made with caulking silicone. So very easy to make. We're also going to go through how you can drill the holes with these type of molds and how you can make the molds itself. So are you ready to make some resin and get to it? Yeah, let's do it. Great. Okay first, we're going to go ahead and make the homemade version. What you'll need is parchment paper, a pencil. So what you want to do is go ahead and sketch out your shape.  So I'm going to go ahead and sketch out just the quicker one of one and then the second one. If you're making a three-tier tray, make sure there's two centimeters difference from the biggest one to the middle one to the to the largest one. So I'm going to make two for the two-tier tray. What we're going to use to make them, as I mentioned earlier, is the silicone caulking. Okay, so this is 100 silicone.  What you want to do is you want to add a second layer. So if you want, you can let this dry for about three hours so it's a little bit harder. If you feel comfortable, you can go ahead and do the second layer right now. And one tip for you is when you are cutting the tip, make sure that you are cutting it at the widest part. So you know how it tapers? Make sure that you're cutting it at the widest part and that way it'll ensure that you have a nice and thick line to hold all your resin in place. So let's go ahead and make the second one. Again, we're going to go ahead and trace the lines that you've drawn and then make sure that the connection is fully covered with silicone and that way there's no leakage of the resin through the mold. So you have your first layer. I'm going to go ahead and do the second layer. The silicone coming out is nice and thick. And there you have it, your very own homemade mold to any shape and any size that you like with silicone and parchment paper. Now that the homemade molds are completed, we still need to wait 24 hours for the silicone part to completely dry and harden. So we're going to set this aside and I'm going to use those molds that I made earlier. All right, I have my molds ready. Hannah, you're going to be using the store-bought molds today. So let's get creative. Do you happen to have some art resin? I do. I have some right here. Perfect. Let's mix them up. For Hannah's project, she's going to use dry floral. You can use the ones that are store-bought or what's really great is you can actually dry your own. So if it's of sentimental value to you, these flowers can actually be preserved with resin, which has been really, really popular with a lot of resin artists for the resin projects. Now you can also use embellishments such as cellophane, gold foil, and some glitter. And these are all optional. The project that I'm going to do is more of a marble effect. So it gives you that whole delicate marble look and feel, but without that shatter easy to break material. Okay, so what I'm going to do is I'm going to start with the resin. Remember, it's one part resin, one part hardener. It really doesn't matter if you start with the resin or the hardener. Just make sure it's one part of each and it's by volume and not by weight. So we have a two cup measuring cup here and I'm going to fill this the resin first and fill it all the way to the one cup mark. Make sure it's right on the line. And then now what we're going to do is top it up to a two cup line. Okay, this is great. All right, now Hannah, do you want to do the honors and do a lot of stir? Sure. So I'm going to stir it up and you do have to make sure you're going to mix it for three full minutes and scrape the sides and the bottom as you go just so you make sure everything's mixed perfectly. While Hannah's stirring, I do want to mention that you can really use your creativity when it comes to making these tear trays. You could, you know, make different products and colors. This is more of a seascape, right, kind of look and feel and then this is more of a, you know, carousel holographic or a boreal kind of look and feel. So you don't necessarily always have to use flowers or do a marble tray. You could really, you know, take your creativity to the next level and even add crystals and embellishment to give that real geo luxury look. All right, so this is all mixed up now. So what are we doing next? So we're actually going to start with your project first with the materials that's in front of you. Okay, so when I go to pour, do I pour the resin into the tray first and then poke the embellishments in on top or do you recommend laying them down into the tray and then pouring resin on top of them? It really comes down to your personal preference. If you want to do it one way or the other, it really doesn't matter. Personally, I do like to pour the resin first and then throw in my embellishments. So yeah, it's really up to you. All right, I think I'll go with it the way you suggested then. So I'm going to go and pour it if that's all right. Yeah, go for it. Let's do it. Let's create and make some magical flower trays. All right, now that you have the resin poured into the mold, we're going to start embedding some of the florals into the resin. So there's two ways that you could do it. You could either take a stir stick, dip a little bit of resin to have on the stir stick, and then pick up your floral this way. You see that, right? And then you go directly into it, press it down and you see how the resin is going right on top of it? So you're really just covering the flower. Alternatively, you could also pick it up with the tweezer. So for this piece, we'll place it right here. Just drop it on. You'll still need to use a stir stick. But if you feel more comfortable and secure picking it up with the tweezer, you can go ahead and do that. But there you have it. It's nicely embedded into your resin piece and you can drop as many pieces of dry floral as you like. It's cool. All right. So should I give it a shot? Go ahead. Give it a shot. All right. I think I'm liking the popsicle stick method for the florals. Place it however you feel comfortable. And can you move them around in the resin still after they've been placed? Yeah, you could just slightly, not too much, just in case the dry florals are pretty delicate. So you don't want to move it too much because they may break apart. But otherwise, if you're embedding other objects that are more solid, you can move them around. Okay, that's good. It's looking really good. So placement wise, it's really up to you. This is fun. Okay, so if I really want the top tier to pop, do you think adding gold leaf would help do that? Yeah, I think adding the gold leaf will be great. So if you can pass that over to me, I will show you some ways that you can add them. You can either pull them apart with a tweezer again. I do prefer myself personal preference. Again, I just pull some from from the gold leaves. And I just go ahead and mix it in there. Nice, that looks so good. So actually, this is one of the easier ways to add embellishment where you like it. So if you really like your top tier to pop, you can just grab some, go ahead and mix it in. Cool. It already makes such a big difference being in there. It really adds a little shine to it. And you can add gold leaves, you can add silver leafing or copper leafing. It really is up to you. Okay, perfect. So now what? So now what we're going to do is get rid of the bubbles that you see on your piece. So if you have a torch, we're going to torch it and get rid of some bubbles. All right. So how close do you stay to the edge when you torch? I typically stay towards the middle because I don't want to torch the silicone too much. So I'm really just staying right on top to get rid of the bubbles really quickly. Perfect. Oh, that looks so much better. It looks really nice and clear. It's looking really good. Great. That looks really, really good Hannah. I can't wait to see the finished product. And while you were doing that, I actually separated my resin. So we're going to start doing the marbling technique. First, with marbling techniques, it's typically majority of the coloring is white. You can marble with different shades and color, depending on the effect that you're looking for. I'm doing the very typical, you know, marble black and white and bronze-y look. So I have white, black and a bronze here. What I'm going to do is first, make sure when you're mixing pigments into your resin that it's no more than 6%. I typically like to just start off with very little and then add on to it because a little bit of color goes a long way. And remember one thing, you can always add more color or you can't take away the color. So adding a little bit at a time is probably a better bet. So I'm going to go ahead and mix it and make sure you're mixing and scraping the bottom so that all the pigments and the colors are added to your resin. So I'm going to start with the black now. This is a nice and deep black. Again, just start with a little bit. And again, scrape your sides and your bottom to make sure that the pigment is well mixed into your resin. Now we're going to go with the bronze. Give it a good shake. Any metallics, I recommend that you give it a nice shake because it's got that little, you know, the metallic pieces and pigments in there. So you want to have it well mixed in the bottle already. Great. So these are all the colors that we really need for the marbling effect. Okay, so we're going to go ahead and pour the white first. I start in the middle, then I do a circular motion. This way I'm covering all the surface at the same time. And remember, one thing to always keep in mind is making sure that you wait 24 hours for your silicone mold to dry completely so that it's completely hard. Now I'm going to take the black and start detailing it. Marble has very undefined lines. So I'm going to start marbling it. So you take some of your black and remember, marble is a natural stone. It's not meant to look very straight. So even if you drip a little bit of black on your other areas, it's 100% okay. And again, use your imagination and your creativity. Marbles, as you can see in the store, they're never in a consistent pattern. So you can do a bit of your twists. You can continue to dip a little bit more black. So you're starting to see the marble effect take shape. Now what I'm going to do is I'm going to stop here and I'm going to go into using the bronze. A little bit of just that texture to it. I'm not going to use too much.  So we're going to let this sit for a bit, giving you that marble effect. Okay. Now what we're going to do is let this sit and then we're going to move on to the smaller piece. Now remember, this is going to be your top piece and this is the piece that's probably going to hold some of the items on the top.  I'm going to go ahead and do a circular motion. Do the wiggly, do the little spiral. If you've seen marble, sometimes they have darker pieces and sometimes they have very light, faint pieces. Okay. So that's it. Now you have the full marble effect. We're going to let it sit. But before we do that, we need to get rid of some of that bubble. So I can have the torch Hannah. Thank you so much. So really quickly, test your torch. It's great. I'm just going to go in and get rid of the bubbles. Now that we got rid of some of the bubbles, the torch actually brings out some of that marbling effect, which is great because once it's cured, you'll really be able to see that marble inspired look. So thanks so much Hannah. So now that these are done, our projects are complete for the day. We're going to set these aside, but we've got to learn how to drill the holes into the pre-made pieces because we still need to assemble it and use the hardware of our choice to kind of make that project come to life. All right. So now we're at the final steps of making this tier tray. We're going to learn how to assemble it and drill the holes. Now we're going to fast forward a little bit because we're the pieces that we made earlier are being cured right now. So we're going to work on the pieces that we pre-made. Here we have ones that were made with a store-bought mold and then here is one that does not have a hole in it and we're going to learn how to drill the hole. Okay. So let's drill this piece first. Let's talk a little bit about the hardware that you get. So these hardware are purchased from Amazon, a more any online store to make sure that the hole is big enough for this piece to go through. You would take the drill bit and match it. So that looks like it's a great fit. So now that I know this is the size for my drill bit, in order for you to not crack your piece, you start off with a smaller hole. So this is significantly smaller. So this sets the stage for you to drill a bigger hole. Now before you drill, I typically just eyeball it, but you can also measure it. So this is about four and a half inches and so right at the middle would be around two and a quarter. So that would be your middle part. You can also measure it this way, which is around three inches and right there that is your middle point. So we're going to go ahead and start drilling. Make sure you have a really good grip on one side. Direct go directly on top and just go ahead and drill.   So let's move on to the next piece and there you have it. Now that my holes are drilled, I'm ready to assemble and I'm going to get Hannah to demold her project and have her assemble with me. So this, as you can see, this is the one that is store bought and has the pre-drill holes with the little nut. So I'm going to go ahead and do the top first. So they come with washers, so make sure you have the washer. You can do that with three. And then the bottom part, you have the bottom screw, the screwdriver and there you have it. We have two completed tier sand projects, a floral inspired and an ocean inspired project. How did you like it? I had so much fun. Thank you for sharing it with me. That's great. So stay tuned because Hannah is going to go ahead and work on the projects that we made earlier. She's going to unmold it and assemble it so you guys can see the final product. That's it for me for now, but thanks for having me and I hope to see you guys soon. Bye for now. Since the upper tiers have no backing, we recommend placing heavier items on the bottom layer. Hey guys, I'm back. As Carmen mentioned, I'm here today to reveal the final project for you guys. They look so good. They're nice and hardened now. So we've got the marble ones all cured as well as the flower tray. So I'm going to demold them and put them together. After I demolded, I noticed the edges were a little bit rough. So I went in and used an exacto knife and carved around it just to clean them up a little bit. Okay, so here they are demolded now. The flower one looks great. The colors really popped inside the resin know that they're cured. And the marble one also looks amazing. The colors have settled out a little bit from when we poured it, but it looks so good. And for this homemade one, we still need to drill the holes. So we're going to go ahead and do that. And then I'm going to put together the flower tray. This one has holes already made because of the mold we used. So it's going to be even easier than the last one. Here are the final trays. I think they both look amazing. I loved how Carmen turned out with the rough edge from the homemade mold along with the marble technique on the inside. I think it turns out really natural and pretty. And I loved learning how to do the flower on the gold foil inside this one. I think it also went together really well in the end. I think they both look so good and I had so much fun doing it. So I just want to thank Carmen for coming out to teach me. And I really hope you guys enjoyed the video. So thanks for watching.


And let's get it on. I plan for 90 minutes, but I don't really have enough slides for 90 minutes. But depending on how many questions there are, we may finish early, maybe, but I'll do my best to at least not be too late. So this workshop is not about Faust-Pessier, but about the special topic of doing Faust plug-in programming. So it was my idea, well, usually I do the more academic or science-y stuff, as some of you might know, but it was my idea to do a real practical introduction to all the incantations that you need to get Faust compiled, something to plug in that's ready to use in your door. So there are basically two reasons for that. First, users want to know how to do it, because they maybe got a nice plug-in as a Faust code, and then they need to figure out how to compile it so that it works in their favorite LV2 or VST host. And the other group I am talking to are the developers themselves, so I want to learn at least do some of their DSP programming in Faust, because I am a bit biased, of course, but I think Faust is very nice for doing DSP programming. You can program on a much higher level, and it still feels like coding on the bare iron, so to speak. It's much like doing hardware, but it's all virtual. So if you, into patching with PD or Max or whatever, then you will find some elements in there which are familiar, but it's a textual language, and you actually get a mathematical description of your signal processor, so even if in 50 years someone discovers your code, they can maybe still do something with it, at least if they can still find the Faust specification, the specification of the language. But that's only the academic or the science part of it. The practical part of it that you don't have to worry about all these nitty gritty details which can take very long to get right. Okay, that was the gong for the final members of the audience to get in. Not yet. It's like in the theatre. The break is over now. Okay, so anyway, I will go into that a bit more later on, but for now, just to give you a short synopsis of what we'll do today, is, well, we don't have tables here, but installing the required software, you have the slides, you will find them in the wiki, of course, and I've also uploaded a demo to gtap. You can get the entire gtap repo. The link will be shown later, and you can find that in the slides. And then you have all the materials and can do, and I have written down all the commands that you need so that you can then redo the stuff at home if you are so inclined. So I'll show how to install the software and then show you how to do basic programming in Faust without going too much into Faust, because teaching Faust would take a day at least. I mean, at least getting the basics across. I will show some elements of Faust. I will give you a complete walkthrough of how you can do a very simple instrument, step-by-step, and beefing it up until it becomes really a playable instrument in Carla or Ardo or whatever you use. Here in the demos, I will be using Qtractor. And so I will be showing how to compile both LV2 and VST plugins about the reasons for that later. They work exactly alike. So if you're using a Haas-like Bitwig Studio on Linux, which only can do VST plugins, then you're covered. And if you have one of those nice open source doors which do the LV2 plugins, then you're covered too. So I will show that if there's enough time, I will also show it in different hosts that I have installed here. So I can show Ardo, Bitwig, Qtractor, and also Traction here. And I also have Carla and Jalf, of course, installed. So I can show that too if there's enough time. And while walking through the demo, I will also show you some optional features in these architectures which can be used for musical applications and also for beefing up the plugins with the GUI, which is pretty new stuff, which was done by one of my students. Okay, so the secret source here is Faust. So let's start talking about Faust. Why would you want to use it? Well, it would be nice if Faust would make it possible to bring DSP to everyone. So you don't have to know much about coding. I mean, the language is pretty simple actually. But we really have to face the fact that doing DSP programming is hard because DSP is hard. You have to know quite a bit of math and you need to know some special coding techniques, at least if you're doing it in C or C++ or even Assembler. But all is not lost. Others have learned this. So you can learn it too. And what's so nice about Faust is that it makes coding DSPs a lot easier. So there's less code to write. You can do a simple additive synthesizers and just maybe four or five lines of code. And most of that is actually the control variables. The algorithm itself is basically a one-liner. And the rest of the stuff that you need, if you want to do a filter and you do that in C, then you have to think about buffers. If you have a recursive filter, you need a buffer to keep track of the past samples. And it's easy to forget about that or make one-off errors and stuff like that. And you don't have to worry about that when using Faust because the Faust compiler will take care of it. And the other nice thing about Faust is that we have some very good codes available already. So some of the world-leading experts like Julius Smith from Karma are working in Faust by now and they have published many of their codes. So there's lots of really good DSP code in the library. And much of that is available either... Was that... Okay, so that speaker... It wasn't me, I hope. Much of that is also available in a form so that you can just plug it into your program pretty much like you take an abstraction in PD and put it into your PD patch. And other stuff is ready-made code which you can produce an instrument from and just use it in your DAW. And other stuff is you will have to work a bit more. But in any case, there's lots of code already available so that you don't have to start from scratch. And getting into these P programming is of course the hardest part and it's always nice to have some code that you can start working with. And if you got deeper into Faust there's also lots of in-depth documentation available. The pages by Julius Smith if you want to do really the hard math stuff he has plenty of pages there and also plenty of pages, basically even an introduction to Faust itself. I've linked to that in the slides so these are actually links there not always recognizable in the slides, I'm sorry about that. But if you see something that looks like it might be a link then you should try in the slide to just click on it and if you're lucky then you actually take into the page. And one very nice thing about Faust is that it has an online compiler so it lives on the web as well. So if you want to get started with it it might be a hurdle to get Faust up and running I'm going to show how you can do it it's actually not that complicated but even if you don't or even if you use Windows and don't have an up-to-date binary for the Faust compiler available you just go to the web and use the online compiler to compile your DSP code I'm going to show that as well. So there's plenty of nice stuff in Faust to do that a bit more formally I wanted to present some pros and cons so for me it's more the pros than the cons of course but I tried really hard to also find some reasons why you wouldn't want to use it. So for me the main points for Faust are that it has a formal semantics that's maybe something which only scientists or mathematicians like me are interested in but you have to think about it this way just in the last break I talked to someone who's doing audio formats and if you're doing stuff that might be useful or might be interesting for others let's say in 50 years time and if we are talking about music there there are always some scientists who are interested in the old stuff namely musicologists which I teach at the university and then you have to start thinking about things like how was that instrument implemented how did it sound and with old instruments we maybe know maybe some of them are still around with real instruments but with virtual instruments unless you have precisely the max version that you need to run a certain patch from one of the fathers of computer music you don't know how it sounds and in 50 years maybe all these max versions won't be available anymore so you can't reproduce the original sounds and that's where the formal semantics comes in so it's also something for documentation and not just for getting executable code more quickly and more conveniently than in C it's also very high level that is closely connected to that very high level means that you can concentrate on your DSP algorithm and forget about all the nitty gritty stuff that's for me that's just great I mean I don't like bothering about thinking about buffers should it be five samples long or 17 samples I don't want to bother with that the false compiler will take care of that then it's also cross-platform cross-platform we have other toolkits we've heard about DPF you probably heard about JUICE and these kind of things so that you can produce cross-platform plugins well get plugins for different platforms but false really takes this to a new level we have so-called architecture files and so you can compile to different targets Edgar already mentioned that this morning and the nice thing about that is you can do your own architecture files it's basically it's just a C++ template for the plugin and into which then Faust fills in the DSP specific code which is generated from the Faust program next point is output is C++ code so you can just take the code produced by the Faust compiler and run with it and modify it for your needs and that is actually done by some people who I know are using Faust to do at least parts of their plugin and of course then you have to know C++ or at least C there's very little actual C++ in the generated code it's basically just an object, a class which encapsulates all the routines which are needed and the data so that's the way that C++ gets used by Faust so you don't have to be worried about some of the inefficiencies which might creep in the views C++ instead of plain COS and then there's some more stuff which I can't really get into there's the Faust 2 branch which gives you an embeddable JIT compiler for Faust programs so JIT means just in time you can use Faust in a library and put that into your own programs and then have the DSP code generated and executed on the fly and this is of course nice for rapid development tools and we have two examples of that already Faust Live is available for Windows also I think and the Mac and Linux of course and P-Mix is unfortunately only available on the Mac right now P-Mix basically gives you an environment to program your Faust plugins directly in a VST host like a DAW Faust Live is more for doing stand-alone stuff for quickly testing plugins so it's very nice to have this quick way of dropping your Faust source into a program and have it run there and there's also the web audio support which is where you can run your Faust DSPs in a browser, yes one question you were mentioning unfortunately with respect to the P-Mix only being available to OS X right now are there any plans to yes but they're still quite a bit off if I understood the guy correctly so there are no dates no no expected time to arrive sorry no thanks okay the web audio support means that you can run your DSPs also right there inside the browser as Javascript code as ASM Javascript to be precise and it runs almost at native speeds which is an incredibly incredible feat in my view that was all done by Graham of course I'm just talking about the Graham stuff right now there are also some disadvantages of using Faust so certainly there's a learning curve you have to learn a new programming language if you already know C or maybe C++ and maybe Java or Javascript which are popular languages today they are all imperative languages object oriented imperative so you give commands to the computer not so with Faust Faust is a functional programming language and even among the functional programming languages it's purer than many others so there are no side effects whatsoever what you write down is essentially an expression which describes how a signal processor operates and there are very many high level operations the so-called block diagram algebra operations which let you combine these things which is more in the style of patcher environments like PD or max and less in the style of C++ where you say okay first I need to get these buffers and then I multiply them by 3 and then I add something and so on so functional programming is much different and it requires a different mindset then more seriously I mean all these things can be overcome with learning just studying Faust and learning to code in it there are some things which aren't quite finished yet which I worked on by Graham one is the short circuit conditionals so that you can shut off part of your DSPs if you don't need them that's not in the master branch of the FaustJIT repository yet but there is a special branch where it's already implemented and as far as I can tell it seems to work great and will probably soon be integrated into the mainline Faust branch and the second thing is multirate processing which is in this setting quite complicated where Jan, that's one thing which I remember we talked about that how many four or five years ago and designed the scheme but it's not easy to do so but it will be there eventually multirate processing you needed for stuff like doing Fourier transforms right now you have to jump through some hoops do some stuff in Faust again some other stuff in Faust and connecting these two and maybe doing the Fourier transform in between or something like that and of course we want to keep everything to Faust it must be possible to do Fourier transform there then another potential point is that your target architecture which your environment that you want to use needs to be supported which isn't always true but for the popular environments I think Edgar showed it this morning the impressive list of architectures where many people have contributed to Faust it's a comparatively easy way to contribute if you know a plugin interface if you have a plugin interface which you know very well and you know how to which callbacks need to be implemented just teams up with someone who's written architecture before or take one of the sample architectures and put that stuff into the architecture and make it work and that's always a valuable form of contributing to Faust because in the end of course we want to support everything that does audio in some way at least but if your environment is not supported yet then you'll have to roll your own architecture code so that's potential disadvantage and now I'm already entering the more practical stuff so if there are any questions about Faust itself I mean the inventor himself is also here he can probably answer these questions much better than me one thing I've noticed sometimes you get really long compile times depending on what you're writing I've had like seven hours on a modern computer submit a bug report there's probably some corner in the compiler which isn't either not completely working or where some optimization really needs exponential time or something like that submit a bug report with a minimal example and I'm sure that Jan will look into it where do I file bug reports is it just a mailing list or the C both happen one program is the C takes really long and the other is the Faust takes really long the propagation made it mostly but yeah something like 10 gigabytes of memory or more I think even post on the mailing list or submit a bug report at the SourceWatch project that's a proper way to go about that so if there's no further questions about that I'm now entering the realm of getting practical and getting stuff installed so if you want to do VST plugins then you need this one commercial piece of software the rest I'm going to talk about is all open source software these VST sources are also available in source form but there are some license conditions this is stuff from Steinberg the makers of Cubase and well it depends on whether you want or have to use VST in some projects and then if you want to compile your Faust programs to that format then you just need to install the VST SDK source so I've written down how you can do that you can read it for yourself I'm not going to walk through the steps now I have it pre-installed on my computer this may be a stumbling stone if you want to publish your software then you have to fulfill Steinberg's license conditions at least if you sell stuff I think and ok but as long as you're running the VST plugins for yourself there's no way that Steinberg can know about that or has to know about it at least that's how I see it so if you have a project which you want to port to Traction or maybe Bitwig Studio then you just need that Faust plugin as a VST it's possible you just grab the source code and install it and then you can use the same processes which I'm going to show with LV2 to produce exactly the same plugin within limits I mean there's some stuff that's just done differently in VST than in LV2 in subtle ways sometimes it's done better in VSTs but most of the time it's done better in LV2 so there are some limitations which you have to live with but most of the functionality will be exactly identical with both kinds of plugins which I'm going to talk about so this is also the stuff that I've done and some of my students I'm going to give some tips for ARCH users because I'm a big fan of ARCH Linux and actually I use Manjaro but so you see some notices of ARCH user repository packages then it becomes very easy to install the stuff and even if you don't running ARCH if there's some stuff that you want to find out how to package or how to compile which dependencies it has don't look at the Debian source packages they're big mess, they're horrible and in ARCH you get a single child script there's the dependencies there and the entire build process everything in a single child script so you can easily find out how to compile stuff even on a totally different system whether it is Debian or Rated or something so this information may be valuable for others too and in any case I included it so you should install the SDK first why? because during fast installation it will try to figure out the script which gets used to compile to VST will try to figure out where the sources are maybe you need something to edit something manual anyway but maybe it will figure it out on its own otherwise you'll have to look at the fast VST script and fill in the right path to the VST SDK there but that's why I put this step first so if you put it in some of the paths I put up a sample path here if you put it there then the script should be able to find it which is included with Faust so installing Faust it's really easy so you take the slide and this doesn't work here if you have a proper PDF reader you just copy this line let me see whether I can do that in this browser selection, where is it? there it is I hope that this works let's clone the sources I'm just going to put this on the desktop now somewhere on the desktop I don't have internet why don't I have internet? so let me see where is the public network? more networks okay there it is okay now I have internet well this will probably take a while let's pretend that we've already done that of course I have the sources somewhere and then you just run make and if you want it to be a bit quicker then you let all your processors work and I also added world which compiles some extra stuff which isn't usually included but which you also won't need for the demo if you do it just to make it will have amazingly small number of dependencies basically just the C library or is there some C++ standard library and you need a C++ compiler and you probably need actually the GNU C++ compiler or CLANG of course it's pretty compatible so and then after that you just do a sudo make install and everything will end up under C++ local by default also of course there's an arch package which I made so I actually made two packages one is the mainline Faust which is all you need for doing the stuff that I'm showing here and the other one has more dependencies that's the experimental Faust 2 branch it has more languages output languages and the additional features which I mentioned the JIT compiler but for just compiling your plugins the mainline version is all you need okay yeah you see all the commands there so it should be easy to follow those instructions for the stuff that I'm using here the LV2 and the VST plugin architectures you need some extra stuff you need the boost headers that's used in some part of the architecture where it does processes, MIDI stuff and actually I think I'm using that in the voice allocation algorithm somewhere I didn't want to write a cyclic buffer just for this it's in the boost headers you only need the header files from the project on Ubuntu or Debian systems that's probably boost minus def or something like that on Archdew you just install the boost package and you need the LV2 headers you can get those from those links as well but they should be readily available in any kind of Linux distribution that you want to use and QT of course as well QT is only needed if you want to build the custom GUIS with the plugins and there you might ask why use QT we just had the discussion on the LV2 mailing list QT is not ideal for plugin GUIS for a variety of reasons but we did it in QT because it's readily supported by Faust that there's already quite a lot of code for doing Faust DSP GUIS in QT and we just used that and that's why we use QT so there are some pitfalls there you need to be sure that the QT version will work with your DAW for instance adder requires I don't know what I do when it does this if you have a tip for me some cable connection maybe I hope that the guys listening on the stream haven't just exploded yet so the QT you need for adder is QT4 and the QT you need for the other DAWs or you can use with the other DAWs including QT Ractor is QT5 so that's the current version of course so I've also written down the packages that you need to install and so the next thing that you need are these special architectures for LV2 and VST plugin programming you actually don't need to get these the stuff is that you need for compiling is all included in the latest FaustJIT versions anyway but I've included these links to the original Bitbucket JIT repositories with the code because there's a makefile in there which shows how you can package up stuff with the makefile if you want to do that for your own plugins and there's also a couple of examples which you can use for testing immediately and you can just clone these repositories of course I have downloaded these as well so let me just show you how you compile this stuff I have it sources bitbucket Faust LV2 so if you need all the dependencies that I mentioned and then you just type make or if I'm doing it to make it a bit quicker then it will compile use Faust to compile the stuff this uses the makefile not the script that you get with Faust there's also the script included so you can always get the latest stuff from this repository that I've shown but I try to keep the Faust repository in sync very closely so that it doesn't fall behind yeah so it's quite a few sample plugins but it should be almost finished now if you just type make in the Faust LV2 directory it will build with default options which means no dynamic manifests in LV2 those of you who have used LV2 plugins will know what I'm talking about so it needs to generate some LV2 plugin manifests and package them up with plugins themselves and it would also do GUI-less plugins I can show you a different way to compile well it's still there's some extra compilation stuff going on there because it actually compiles the plugins twice to generate the dynamic manifest which is always in the plugin itself but you can if you have a version of LV2 installed or more precisely of LV2 LV which is the host LV that for instance Qt Tractor uses and also other uses if this is compiled with dynamic manifest enabled then you don't need all this stuff and the compilation gets much quicker let me briefly show that as well the dynamic manifest option you have pretty much the same options also if you use the compilation script which I'm going to show later on and you just say you want these so in the make file you write equals 1 so this enables this option then the compilation is much quicker because it just needs to compile the plugins once just as a shared library which can be loaded by the host but I'm going to stop this here now as well and show you another option which is GUI equals 1 so in this case the make file will compile against Qt5 by default if you have that installed you can plug in including custom GUI in Qt I'm going to show that in a couple of minutes how they look like and this takes a bit longer again because well actually there's some kind of Q make stuff and mock compilation and everything going on there in the background so this takes a bit longer and there's no compilation as well but I mean it's not really that bad okay so once you've compiled these things while it keeps compiling I'm going to get back to the slides okay you also need a doll of course if you want to run these plugins or at least an LV2 or VST host I'll be using Qtractor here because I can do both Qt2s and Qt5 GUIs with it and it's nice and small and easy to use. I could have used other as I said in the end I will maybe show some of the other hosts as well but for now I'll be sticking to Qtractor so if you want to follow along with the demo you will have to have that installed as well and I've left some links here of other stuff like studio, radium, reaper on the Mac if you're here with the Mac so the stuff also works on the Mac with some limitations which I'm going to talk about at the end of my presentation and traction also on Linux very nice and okay if you don't have any of these and have troubles running the plugins directly in your door then maybe Carla will help you we've seen it in Vince's presentation and there's also an external for PD which I've written so that you can run the LV2 versions of the plugins also in PD compilation I've already explained that there are some technical details you can specify which QMac version to use on Mac Fire and I've explained the dynamic manifest option I recommend using this option there are some reasons against it LV2 from the basic philosophy of LV2 is that you have all information as static data in these manifest files so that the host can discover everything about the plugin without running the plugin but there are some features which are just impossible to do if you don't have dynamic manifest like the tuning control that I'm going to show so if you can use the dynamic manifest it's good it's not absolutely necessary but in any case none of these distinctions hold for VST because it's always there's only one output in the VST architecture which is the plugin and to install these plugins once they're compiled let me see whether it's finished already yes you end up with some stuff in the case of in the case of LV2 you end up with this where are the results did I do the VST stuff the accident it's still compiling that's why but it should be finished any minute now any questions concerning the build process while it's still building no ok probably anything which does standard C++ 11 or later so 4, 4, 6, 4, 7 should be should be ok so it just finished and here in this case the Faust LV2 stuff gets generated in a separate LV2 directory as a single bundle which contains multiple plugins and the needed manifest files and stuff so you can just take this and copy it over to your .LV2 directory where I already have quite a bit of stuff so you see the Faust .LV2 stuff is already in there and therefore I'm not going to do that now but you can just take the entire bundle and throw it into your .LV2 directory and then stuff is installed and you can immediately fire up your DAW and they should be recognized of course if you're packaging stuff for someone else then you might want to install elsewhere instead on the user LV2 or something so that's how this works that's the makefire compilation same process basically with the VST stuff you run make or the scripts and then take the scripts which come out of that and throw that in your .VST directory and well I don't really want to go into the technical details of the compilation process but you see in the VST case you just get a single binary the shared library which is the VST plugin so it's a bit simpler in LV2 there are some details involved whether you want a GUI or not whether you have dynamic manifests or not whether it needs to generate the manifest and the manifest and the plugin binary needs to be put together into a so-called plugin bundle and all that is taken care of either by the makefire that you find in the jitter repository or with the script which is also included in the Faust installation and well so there are some options there which are in lighter blue but I don't really want to go into that now so using the online compiler I actually have this link should actually be working so let me see there we go okay the online compiler looks like this and it used to greet you with a selection screen where you could select various example programs that's not the case anymore you can enter your code right there or you can just drop a file over there so let me see let me take one of these files that I have so you find these examples in the examples folder let's take for instance a little instrument like the organ let's take the car plus so the DSP file is the Faust source let's just drop that up here it didn't work why sorry now the sound will get worse but the battery is going down I still have an internet connection so this should work but it doesn't there it is now I'm not going to explain all of that it's an instrument it's a simple physical modeling instrument and the code which is pretty much stolen from Jan so that's why his name is up here and so that's the code that you find in the examples and you then go to the compiled code tap and you just select you just select as an architecture whatever you want if you want 64 bits LV2 without GUI it will be this architecture or you can create a plugin with a Qt4 GUI or Qt5 or let's do a VST this time with a Qt5 GUI it will actually show you the C++ code but of course we just want to have a binary and so I click on the last tab it takes a little while again maybe do it again I hope I didn't kill the... ah no there it is now so if you want to download the plugin you can get it right here if you have your phone ready you can just scan the QR code and click on this file here it's a tab all which contains the plugin so I'm going to save that and let's look at it there it is C++ in this case there's just the C++.so in there which you can now drop into your .vst folder in the home directory otherwise you'll have an entire plugin in there you just unpack that and throw that into your .lvst folder that's all so it doesn't get any easier than that I hope that you'll agree with this okay that's well there's one more possibility use the script this is what actually is done by the online compiler when it compiles the stuff it uses these helperscripts one of them is the faust.lv2 script which creates lv2 plugins from faust sources and the other one is a bit weirdly named faust2faustvst that's because there's also another vst architecture by karma which isn't quite as capable which you can also use but this script is called faust.vst so it has various options because I'm running out of time I'm not going to go into all of these but you see you can select the qt versions that you want to use and you can also instruct it to keep the C++ the generated C++ code if you want to tweak that yourself and stuff like that and you can also specify a style for the GUI and there are some some pre-configured style sheets available in the faust source and for lv2 you can also specify whether you want dynamic manifest support or not and also quite useful if you in lv2 every plugin has an uri and you can choose that with this option here and you will tag on the plugin name and then you can have your own plugin URIs if you don't specify one you get a generic one which is actually URL pointing to my BitBucket website for that so let's get even more practical and see whether I can still in the 30 minutes that I still have walk you through a complete example we'll start out with something very simple namely this little example here so that's just a sign generator you probably thought now ok I'm kidding you but we'll arrive at something much more useful in just a few steps this thing I mean it's probably pretty obvious what it does so I don't even have to explain that but you see that there's some library imported there which has the oscillator function this OC function defined in it and there's one control here for the frequency in hertz and this is described by a certain function numeric entry function and you have a default value for the frequency here and a range of values and a step size and then what your process function does process is the main function in the Faust program it realizes the global processor so the DSP which is realized by the Faust program in this case it's just an oscillator which oscillates at the given frequency which I can then control with the frequency control and let's just compile it so that you've seen it once how you do that manually it's very easy let's do a VST so remember it's Faust VST not just Faust 2 VST and then basically you just specify the name of the Faust source in this case x01.dsp and then it will everything else gets done silently in this case it will only for the benefit of the online compiler I think we introduced that you introduced that that it prints out whatever gets produced by the script and this will then get packed up for us it's just an information ok it left our plugin here and now you have the x01.so right there and you can drop that into your .vst directory and that's all you have to do to install this stuff so that I don't have to compile everything manually here I've prepared something ok for these sources let me show you where you can find this stuff there's the repository it's on jitub in the slides you have the command you just copy that and then you can clone the repository which has the slides in it this example and a little makefire which then automatizes the compilation but it uses faust2.faust2faustvst script so let me just run make and it will also produce a faust this is a GUI this is the minus GUI option but of course I've prepared that as well so that I don't actually have to do it anymore I just wanted to show how that works it will take a while because with GUI compilation as I've explained it takes a bit longer I've already copied this stuff over I can show you that for instance the vsts are in I put it in a separate sub directory so that they're easier to find the vst host will also look in subdirectories so there they are all the plugins in this case only shared libraries because that's all vsts and now let's see them in action so let's start with the simple one that I just created that I just compiled I can show you that ok Jack is still running and as I said I'm going to use qtractor for the demo and we just create a midi track and add the plugin that's all well I've chosen lv2 here I've actually compiled both so they are also available as vsts in qtractor I'm going to use the lv2 now it's not much but you can actually change the frequency so that's probably not what you expected but it's the first step so it's actually produced by this plugin so you have a control and the GUI is included as you can see it's in this case a very simple GUI to show you what you can get when you do more stuff like this and to keep you motivated I'm going to show you a complete project with in this case let's take that one so these are some of the sample plugins I have the kind of couple of strong synthesizer here which looks like that in the GUI and well we can take away the free verb and have a font sitter reverb also as a file program and you see the GUIs are formatted in the case of sliders that's because the layout information is really can be included in the Faust program this will be in the final steps of our walkthrough and you can also have some plugins with outputs so here we have a GUI element which is called the bar graph which then gets rendered as this kind of control so that you also have some meters and stuff like that that's how the full blown results looks later, now let me just walk through the remaining steps maybe we don't do all of them but ok we don't have to listen to all of them so next step would be if you want to arrive at an instrument we already have the oscillator so one more step let's add some metadata the plugin hosts always like metadata because then they can show some information about the plugins so this is the only difference we have in this program we declared some stuff the version of the plugin, its author a short description, a name it depends on the host how this information is used and also on the plugin standard how I could map it to some metadata in the plugin interface but it should work to some extent at least in the different hosts but I'm not going, I don't know what I'm doing wrong sorry about that again maybe it's because I'm running out of time and they want to remind me ok the third example now has some more interesting stuff in it I've added a few controls you can also in the materials that I included if you go into, there's not only a make file there's also a read me in there which explains everything which I'm now just glossing over in a bit more detail but what we have here is actually I've added two parameters gain and gate I already have a mind of producing an instrument and we need that for the instrument later on too and to make the sound more interesting I added some partials well now there are three where there was only one and this also shows how you can program with macros in false macro definitions look very much like ordinary function definitions but they have patterns in them and what happens here is whenever I need the value amp of one it will take this definition for amp two it will take this definition so this sum will take the control variable that I want to use with all the ranges and stuff multiply it by the oscillator and the i value here is a running index which is defined down here it will then run from 0 to 2 and because i,3 is written down here it will run from 0 to 2 that's why I had to add one to the index here but what this basically does is it defines partial E as a signal processor which creates a sign and this main function here the process function adds these three partials together so I guess that should still be understandable as well so where we had one control parameter we now have six in total one for every amplitude for every partial and the other three which will then become the voice parameters of the synthesizer which we are coming to in a few minutes so let me briefly show you that using Q-tractor again excuse me? where? David, can I please have a glass of water that would be very nice, thank you regarding the macro is there any real difference because I was confused by the term when you compare it to some other function or is it just regular pattern matching with expression, just define a function which is only defined on one, two, three a partial function in a sense or is it? actually it's a function which is evaluated at compile time and not when the FAUSE doesn't generate any code for the function itself for the AMP function but it generates code for the GUI elements as usual it's missing from the compile code it's kind of inlining but it's really a macro language thank you very much Heiko but I would theoretically have the possibility to use pattern matching and make some complex whatever yes we have some code like that if you want to create complicated signal processors with repetitive pieces like measures and so on we regularly use that but I can't really explain it in a few words now and I have no examples to show right now but it's used for much more complex stuff okay but maybe I can ask that later when it talks about it yes I can then maybe look for some examples which I have thank you okay let's try this new plugin new track which one was it I forgot the number number three okay first need to turn it into MIDI track and number three there we are okay it looks a bit funky we'll take care of that but you see there are the three sliders and I have my frequency I also have a new gain parameter and I can push the gate button to play and I can change the amplitudes so it's beginning to look and sound like an instrument and let's take that one step further next step okay you probably I forgot to mention this but you probably heard that click right that's because we have no envelope yet of course and if you just start the sound with full amplitude then it's going to click you don't want to have that in instrument that's why you add an amplitude envelope and I did that in this version of the patch otherwise it's still basically the same but we have this part down here if we take another look at the version of the source before that you see it just multiplies the three oscillators with the gain and the gate but now instead of multiplying with the gate itself it multiplies with some signal derived from the gate and here you see how you can patch stuff together in Faust we still have the same gate control signal which will be one when the node is played and zero when it's off and have this ADSR function which turns this parameter this control signal into a more complicated signal namely into the envelope signal that's a function which is available in music.lib as well it's interesting to look at it's a quiet intricate implementation I really like it but fortunately I didn't have to write it myself Jan did that for me and we just have to pass some parameters and I've added these here a tactic a sustained release just the classical stuff if you know about sound synthesis and the techniques which are being used there then you know what I'm talking about now so we need those four parameters to describe a curve that looks a bit like a church so it has these four periods attack, decay, sustain, release and now instead we just pipe this gate parameter into this ADSR function which is a signal processor which takes this one parameter and then produces the envelope and then multiply with the signal just as we multiplied with the control signal before that's also one of the features of Faust is that all your operations operate on signals not on single values and you don't have to think about it even so and I also added master volume and panning now so that we have a stereo signal and we also control the volume separately for each voice later on so I can briefly show that as well we still have time for that I should really remember the keyboard shortcut can you change these? I want to have control T for that MIDI so this was 4 so there we have the attack, decay, sustain, release parameters some reason why they are not in alphabetic order but that's all written in the read me I don't go into that now so we still have the gate and gain but if you listen to the sound now it should start without clicking and I can control the left-right panning it's also not as loud anymore that's because of this parameter here and we can of course change the amplitudes like we did before but we can now also change the attack decay sustain, release parameters and get different sounds, both sounds and stuff like that so now we almost have an instrument that should be pretty clear and we can go this one step further and this is now really easy because the rest is basically done by the architecture you just have to tell the not even the false compiler but the architecture the compiler doesn't know or care about instruments it doesn't know or care about media, that's all in the architecture and the architecture will pick up this extra data, the end voices I introduce that into my architecture I guess that we might make some kind of pseudo standard from that because I really want to have that information in the false program at least in cases of architectures where it makes sense so this tells the architecture I want 16 voices maximum and I want this to be an instrument plugin and the rest of the plugin is exactly the same so we can give that a try now now I need to create a track and I make it a MIDI track and I also change the metadata so it's actually now called synth instead of sine which I used before that's just changing the metadata doesn't affect the functionality otherwise so as you can see one thing that you will notice is that we have some new controls down here but the frequency gain gate parameters are gone they are now automatically operated by the voice allocation algorithm which is also included in the plugin architecture so with just this simple step just writing down declare and voices 16 you now have an instrument and the voice parameters this frequency gain gate parameter have become invisible and the other parameters will be operated in lockstep for all the voices so the architecture actually makes sure that there are enough instances of the DSP available to play as many voices as you specified and the actual number of voices you can change with this polyphony parameter which goes up to the end voices value and yeah that's about it let's play it a bit and now comes the embarrassing part because I'm really not a piano player so I can't really compete with wins of course and I still need to make a connection probably here, a MIDI connection so let's connect the keyboard to Q Tractor and now I should hear a sound and now I can play this as an instrument so of course I need to probably need to change this to record no it wasn't even needed so it's always monitoring, right? if it's connected so we now have an instrument some more details about this I can only pick one or two now because I'm running out of time already but basically you can now go into pick a MIDI file drag it in here why can't I drag it up here because actually I wanted it to have here but it's not possible or is there a way to do that try clicking on the MIDI yes now I got it but ah there it is, ok then I can get rid of that one again thank you very much you learn something new every day so same instrument again now there's still some issues with that you want to have a nice aguille it's not really formatted nicely and you want to deal with super noise maybe and stuff I've taken care of that in the walkthrough too but maybe one thing that I want to still show you in the end instrument yes the microphone where is it? ah there we go would you be able to automate the parameters we defined in the Faust code? yes they're all automatical so Faust maps that to the architecture they're all exposed in LV2 they're exposed as LV2 ports but there's also a MIDI input port where you can then use the Faust assignments of MIDI controls which is also possible MIDI control automation on the door side I wanted to go into all of this but I'm running out of time now so maybe we can but Faust abstracts this and translates it into the architecture which maps it to the port basically Faust has no business in that it's all done in the architecture in the Faust program there's certain metadata which the Faust compiler will just put into the output C++ program which is done by the architecture like the MIDI assignments and stuff and all the connection to the plug-in API is done by the architecture Faust knows nothing about VSD it doesn't have to so let me create another now with my new found knowledge let's have a quick look at this so the end product would then be something like this which I even styled with the gray Faust style for QT which looks pretty much like a standalone application which you get out of Faust when you use the Faust 2 Jack QT script or something like that actually uses exactly the same code it's just packaged a bit differently this as an instrument but let me do this with MIDI so again I need the MIDI file and Vencio so this is by Bach and yeah it works actually so let's look at the plug-in again and now you can just operate if you've ever used Faust Live in a standalone plug-in you just operate it in exactly the same way okay maybe sustain so you see they are all working they can also be automated and then operated by MIDI or you can operate directly by MIDI and it's multi-temporal actually it keeps track of the separate MIDI channels and in the end this was added functionality which you don't have in Faust Live yet we want to merge all this code and then it will work the same everywhere but this is right now only in the LV2 and VST plug-in architectures then you can also change the tuning on the fly so basically there was a question does this you probably heard that this sounds like a little bit out of tune now which is because actually this is a quarter-mean tone which sounds pretty bad in some keys and you can change this on the fly or you can also send MIDI tuning Sussex messages to the plug-in it will understand these as well if your DAW supports it so this is also added functionality which you get for free okay now the question does this already have dynamics what do you mean by dynamics with different velocities? it's a complete MIDI synthesizer the velocity gets mapped to the gain parameter that's why I had two volume parameters one was named gain which is specially interpreted by the architecture as one of the voice parameters so it's automatically mapped from the velocity and I've also put in the other volume parameter which isn't interpreted especially by the architecture which can then be exposed in the GUI or in the generic GUI provided by your DAW so the architecture just maps the velocities to the gain parameter and the note beginning and end to the gate parameter and the note number to the frequency and this is where the tuning is used and the tuning can also be different for every MIDI channel so it's a fully multi-temporal instrument which we don't have in Faust Live yet but once we merge the code we'll be there as well then let me get back to my slides and finish off I talked about this and the MIDI CCB support you can find it in the slides and in the README as well where I explained the entire walkthrough one thing which I didn't talk about yet and I think I'm really... we started a bit late in the last few days can you give me five more minutes ok thank you then I can briefly show that to finish off so that I just finish off with the slides you have a very good opportunity to create your own plugins either from existing Faust code or if you're a developer we really try to lure you into Faust if it's more convenient to write your stuff in Faust than doing it in C, C++ anything yourself the reason to also support VST with exactly the same functionality for me was that personally I also use other hosts I couldn't show these now but the stuff also works in Bitwig Studio and Traction and Ardo of course and so we have some nice hosts now which only support VST Bitwig Studio and Traction and so I wanted because I'm using that also in my courses at university I wanted to have that work as well not because I'm really fond of the VST plugin architecture but I think it's important as a step and we just can't close the eyes on the fact that VST is a cross-platform plugin architecture right now I mean LV2 pretty much with very few exceptions only works on Linux right now and now you can just take your Faust code and compile it to VST instead and then you can run it on the Mac as the same plugin that you used on Linux and the goal is of course to have also the GUIs work which doesn't work yet there's some trouble with the LV2 stuff it should work in principle it even compiles on the Mac but the GUIs don't work in Ardo I don't know why they don't work in Kala either probably some library incompatibility I couldn't track that down yet and in VST there's if someone knows Cocoa and knows how to embed a QT window back in a native OSX window then please get in touch with me we still need to solve that other than that we probably will look into lighter toolkits as well I mean this QT support was done by Roman Zwidler one of my students and it was a BC project so it had to be done in a certain timeframe and then it was very convenient to have all the ready-made code for QT in Faust itself we used all of that and it still works with Faust VST .h header file unchanged so we just built on that but QT is not the optimal solution I'm sure if Robin is still on ISC will agree with that there should be other possibilities but then we need to develop the code to format the GUIs other interesting directions for future work will be to port the architecture to some other plugin standards and also make it work directly in PD instead of the plugin that I will be showing now and then something which I have on my to-do list I just bought a mod the new one the mod duo and so we probably will add some special support for that in the LV2 architecture and there's some other stuff but one thing which Wins were just brought up which has been on my to-do list for an eternity already is MIDI output from the control variables and as he just convinced me this really needs to be available so that you can have a feedback to your MIDI controllers and so these are the things that I probably will work on as time permits and as the last thing before we can maybe have another Q&A I'm just going to show the same kinds of plugins that you've seen earlier in one of the more elaborate examples I will show now in running in PD you can also find that in the JITAB repository there are two examples they are one more basic and this one is a bit more like the stuff that I've shown in Qtractor so I'm running this in PD L2 org but of course you can use vanilla PD or PD external instead and as you can see there's a special plugin here you need more dependencies to get that to work because it's written in my own functional programming language pure but it's not too complicated to get it to work you will find some notes in the readme files and this can load any kind of lv2 plugin it uses liplilv as inside of it and so it will load any plugin that the library by Robillard will load and there is no GUI no Qt GUI even if you've compiled the plugin with GUI here in PD but as you can see there are some generated generic PD GUIs actually PD users will maybe even support that but it would be nicer to have auto-generated formatted GUIs which we already have code for that but I first need to make this lv2 vst architecture work in PD the version we have now is still a bit more primitive that's also on the to-do list just to convince you that this actually works let me run this from media player to pure data I have no sequence here in pure data so I'm just taking a basic media player application and there we go and we should also same stuff, same plugins exactly the same plugins now running here in PD so that's the cliffhanger now I'm ready to take the Q&A and thank you for listening I have maybe two questions the first one you said that you do the automatic mapping of the velocity to the gain if I don't like a linear ramp how would I set my own exponential or logarithmic wave? well, you get a linear parameter but it's just mapped to the 0,1 range you can then still do anything in files that you like so you can turn it into an exponential response or whatever you want second question second one is ok, so I've got you right if they generate it, you guys don't really appeal to me and the ones with the theme are somewhat nice but you really want something photorealistic, self-rendered could you hook some self-made code with your own PIX maps and rotational knobs into it? just rip out the GUI code and put in your own that's why I said it's so nice that you get C++ code you can see that the GUI code actually it's a part in the architecture which you can just throw out and in the VST architecture it's basically that you can that you can don't let me lie to you but you should be able to just replace the editor callback in the VST architecture and in the LV21 it's basically well there the link is a bit more intricate but so that's probably more work to integrate your own GUI but in principle it's also I mean there's a Q widget which is created and which gets then passed to the LV21 plugin host and if you rip out that code and create another kind of widget instead you probably have to change the manifest which also says which kind of widget it is but we could maybe make this easier by providing some conditional compilation stuff which leaves out everything but the call which you then have to implement with your own GUI so that's probably what we should still work on. It's certainly possible because you have the C++ output code but it's more work with LV2 I'd say right now as with VST where you can just take your own editor class and throw it in there and delete the traces of the old ones. Right. So Albert I might jump in there just as open AV because I've actually done exactly this in two different ways. One take the C++ code from Faust I wrote an architecture backend for Faust a really really simple one where you could pull your parameters and get float pointers and then you write your own C code or C++ code that actually pushes the values into the Faust DSP so it's essentially take their magic and just bring it into really usable C code as a certain class and this was the way the first version of Sorcer was actually built even though I never released architecture file because it was such a hack but the code generated was that it's actually much simpler. You just add another UI to the plugin itself in the metadata and it doesn't have to be in the same bundle at all. So you can specify a new bundle and I think that's the way the mod guys are doing that too, which is a really beautiful solution. That's true because it's just also in the LV2 architecture I've shown that picture which displays how it's compiled. GUI is really separate. It's a separate module so you can just throw it away and put in your own GUI as a binary and just change the line in the manifest which tells it where the plugin is or just build without GUI and add the stuff yourself so that's really, that's Harry is right. It's much easier than I imagine it to be. But if you want to have some template code how the integration could work also with your own GUI then you can maybe even use some of the code that we generate. Okay, any more questions? Yeah, you here? In the middle? You mentioned you wanted to use other toolkits as well in a more lightweight, are you thinking of stuff like the thing that Harry wrote and Robin? Yes, I'm thinking specifically about his toolkit but there's other stuff we should really team up to make that happen because QT, for me it looks nice but I'm maybe not the typical target audience and we should have alternatives there but we need to make them happen so I don't, I have no idea how to target his GUI toolkit and right now we don't have an architecture for that, we don't have FaustQT.h for the OpenAV toolkit and so we still need to write that and probably we need to team up with Harry and there are other possibilities like OpenGL which as soon as Jan implements them I will pick them up Sorry. And then another question you mentioned the number of voices you wanted to make that a standardized parameter Yes, it's already thinking about something where the different voices interact where you have maybe you implement a bleed between them or something like that which I want to have that inside the FaustQT as opposed to a compile parameter or something like that The number of voices? Yeah, and voices parameter? Ah, okay, that's just metadata it has nothing to do with the Faust program basically it gets picked up by the architecture but right now it's only supported by my own architectures, by the LV2 and the VST architecture but it's conceivable to make that work with the other architectures as well so that we have some kind of standard of specifying this Faust program should be an instrument by all architectures which support that kind of thing So you cannot make the different voices interact with each other inside the Faust code Yeah, that's the disadvantage of this approach if you want to do that you basically use that technique then you build really a DSP like usual with all the voices in it as an ordinary effect and then you have to do all the control yourself But that's probably a problem worth thinking about I mean basically what you probably want to do if you want to have interacting strings then you want to pipe out some control information or even audio information and pipe it into the other feed it back into the other voices So it's conceivable to also do it on the level of an instrument plugin in this sense but it's not available yet we really have to develop some ideas for that and another thing if we talk about voices of course you want to have a completely dynamic voice allocation but that's not so easy to do in every time context so we're not doing that right now but probably something for the to-do list as well Okay, there seems to be something from IRC There's a question from IRC indeed Robin Garius asked Does Faust slash LV2 cater for MIDI CC bindings so is it possible to map CC to both parameters like ADSR and Synth settings like the sustain pedal? Yes, I'd say yes If I understood the question correctly you're asking how to map MIDI CCs directly onto the extra parameters in the instrument, right? That's possible You just write some metadata it's already implemented only the input side right now Yes I think we have to call it quits now because everybody's waiting for the break and I'm really thankful for being here because I'm not quite... well, I'm actually the one to blame that you had to take on this task David so I want to say a special and personal thank you that we can be at Berlin for this mini-lock Thank you very much


Ah, Hogar. Legendary Hogar. A knoll of myth and a knoll of legend. Let's take a look at his story, his patch changes and all the info we can find. But before we do, as always, a quote from the knoll chieftain himself. Hogar is an elite. A river-pulled knoll chieftain in southern Elwynn forest. There is a quest near his encampment in the form of a wanted poster, offering a reward for killing him from the Westbrook garrison in Elwynn forest. Hogar himself is an indirect agent of the defiest brotherhood, along with the rest of his river-pulled tribe. Hogar has a reputation as a very dangerous foe. Mainly because he is one of the first elite mobs a human character will run into, and so new players will sometimes, unknowing what the elite dragon portrait means, underestimate him and get themselves killed very quickly by attacking him solo. For most classes he can be soloed pretty easily and about level 14, although a lower level hunter or warlock could more easily solo him using their pet or voidwalker to tank. Players below that level should probably form a party for an easier time. Another way you can solo him is by kiting him to the nearby tower and let the two guards kill him for you. Although that seems like an easy strategy, you must do most of the damage however, because if you don't, before the guards get him you will not be able to loot him. Because his camp is filled with lots of other nolls, kiting him all the way to the tower without losing him so that he runs back to his initial position and without pulling other nolls, this may not be an easy task. He was one of a very few elite mobs who kept his elite status after patch 2.3. In Wrathen Lich King, Hogar is a memory in the fight against Argent Confessor Peltrus in the trial of the champion encounter in the Crusaders Colosseum. This was introduced in patch 3.2.0, the Call of the Crusade. In Cataclysm, Hogar as a mighty and famous leader of the River Parnolls, now has his own hill named after him, Hogar Hill. Getting him too far from it will cause him to reset. After being defeated, he is arrested and taken to the stockade in Stormwind City by General Marcus Jonathan and high sorcerer Andromath. Have you heard of the term Hogar Raid? A Hogar Raid is where many level 1 characters attempt to kill Hogar by overwhelming him in numbers. This was done many times in the past as a minigame, a side challenge or just a pastime, albeit in an organized manner. Hogar is also used as a joke when it comes to where loot drops. Many people will jokingly say that items such as Ateesh, Great Staff of the Guardian and Thunderfury, a blessed blade of the Windseeker are rare drops from Hogar. It doesn't have any special loot however. Hogar is also often compared to other endgame raid bosses when it comes to difficulty. It has become a staple inside joke of the player base, just like Gammon on the Horde side, Murlocs, Mancric's wife, Chuck Noor's jokes and good old Baron's chat. In Hearthstone, Hogar has the title of Scourge of Elwyn and is defeated by Jaina Proudmoore and imprisoned in the stockade once again. And finally, to end this video, did you know that he has exactly 666 health? This is true at least for classic or vanilla wow. I don't know if this applies to any other expansions too, of which I couldn't find any info. So we can safely assume that Hogar is in fact the Devil. I will let that sink in. Also, during the Blizzcon 2009 live raid by the Raiding Guild Premanation, the final boss they fought was a level 80 heroic version of Hogar, which they were unable to defeat. Since Wrathil Lich King, all kinds of different stats are being tracked, including deaths to various things like certain mobs, lava, drowning and so on. One of these things being tracked is the amount of deaths because of Hogar. And finally, at Blizzcon 2017, the cosplay competition was won by realistic, full body cosplay of the gnoll, the legend, the one and only, Hogar. And that is all for today. I hope you enjoyed this short video. If you have any topic or character suggestions, feel free to let me know. Thanks for listening and I will see you next time.


In this presentation, we will take a look at a partnership liquidation where there's a gain on the sale of the assets of the partnership in the liquidation process. We're going to start off looking at the liquidation in terms of a table. Then we'll do the same thing in terms of journal entries. It's nice to know both formats. It's often presented in a table format when we work through these problems, but it's useful and very helpful to see the journal entries as well, gives us a really good idea of what the chart of accounts is, gives us a good idea of the capital accounts, especially in a partnership. So we're going to start here first with the ratios. So the ratio is a three to one ratio, and we first have to know what that means before we can move forward on anything. So that means it's going to be three plus two plus one for a total of six. And then we're just going to take each of these divided by the total of six. This is going to be the partners for K, C, and M are the partners. So it's going to be three over six, which is 50%. Now that one can be expressed with a with a percentage, but the others are a little bit more difficult. The two over six is 0.333 or 33.333 on forever. That one is more difficult to represent in a percent easier to represent with a fraction, which is the reason we have this format and more of a fraction type format. The last one then is one over six, that's a 0.1666 on forever or 16.67 or 66 on forever, it's rounded up here. So those are going to be our percentages. So that's of course the first part that we need to know to move forward with any type of problem that we're going to have some revenue split in and dealing with the capital accounts in a partnership. These are going to be the accounts and this is similar to like a trial balance that we're going to have listed out in this format. Note that if you're working book problems will often the book will often combine accounts together into grouping assets. So here's a group of assets and whatnot, but it's useful to see all the accounts. And that's why the trial balance, which we'll look at next is nice to look at. We're still going to reduce all the accounts because we want to focus in on the capital accounts, but we will show some of those accounts because we want to see how the actual liquidation process would go to liquid up the liquidation process should go in this order. We're going to pay off. We're going to sell the inventory and then we're going to pay off the liabilities. And then we're going to finally pay the capital accounts. And the reason it goes in that order is because if we start paying the capital accounts, then it's quite possible that we end up with not enough money to pay the other the other partners and that could be a result of us selling the inventory for less than we had thought or or some other something else could happen the liquidation process the liabilities could differ than what we thought. And if that happens, we won't have the money to pay out the full capital account balances. So to not get in that problem to not get in trouble to not get a fight between the partners at the end. If we need to do it the proper way, which means we sell the inventory first, then we pay off the liabilities. And then we can pay the cash to the partners. So we've got cash of 182 500 we've got inventory our only asset in this problem 530,000 we've got accounts payable 240,000 and then the capital accounts are 93,000, 212 500 167,000 respectively. First thing we're going to do is sell the assets which is only inventories that's going to give our example here. And we're actually going to sell it for for 450. So this is this should be 450 is what we're going to sell for in this case. And therefore, when we reduce the inventory, we only got 450 the inventory is worth 530 or it's on the books for 530 that's the book value. So that means that there's going to be this kind of loss that we have on the inventory. And that's going to go to the capital accounts, we're basically going to break out this loss. So if we take the 530,000 minus the 450,000, we get an $80,000 loss, we then are going to say multiply that times the profit sharing to allocate it to the capital accounts in the proper format. Note, this is kind of like a the accounting equation up top. So we're going to multiply that times 0.5. 50% that's the 40,000. If we take that same 80,000 times 0.3333333333333 that's going to be the 26 667. And the last one will, of course, be 80,000 times 0.1 666666 on forever. And that'll be the 1333 three about. So that's going to be our selling of the assets. Then we're going to have the balance will bring the balance down, we'll have the cash and the sale of the assets increasing the cash to 632,500 inventory was at 530 went down by 532 zero. Then we've got the capital accounts was at 93,000 for K it's going down by 40 because there's a loss. I'm sorry, the accounts payable or bring down the accounts payable. Then we have the loss for 53,000. Then C's capital 212,500 minus the 26,667 gives us 185,833. And then M's capital 167,000 going down by 13,332,153,667. Then we're going to pay off the liabilities this liabilities here of 240,000. So cash is going to go down by 240. We'll pay off the liabilities for 240. That's the only two components of this transaction no effect on the capital accounts here. The balance then we have cash 632,500 minus the 240 giving us the 392,500. We then have the payable going down to zero. And then we'll just bring down the capital account. So 53,000 bringing them down 185,833 bringing it down 5153,667 bringing that down. Next, we're going to distribute the cash to the owners. Note all we have left is cash and the owner's balances. So now we can just pay off the cash and give whatever is owed to the owners. Do not make the mistake that thinking that these balances here should match the profit sharing percent. It's common to think that and we'll start to think that we mess something up if that is the case. But we didn't mess anything up. These profit shareings only deal with the profit sharing. They don't deal with a capital account balance in total. There are things that will throw off the capital account from the profit sharing amount, including investments, which don't necessarily need follow the profit sharing percent, although they could. And the distributions, which don't necessarily need to follow this percentage, they can in essence take out whatever they want up to their capital account balance, unless there's our other restrictions in the partnership agreement. So that brings our balances down to zero. And we've closed this thing out. Let's do the same thing now with journal entries. So here's our chart of accounts, basically the same thing. It's a small account chart of accounts. We're not going to have a lot of accounts. But just to get an idea of what would look like if we were going to liquidate using journal entries, we've got our assets in green liabilities in orange. We've got the capital accounts, and there's no revenue and expenses. They've all been closed out. And that's kind of a prerequisite for us to start the closing process. The income statement should be closed out once we start the closing process. And therefore the assets minus the liabilities equals what's in the equity. Remember the order that we will have, we're going to sell our assets, then we're going to pay off the liabilities, then we're going to distribute the capital. So if we sell the assets, we're going to say cash is going to go up. We sold it for 450 remember, we're matching this table. So you could follow along with the table here and see how they relate. Then we're going to credit 530 for the inventory because we sold all of it. So it's at 530 it needs to go down to zero with a credit. The difference then 80,000. That's the 530 minus the 450 gives us that 80,000. And that is a loss. Because it's a debit. So we can see that because we got less cash, of course, than what we sold, given us that loss of 80,000. If we post this out then cash is going from 182,500 up by 450,000 to 632,500. Inventory is going from 530,000 down by 530,000 to zero because we sold it. And then this gain is going to be an income statement accounts going from zero up in the credit or in the debit direction, a loss by 80,000 bringing us to 80,000. So now what we have is this loss here on the income statement. And remember, we just said that what we need to do is close out everything on the income statement so that we just have basically a post closing trial balance and we can then allocate everything to the capital accounts. We did that all in one step when we made the sale here. We just allocated to the capital accounts here. We're doing kind of a two step process. We recorded the gain. Now we're going to allocate that gain to the capital accounts in accordance to their profit sharing agreement. So to do that, we're going to say that the gains going to have to go down. We're going to debit the capital account for K. And that's going to be the 80,000 times 0.5. That's the 0.5 here times 80,000. That's going to go to K's just like we did when we allocated up here in the table. Then we're going to go to the 33.33 to see which is 26667. Then we're going to go to the 1667 of the 80,000. So 80,000 times 0.16666 on forever gives us the 13333. Then of course the 40,000 plus the 26667 plus the 13333 adds up to 80,000. So if we post this out then we're going to say that the capital accounts going from 93,000 for K down by that 40,000 because we're allocating the loss to the capital accounts to 53,000. C had 212,500. It's going down by 26667 to 185,833. And then M started at 167,000. It's going down by 13333 to 153,667. And then we have the gain starting at 80,000. It's going down to 0. So now the gains back down to 0. And we're left with just cash, the liabilities and then the capital accounts. Next step, we're going to reduce the liabilities. So to do that, we're going to say, all right, the payable account has 240,000. It's a credit balance. We're going to make it go down doing the opposite thing to it, a debit. Then the credit's going to go to cash because we're going to pay off the cash for it. Posting this out then cash is going to go from 632,500 down in the credit direction 240,000 to 392,500. Then the accounts payable is going to go from 240,000 down by 240,000 to zero. So now we're going to be left with just cash and the capital accounts. And now we can just do our final journal entry, which would be just to zero out those capital accounts and the cash. So we're just going to list what the capital accounts have. We don't need to remember the percentages up top. We don't need to know the allocation percentages because it doesn't matter, it doesn't affect this part. We're not going by the percentages, we're going by whatever is in the capital accounts. This one happens to have 53,000 in it. So we're going to make it go down to zero by debiting 53,000. The next one has 185,833. We're going to make it go down to zero by debiting 185,833. M's capital account has 153,667. We're going to make it go down by debiting 153,667. Then we're going to credit the cash for the 392,500. It has to be in balance because this is the accounting equation. Assets, which are just cash now, equals liabilities, none, plus equity, these three accounts. So that means it should be in balance, the 53,000 plus the 185,833 plus the 153,667 adds up to the 392,500. So if we post this out then, we've got the capital account for K company at 53. It's going down in the debit direction to zero. Then we've got the capital account for C 185,833. It's going down debit to zero. Then we've got M's capital account 153,667 going down with a debit to zero. And then we've got the cash, which is going to go from 392,500 to a credit down to zero. And that's going to be it. We've now liquidated the account for the partnership. Remember the liquidation process. We want to first sell the assets, then pay off the liabilities, then we can distribute to the owners.