Oh, how was I blocked? That was sick. How was I supposed to block that? How's it going everybody? Dato to a here back with some more Dragon Ball Fighters ranked matches this time playing a team of TN, Krillin and Yamcha, and we are once again going up against the Gojito blue player we faced yesterday. Yeah, this is a rematch I definitely, I definitely was hoping we'd find them again, so I switched to a team I'm more comfortable with not saying I'm going to necessarily win now because I don't know if that's the truth But I just whenever you get into these kind of games and you can let me know if you feel like this as well But it's like ah dude, I just want to keep I just want to keep playing. I Just want to keep being tested. I want to get hit by all the dragon rushes Wow. All right, that Chelsea was kind of messed up now. I don't know why I spent that bar Please hit. I'm so worried. All right. Nice. I wasted a lot of bar there being careful I was like if gojita lives, I'm not forgiving myself. So I'm going to do everything in my power to make sure it lives. Oh What oh, I thought if I dude, I really tried to get that um volleyball fist out Not the quick grab start already dude. No my character leave wait wait All right, we're gonna spark here That was sick six m's online are a different beast dude Does that hit actually I took my sweet time getting down. All right. Yeah, we're good Oh, no, that doesn't have armor from that What what what I was I was like wait, what stunned me. It was the galactic donut. I didn't see it I was just stuck at my tracks, but I was already blocking cuz I was trying to back up I was like wait what I'm stuck damn. I if I would have blocked that too There's so many that's the thing about Krillin. There's so many what ifs Hold on. We got go tanks in a bind. I don't know if I want to level three. That's not even an option for us Yeah, respect it. You really have to respect go tanks. I wish you didn't the amount of respect.  All right set himself up for go Stokey Nope, I'm not taking that that was too much. I Have not taken that one dude. All right. We're pretty much dead here.  We're back in the game Oh, no. Yeah, I panicked. I can't believe you reflected there That was sick All right, yeah, I'm sure with four bars is not the worst though. Yes, especially when that hits All right level level one to three won't kill So we're just gonna take the level three and hope that we're close enough to the corner to really do something with it We're not Nope. Nope. Oh my goodness. He blocked it. Oh, that was sick The state of mind is that a oh we might get double we might take a little more damage after this Yes, slow ride level three into the grab. No the mix. Why? He didn't even try to extend it two bars. Can he kill from this? He might be able to build a third. Oh The bar building that is Broly. Does that hit? I'm going to say yes.  I want I wanted to get an early one in All right, set the tone for the rest of the match. That was crispy the low after jumping in that that was a new one Haven't hit it with that one yet. Oh love to see it as well. I think he probably messed up there. Oh No No, I threw two cuz I was scared. That's the different dude. I'm way too scared of things I'm like, please let let that kill Yes, another good one. I think I want to bring TN back out I think I just want to keep playing TN until I can anymore Love to see it Resets not a drop combo. It's called a reset with love One bar should actually do it here. Yes one bar gets the job done a reset with love is all you need to see Down tech we got those. How's I supposed to block that? That was that was awesome though the front flip into a true combo Get this man. Y'all. Oh, no, you can duck it. I'm sorry chaotzu I just knew that I was going to die So I thought hey I might as well try to throw your life away as well. No hard feelings though, bro No hard feelings between me and chaotzu. We're still boys I'll see you next round All right, all right, we're free. Oh, I'm running around I gotta I gotta be a little more patient can't just keep dashing up as fast as I want to there was a lot at stake here Love it. Oh, I thought I missed that as well. All right. We're playing for a different goal now We want to get that sparking time Love it. I Think we might actually have killed him right there. Hold on That should that's actually it. All right, y'all should bring in the spirit ball. That's it. All right. Yeah, please hit Thank you. Thank you so much All right, so we get one game much like we did last time a little earlier on in the set though So we do have things like that now, of course There are some random elements of play that we did get to go our way like he down teched and we hit him again After we drop the combo Things like that tech a throw man my defense my defense would be so good Unfortunately, we we got to deal with the head. We're dope. All right. Let's just get out of here That was cheap as well that knocked me back. All right. All right Same side. Oh I can't believe we lost sparking already and we're we're well on our way to losing tn right block How am I supposed to block that man? Overheads everywhere. I don't even know what To expect all right one how much bars is gonna take just the one big bang coming out. Yeah All right, so we haven't touched him and he asked for bars.  Three so not bad, but I don't know for aiming for Shenron this set. He's still technically in the corner I'd rather get hit by that. I think And guard cancel we out of there Love it. Okay. Whoo another hit on the another hit on the docket These get these kinds of games are always so different from the other ranked videos man I'm so quiet. No And that's why all this talking man.  We don't want to see him leave get that spark of time down This is a level three for sure. Yep. Yep. Let me take the rest of that sparking time off your hand, sir If I take another three sparkings I actually get a Wow, he broke that I'm getting obvious Ain't that time he stayed on the ground and went for an overhead that is cheap You can go up and go for the overhead or stay on the ground and then jump and go for one Is that a slow? No, that's that's a normal of three correct Correct. All right, watch the grab. We're gonna block. We're gonna keep blocking if we see that hand arch back We are jumping we are jumping. Oh, you can say it all you want you can get reacting as a different beast That was crazy. All right, who's he switching back out to go Jida? Yep, go Jida comes back in takes the reins of the point character. He wants to run that mix through go Jida That's why I get hyped every time we kill him. That's a big piece. Oh No, I didn't have the the time I thought I did into the corner another DP combo At it. All right, we get to live that was me going for the level three. I Think we're dead here Five bars. We might even see a go Jida level five. Oh, we're gonna see a go Jida level five No sauce, but a level five not killed. I Mean, I guess this is still sauce just on a different level. I wanted to see the The level five would have been so sick But yeah, it might it might not have killed. All right. So what is that? That's two wins. All right, two to one Do the one we can't let this set end the same, dude You can't let this set end the same Close calls. I thought that 2m would hit and then that 2h definitely felt like something was going on there I can feel something. I got a test them there Nope, not not taking that. I really got a test them when he's just playing that go Jida game Like without calling any assist. Nope. I try to test them. I was too slow So we lost TN already Dang dude, that is a tough loss Wait, wait Hold on. Hold on. We're not dead yet. We are not out yet. Okay Sometimes drops are beautiful things Yeah, I'm just gonna level three. Hold on. Let me buy some more time for TN Start running my mix. That was cheap, too Man I Gotta hold all of that so you can see that I'm really struggling on defense There's not too much to say about why I'm struggling on defense It's just a lot of options being thrown at me right now. I'm oh, please not Okay, TN left. Oh, I was gonna be sad not because TN's gonna there goes the sparking timer Not because TN is an important role, but just because I saved it. I saved him early on I'd hate to see him go like that He's super dashed didn't see a gun. No, I meant to hold that I meant to let that one rock out like with a real overhead attack. All right, so we got to get gojita out of the game If we want to win, that's what needs to be done. Oh my god, we're already blocking again. No guard cancel That was impatience. You could probably hear it in my voice. I'm tired of blocking. I need to lay some hits But not here. This is not the place to do it. We saw that tech on Twitter. I Like that we really did see that on Twitter first and they got matched up with So now we have the insider information I see that combo. I'm taking it every time any other dragon rush not for me I'm doing wrong I'm surprised you reacted to it. Maybe I had to have a bar. I was doing it wrong because I felt like he wouldn't have expected. Oh Maybe maybe maybe I don't know. No, I wasn't even close didn't exactly go over it like we wanted to oh my god The length I have to hold that and I would really like to get this gojita at some point this gojita is going down, dude Come here We back. I thought I didn't block that. That was about to be it. Oh that now it's it We just didn't get him there. No, oh wait wait, okay I thought he might drop that again like last time but we're back. Damn. That's it 3-0. I Mean 3-1 not 3-0 God I stopped That wasn't even close to oh All right, well, I guess we're gonna have to go ahead and call it there the rematch and went about as expected I hate rematch again.   Let me go. That was I wasn't blocking that We were really moving there and then I dropped the gojita combo and I stopped thinking Which is fine. I stopped breathing a long time ago Big lag. Oh, no. Oh Dude, I'm trying to what I'm gonna when I get caught there I'm trying to volleyball fist for that one hit armor And I'm just missing the input or just it's not it's not a scenario where you can really do that Okay, that was sick Walk the guard cancel. He's still a spark. He does man. All right. We're gonna have to use our spark here early All right. All right Not too bad cut go takes So what I did I was I was trying to see if you'd get caught up I completely forgot about vanishing so it was a really dumb idea, but he threw the key blast And I was like maybe a level one will cut him down Wow Regina level one. Is that gonna be enough? It was that was a lot of damage. All right, so we're back down to TN Damn, this is this is it. This really is it whoever lands the next day. Wow Cheap that was like three frames of the jumping medium that hit me right there. All right, TN's getting diced up He's actually dead too Didn't even have to throw these on but this is just for style points. I still think it takes never mind He's gonna stay in with gojita. He didn't he didn't want to switch out lose the mix Seven bars. Hey once again. I am now once again asking how much is Shenron charging Shenron That's a lot. You're asking a lot Shenron Okay, I didn't I didn't go for the auto combo I chickened out. I'm gonna try to win I'm gonna try to win Come on me. You got to clean up the play. We already decided we're not going for Shenron There's no more time to waste that was not a key blast Check that one nice No super dash over it man. Don't level three. I need to be able to freely roam around I just want to be free. I don't want to be mixed. Oh, can't I just be free, dude? Why the ghost okey? Oh The vanishing stops it to over said nice. Yes, we're not out of the game. No, we're out of the game Dude that beam is fast. All right, that's actually where we're gonna go ahead and call it Hopefully you guys enjoyed this one as well if you did let me know down below Why you're down there if you like the video and the channel make sure to the like button and subscribe if you Want to watch more videos right away like this one there should be some on your screen So go ahead and give those a watch if they look interesting to you other than that I've been Dr. Doya and I will see you in the next video


Hello everyone, I'm Mira Abou, the CTO at Neotic.ai. Neotic is a small company located at Lebanon. Lebanon is a small country in Asia. So first of all, thank you for inviting me for this talk. It's my pleasure to be here, listen to all your thoughts and in my turn it will be also my pleasure to share with you a small concept of our technology which was recommended by Mr. Naseem Talb. So as we all know, investment or doing a good investment and effective investment is not an easy job and that's why Neotic, our company, has created an alternative idea based on AI. So I will start by a small introduction about trading in order to have a small idea about it in order to be able to follow up with me in the next slide. So as we all know, each stock could be represented or the prices of the stock could be represented using candle charts. So if we take an interval of time, for example three months for the stock, for example Google, we can see how the prices of Google change, what is the movement of prices during, for example, here three months. As we can see, so each day we have a candle, this candle represents the open price, the closed price and also the low and the highest price. So why we trade? Simply, it's just a game to make some profit. We can see it just like a game. So this game has a few rules. So let's start with rule one. Open long position on a stock when you expect its price gonna go up. When you expect its price will increase. In fact, having a long position on a security means that you own the security, you buy the security. So when you buy it and when you see its price will go up, will increase, so sell it and you will make some profit. Rule number two, open short positions on securities that you expect its price will decrease. So when you open short position, means you sell a position and then if its price will decrease, you buy it and then you make some profit. So we can do profit in case the stock will go up or go down, goes down in the price. Most of the time the traders, when they open positions on a stock, they put three parameters with their positions. These three parameters are holding period, target gain and stop loss. So I'll start with the first one. I'll explain it very quickly. So holding period in general when the traders open a position on a security, they say I will hold this security for example for one year, for three months and then they will close their positions. Add to this most of the time they put a target gain when they open the position. So for example, if we can look here, for example around 14 July or more than 14 July, let's say a trader has opened a position, a long position and he said I will hold this position for around 1st of September and he put a target gain 8%. So when he put his order and when the stock goes up so the position will be closed here and the holding period, the maximum holding period will not be achieved. So most of the time it's good to have a target gain without just holding the stock during the whole holding period. Also you can add a stop loss. So stop loss in order to limit your loss. So when you say for example I will put a stop loss of 4%, this means the stock will go down by 4% of its price, of its value, the position will be closed. So what is our target? Our target is providing trading strategies. A trading strategy, you can see it as a fixed plan that we put it in order to achieve high returns by opening long and short positions or we say going long and short. What is our target is providing to our customers many trading strategies, each one with its parameters, parameters as stop loss, target gain, holding period, etc. So why we do that in order to have a high diversity in forecasting? In fact if you do for example an open position, if you open a position on a stock with very high quantity, if we say to all of our hedge funds or to all the investors or traders for example, open long positions on this stock, in fact the price or we fall in the problem of market impact because you are doing trading with very high quantity on the same stock. So our target is providing strategies in a manner that each strategy selects different stocks. So our technology in fact when we give a strategy to a customer, we plug this strategy into our technology and the strategy and the technology automatically will select profitable stocks for long and short positions each day. So each strategy will be plugged in and will provide returns or to select stocks for long and short positions. Sometimes there is no return, no selected stocks. So sometimes it will say there is no profitable stocks today, there is no stocks that we are sure 100% is good for long position or it is good for short position. I'll start now by the core of our presentation. So in the first part I'll explain some challenges that we face while we are working with financial data. It's a little bit different because financial data is a time series and it's a little bit different from other types of data. After that I'll explain a part of our technology without giving all the secret source of it. So I'll try to stay high level and I'll say how we have achieved high returns and how we have faced all these challenges. So the first problem I think this problem occurred in all the machine learning problems. So we have, when we are working with data, financial data, we have a low SNR, which is signal to noise ratio. So which is a ratio of the probability of significant information, the probability of two signals to the power of noise, which means the information that are not useful. It's very low, so we have many information that are not useful in the financial world. In fact, when you have such problems, of course it would be very difficult to build a machine learning that do not fall into the problem of overfitting and underfitting. I would suggest that all of you know these words. So of course overfitting is that your data, your model has just memorized the data instead of learning from it. You can summarize it in this sentence. So the second problem is that the financial data are not stationary. So what means not stationary? This means that most of the stocks follow random walks or trends, or most of the time both. So you have trends and they have also random walks. So when you have such type of data, for example, doing a regression will lead to a meaningless result. Or also when you try, for example, to use the concept of mean reversion, you will not end up with a good result. So in the stationary, you can say you have a kind of a constant mean. Razor, when you have not stationary data, you do not have a constant mean. So when data is added, the mean of your data will be changed. Of course, here, for example, you can use the concept of mean reversion because you have a constant mean. So most of the traders use this concept. But it's also applied, it's only applied on the stationary data. Also, of course, we have the 3D problems which is a problem of big data. So every day, since we work with the US market, so every day we have data about 8,000 stocks. So it's very difficult to visualize this data. We have data about their news, about their prices, and also we calculate all the technical indicators. We have data about the financial reports. So it's a little bit, we have a lot, lot of data. The second problem is the velocity. Velocity, this problem means that the speed of the data generation is very high. So sometimes every minute we have news about data. So we have to treat this. And finally, we have the problem of variety which means we have some structured data and we have some unstructured data. For example, one of our data providers is the Kondal. We have many problems with them. Sometimes we find the same stock with two different prices, for example, and etc. So also one problem faced in machine learning while applying machine learning in finance is the change in the distributions. In fact, these problems, it's a little bit related to the problem of non-stationary. In fact, when new distribution of the data change, the previous observations does not meaningful anymore. So when the distribution change, you have to restart your model, you have to start from zero over again. And finally, the final problem with this, which is the problem introduced by Mr. Talib, which is the fat-tailed distribution. Do you know what is fat-tailed? Okay, I'll give an idea about it. So I have written here a small definition. So a fat-tail is a situation in which a small number of observations creates the largest effect. So when you have a lot of data and an event is explained by small observations, I'll give some examples. For example, in sales, if you put the sales of the companies, you will find that most of the sales are for few companies, for few number of companies. In Pharmacritical, for example, you will see that few number of drugs gives the most sales. For example, in wealth, if you take 1%, just 1% of wealthy people, you will get half of the wealth. So you have small observations, small data, but this data has a large effect. This data is more significant than any other data. And finance, almost everything is fat-tailed. So we have few observations, but these observations create the largest effect. So if we look here at the index of SP500, we will see its distribution. For example, on this side, this is the distribution of the returns of SP500. So if we look here, for example, at the left side, we can see, we can find here that was the economic crisis during 2008. So it is not acceptable in finance to do a model without taking into consideration the data to take into consideration these small observations that have really large effect. Okay, so I'll start by giving an idea about our technology. Around one, two years ago, we were using LSTM algorithm. I will not go into the details of LSTM, you can find it on the internet. I will just say what was, it's a problem. The effect, as we know, time series, what differ time series is that the time, the temporal aspect is very important. So on a positive side, I think this information is very useful. So if we look at it, we can see clearly what the model was trying to do. So in order to predict a time t plus one, for example, the model was using the price at time t. So most of the time, it was using the previous price. So this is also known as the problem of persistence. You have a persistence model. So this implies that the future value, the future predictions are calculated on the assumptions that the conditions remain unchanged between the current time and the future time. So more specifically, if you plot the cross-correlation between the real value and the predicted value, you will find that there is a time lag of one day, which means most of the time, the prediction is equal, or the next day is equal to the price itself. So that's why we moved to another concept. We are now working on these two parts, but I will explain just a bit about the first part, which is predicting according to the price patterns. Okay, I'll say what is the process, and then I will give some details in each step. So first step, of course, it's data preparation. So here we have, for example, a bundle, our provider, we get the data from them. So the data that we get, it's about stock prices, it's about financial reports. Who is familiar with trading knows that, for example, the financial reports are very important in order to see the success or failure of companies. So it's a good data in order to analyze and to predict according to it. Okay, we also have a news, et cetera. We will not go into the details. Okay, the second step is features extraction. In fact, having a lot of data doesn't mean we can start extracting or training our model. Of course, we need to extract some information. What we do is calculating some technical indicators. These technical indicators are of many categories. One of them, for example, is indicators about the volume, about the moving average of the stocks. So these are features that we can calculate for any stock at any day. Okay, so for example, when you say moving average, so for a stock at day one, at day X, so it will see the moving average around 40 days. How was the stock moving around the 14 days? Also, we have other values. Then, so these two steps are for we perform it every day. So every day, we have data. We do features extraction, et cetera. Now, when we want to run a strategy, which means we want to forecast for a strategy. A strategy, remember, it has its parameters like three of them are stop loss, target gain, and holding period. What we do is labeling according to the strategy itself. So we don't have data like most of the companies, they have data and they do, for example, percentage of returns or et cetera. We have labeling according to a given strategy, according to a strategy. So labeling is done since most of our strategies are for long, go long and short on market. And of course, there is a financial concept behind it while we go long and short, not only long or short. So we do the labeling for each stock. How much you can consider the labeling like how much this stock is good according to this strategy for long position. For example, giving a label for another stock for a short position, we calculate how much this stock is good for short positions according to that strategy. Of course, here there is some formula that we use. After that, we start learning from data. What we do is, you will ask from what data you learn. So what is the data that you will perform the labeling on it? In fact, what we do, if we want to forecast today, for example, according to strategy one, what we do is we go back, we take several days, an interval of days, and we perform the labeling on it. After that, so we start learning from this. What is learning here, what we do? As we can see, it's just very simple. It's a matter of clustering. In fact, our concept, which was recommended by Talib again, is if you want to forecast today for stocks, it's enough to find similar stocks and historical data and that are winners. So if I can find features of features today that are very, very similar to features of historical data and these features lead to a positive return that there is a very high probability that this stock will give high return. It's as simple, as much, as simple as that. And in fact, much of the hedge funds and the managers do this. They find similarities, but according to variable to one variable or two variables, etc. So what we have done is applying their approach but using machine learning and some advanced idea. So after this, so the historical data will be classified and then we will project or we will put all the data of today. So we classify the historical data. We see what we have stocks in the market today and just we put this on the clustering and we apply here some formulas in order to find the top clusters, the top stocks that are very, very similar. And finally, what we do is since we built in the end we follow a strategy and we build portfolios and finally what we do is adding the stock and following up with the stock. So for example, the data preparation we have data preparation and also adjustment. So it's familiar with, for example, the concept of dividends of split. We need to do some adjustment on our data. For example, here we have a stock which is in blue and after that the price has decreased and it continues with the red color. What happened here is something called split. So the price has not in reality decreased but the stocks has been divided in due to and its price has been divided also in due to. So what we do here in order to our model do not treat this as a decrease in price. We do some kind of adjustment in order to keep so all the historical data will be adjusted in order to keep a harmony of the stock. Secondly also we do, in fact, what we do is we have calculated many features which is related to technical indicators to the change in the financial ratios. So what we do here is removing some features who has a very strong collinearity and also we choose the features who has strong collinearity with the label. I think all of us do that so I will not enter very much the details. So here is similarity concepts that we follow. So let's say we have a variable here or a feature and here also the same feature for another stock. So for example to forecast today in stock too we just try to find similarities but also not just on one variable. We have very dimensions, very variables that we work on and as we can see, they have similar and after that the stock price has increased and this is what really had happened also for stock too. Why we use simply unsupervised learning? In fact, if we go back to the approach or to the concept of fact-tales, we said that we should take into consideration the data with small observations. If you are using other models, the data with small observations will not be taken into consideration. So that's why using clustering, you have all the data there, you put the outer stocks on it and there is a possibility of 100% that the data which we consider sometimes outlier because they have large effects, they have a probability of 100% of being chosen. So that's why we follow such simple clustering. Of course we have our algorithm of clustering but you can test it with K-means, K-median, mean shift, etc. But of course you should take into consideration some points. For example, when you are using K-means in order to cluster your data, you have to make sure that this data has a Gaussian distribution. It does not have, in fact, when we say normal, this means that there is in the system some kind of a mean. So your mean could be a representative of your system. So if your system does not have a normal distribution, so of course you cannot use, for example, K-means clustering is based on the concept of means, which only has meaning in the normal distributions. Otherwise you can try, we have tested all of these. For example, you can test mean shifts which tries to do the clustering according to the density of the data. So the high mode will be like point of attractions in order to do the clustering. Okay. So when you think such techniques, like for example K-means, most of us here is we have, for example, this variable, this is the distribution of the variable. It's not very clear, but here what is happening is most of the data is around zero and e power seven. And we have rare data distributed, but that is very, very far from the zero.  So if you do this and you do the scaling without any cleaning, you will see that all your data will be almost the same value. So when you are using, for example, K-means, you should remove all the outliers. You are removing these points that are very far from the mean or from the data. And when you do this, of course, we are removing some points that might have many significant information. Okay. So that's why you should take care, when you are using K-means, that you should clean your data, but you are removing maybe some, many some significant information. Unsupervised, okay. In order to gain time. So here is what I was saying again. So we should not remove all these points because they are far from the range for a given variable. We should not remove them because they might have, they might hold very significant information and they should be kept. And when we are using clustering, they have a probability of 100% of being chosen. Okay. So as I said, I cannot give many details, but I will affect what defines a good algorithm. Is it good for clustering or not? It's the algorithm you follow and of course the similarity measure you are using, which is the best thing while you are doing the best, the most important thing when you are doing a clustering. In fact, we are using something called entropy, which is a concept from information game. Entropy first could be used in the system, whatever it is, it's distribution. So here we are not linked to the distribution of the data. What does the entropy, it measures, it's a property we can define the entropy of a system as a property of a system that measures its randomness. Okay. So for example here, if we look, let's consider this as a cluster. So we can see here there is a high randomness, high impurity in it. Rather when we go to the right, we will find that there is low randomness and very high purity. So what we do is to cluster the data, we start by initially clustering and then according to some formulas, we see how much the clusters are pure using this formula, which is related to the probability. Okay. And then we try with many iterations to improve this. Using this method, in fact, the outliers will not affect the clustering because in K-means, I think you know what is the problem with K-means having outliers because the means or the centroid will not be very meaningful. So with that method, the outliers will be taken into consideration and will not affect in the same time the other clusters. Okay. So finally, this is one of our back tests that takes into account the outliers and it has, in the same time, low volatility and here are some values also related to fineness. As we can see using this algorithm, we have here the financial creates. So we have done better than the SP500 and also here in December 2018, also the portfolio is better than the portfolio returns are better than the SP500 index. Okay. And this is all despite the bad because in the Christ, you have a bad environment. So despite the bad environment, we have achieved good returns. So why we are simply using unsupervised learning and not more advanced techniques? First of all, we have decision transparency. One of the most important things that one should understand is what the model is trying to do. When you are using another techniques, I think it's very difficult to see what your model is doing and add to this since we are almost start up so when we explain, when we need to explain our algorithm to investors, to etc., to many people, it's very simple to explain our algorithm. Okay. You cannot say to hedge funds, give me one million dollars and I cannot tell you what the algorithm gonna do. Okay. So it's simple and they have a trust in such type of technologies. The second thing is lower risk. In fact, each day when we run a strategy, the strategy will see several days and will start learning from zero. So each day it will choose a huge amount of data and start learning. So here the model has bad experience. Next day it will start from zero. It will not be affected by the previous decisions. Third thing is the greater diversity. So sometimes we run two strategies. Each one will choose stocks for long, stocks for short and which is very good for the market. And finally, because we have simply overcome the crisis and this is what most of hedge funds want to see when you back test a strategy. So thank you for your attention. I will be happy to answer all of your questions if you have.


Yikes, hey, it's me JP. It's time for another episode of John Park's workshop and Lars is over there in the chat Yay What's going on if you're wondering where the chat is? That's where it is go to our discord, which is adafru.it slash discord and head over to the live broadcast chat channel Also, hello everyone over in YouTube. Hey FX music and FL or Fi and Dave Odessa welcome. Thanks for joining in What else have we got going on? What's new? Let's talk about our Jobs board we have a jobs board over at jobs.adafruit.com And if you head on over there you can see such open positions as this right here Pretty near me. This is a company called light gear, which is in Burbank, California, Southern California And they are looking for an engineering Laboratory technician to do things like test new lighting controls or light emitting products assemble lighting prototypes Assist with development of test protocols build maintain troubleshoot and repair electrical instruments or testing equipment And on and on and on really cool I just clicked on their link there and look they do stuff like this big huge lighting solutions. I'm guessing for entertainment, but could be for anything they've got some Serious-looking gear there need oh So, yeah, that's that's just one of the many things you'll see over there at jobs.adafruit.com So head on over there and see if there's a job for you That's jobs.adafruit.com All right, what else have we got going on? Hey, did you know that I have a show on Tuesdays? I do it is called JP's product pick of the week. That's the logo right there and Every week I take a new product and put it through its paces show you how to use it some examples some coding And this week it was this cool resistive touch controller the TSC 2007 Which I like to think is one of the most clear names ever on a chip. It's touch screen controller TSC 2007 I hope it was made in 2007, but I'm not sure about that part But anyway, the product of the week is usually on 50% discount and you can get up to 10 of them So if you have big big plans you can you can Score big during the show. There's no need for a coupon code or anything like that Just put it in your cart and you get it for that reduced price And I like to do a little one-minute recap and this is that It is the TSC 2007 it is a resistive touch screen controller. I have the TSC 2007 it is plugged into a feather RP 2040 that has a OLED and a couple other things connected here a little neokey and here is my screen plugged in So if you look at my screen there with a little bongo cat You can see I've got the X number in the upper left Corner and the Y number in the upper right corner of that display if you look at that number down at the bottom There that will increase and decrease as I push just a little harder on the screen TSC 2007 touch screen controller for resistive touch screens with I squared C over Stem a Qt Hey, how about I bring the microphone back on? Yes. All right, so next up I'd love to go over a cool little tip in the circuit Python parsec So get ready for it here it comes All right, let me get set up here and show you my little tip and trick So First of all, I decided to put that little DVI out thingy to good use and have a bunch of larses spinning there That's a circuit Python in the middle. That's just to entertain myself Is that too distracting? I hope not. Let's leave it up. Okay For the circuit Python parsec today I want to show you how you can use the tile grid sprite sheets in order to advance through frames of an animation or Move an image around the screen so you can see here I have a little sort of stylized version of a cassette tape or real-to-real tape and Every time I press one of the buttons here We get an advancement of these little reels going forward if I tap the other button they go backwards and The way I'm doing that is actually have a single image that has three frames of the animation on it and each time I press a button We're just moving this BMP to a different section of the grid Now these can be big huge sprite sheets like you find in an old video game or in this case Just three frames the way we do this in circuit Python is I am importing the Adafruit image load That's one of the key things here and then when I Bring in this bitmap. I'm bringing in this bitmap with the palette Adafruit image load load that BMP it's called real sheet dot BMP and Then I set up a tile grid so tile grid is display or tile grid The bitmap that we've picked before I set the width to be three since I have three images on this single BMP the height to be one so I can only scan sort of horizontally through an image and then I set the width Dimension so it's 128 pixels for the little window that we want to look into the full image is 384 and then the height is 64 and then in my code every time I press or One of the buttons or the other I'm just Incrementing that value from zero one two and that's just picking a sort of map on that sprite sheet And so you can see as I hit forward I'm kind of going right through the sheet and if I go left I'm going left through the sheet and so that is how you can use a Sprite sheet with tile grid inside of circuit Python and that is your circuit Python parsec Alright well, I hope you enjoyed that and this is partly in preparation for a project that we're going to be working on today Which is going to involve a sort of digital tape loop and so I wanted to start working on some little graphics for that it is the Sort of next project after the walk mellotron Which is using a real cassette player to be able to control the tape speed in order to play it like a mellotron this is on a similar vein which is going to be looping individual tape loops and Sort of mixing together using circuit Python audio mixer, so We'll get to that in a second, but Before I jump into that I wanted to check In on the chat and see what's going on. Okay. We've got a great GIF animation from Our GIF resident GIF animation mastery an ISKU which is some sort of automated tape dispenser looking thing I think I don't know what that is looks like a CG Infinite looping machine kind of kind of thing there. That's what I'm suspecting Duck tape that just rolls itself forever and ever. I like that So By the way, I brought out that I didn't really explain what that gizmo is I can unplug it from here I showed this before this is this really neat What is it called the Dazzler? from Game we know Game we know Dazzler. I think it is the The feather variant on it. So this is a big HDMI serving chip. I said DVI before it's actually HDMI serving chip That handles a lot of the difficult subspecies basically a graphic card for your feather board or other board I've shown this before and Boy, I can't remember much about Yeah, I think it's game we know Dazzler and we had these I think they're out of stock right now Use the Spartan 6 chip But that's what I have running on there and it's good for doing really fast transforms of transparent images, which is what I was doing there also has a couple of inputs for nunchuck accessories we nunchuck accessories and Has a SD card on it, so I could probably do a lot more with it than I'm doing Alright, so I wanted to talk about some digital tape loop stuff. We have been doing cassette things but If I jump over to the workbench here I'm actually gonna move that little Sample player you'll recognize that I'm gonna move that out of the way here for a second and I'll show you something on the fates Board here, so let me give that some power And get that up and running Little camera there, so this gizmo here. I've shown it before I can't remember how much I've explained about it, but this is essentially a clone of the monome Norns and the monome Norns is a little raspberry pi based sound computer It allows you to run scripts to do all kinds of things with sound it can process sounds as well as Create synthesized sounds using super collider and Lua scripts to tell super collider what to do and much more But has a really good DAC paired with some nice interface stuff. It's beautiful OLED screen and This one uses a raspberry pi three or four the real Norns uses a compute module and oh, I just realized I've got the wrong Little upper screen. There we go. That's better So one of the many scripts that you can get on this if you go into the interface here You can scroll around and select different scripts that I have loaded on here It's all open source stuff and one of the ones on here that I really like is called reels and the idea behind reels is that it is a Four track cassette loop How do I pick you there we go? No Are you running already I think it's already running run reels Reels is unhappy with me. Why did I break the demo? Hello That should be going back. I'm gonna reboot you Acting naughty good demo So the idea behind this is that there are four loops that you can load of Audio file wave file into or record into so this has inputs so you can record a instrument into it And then you can manipulate those Real tracks everything from equalization and flutter and adding some little effects to The speed of the playback of the whole reel So it's as if you have a four track cassette and you can slow down and speed up the the four Tracks together you can also do some individual sample rate things So I thought this was pretty inspiring and wanted to see if we could do sort of related Inspired by thing with a circuit Python microcontroller instead of this More advanced device. All right, so let's see. Let's see if I can make you launch. There we go. He launches Okay, so sorry the screen is doing a little bit of a funny thing with my shutter speed up here I don't know if this will change if I adjust No, I don't think that's gonna fix it So what you'll see here is if I Load up some reels on here Let's see. I might yeah if I load a reel. It's a set set of samples that I already put into here Let's play it and I'll turn on a little speaker here So you can see I'm just able to adjust the speed of those Four tracks that are playing together right now and add effects and fun things like that Also, I noticed there's some funny wagon wheeling happening with the display So it looks like those are traveling in the wrong direction sometimes Let's go ahead and hit stop on that so not only was I inspired by the idea of having some looping Audio playing back and possibly manipulating their sample playback rates or other parameters of them But also just love the visualization. So especially this you can see you get that that little Tape head coming in there and pressing against the the reel of tape and the reels going in the proper direction really cool This in fact was inspired by another device, which I don't have but I'll show you a little image of it And this is the OP one From Teenage Engineering and let me grab a browser real quick engineering OP one So the OP one you will see Often it is Here it is on Amazon They're not cheap. Let's see if I can get a big image over there So you can see there is the that was sort of the inspiration that that the more The lower resolution OLED on on the Norns and the fates is based on there's a really high resolution Screen that they have on the OP one and the new version that just came out has an even even higher resolution screen but this notion of having four Tracks to record into is sort of the fundamental thing of working with that particular Device so it's a synthesizer and sequencer, but it allows you to lay down a track Let's say a baseline lay down a set of drums a lead And so on and then you can even bounce multiple tracks down to a single track So it's it's this artificial limitation. It's a digital device. Of course, you don't have to do it that way But it's meant to be a creative Inspiration to have these limitations of it So that right there that that loop led to the the one you see here in reels there it is on a on an actual Norns rather than the fates one that I have and By the way, Monoam also makes a shield for a raspberry pi board that is Slightly simplified as far as UI I think has fewer knobs and buttons, but otherwise it runs the same software And so that's a that's an alternative because this one's a really expensive beautifully made solid chunk of billet aluminum milled out The The shield is much much cheaper So it's a little more approachable and meant meant to be more approachable for like educational settings and so on But a lot of artists like to use them as well so those were the inspirations there and then what I Decided to do actually, let me stay here for a second what it decided to do was take a another look at the breakbeat breadboard So you may remember this project. This is something I did that was based on some cool demos that Todd bot had put up on social media and it is essentially looping a Set of wave files that stay in sync with each other and Then the buttons in this case are just used to adjust the game. So do we hear them or not? Now the demos that maybe I'll play this one. I'd be able to hear it So you can see the idea behind this was to set a bunch of synced Slices from a breakbeat drum loop so that you can kind of go in there and remix it and play the pieces that you want But they're always going to stay in sync with each other because they all start playing at the top of the sketch And then all we're manipulating is game so this this Project I'm doing now is just a slight variation on that where the idea is instead of having a Bunch of different drum parts that can sync together What if we treat it a little more like a mellotron which you'll remember from the walk mellotron project and have Essentially one tape loop that has been recorded it different pitches and Then each of these buttons can play them back So it's a sample player that is playing back samples that are in a scale of some kind could be a chromatic scale could be pick a mode and I Would like to to make it a little bit more of a drone type of experience So something I might work on today that I haven't done yet is have the buttons just be a Toggle that'll set the state of the game so that we hear the that note or that chord playing and then we can add To it and subtract from it to make More ambient drone kinds of things. So that's that's kind of my goal and I'm actually not sure how the tape loop graphic fits into it yet because I don't think we can do variable speed But it's something something maybe we can we can find some sneaky ways around by Adjusting sample rate so that it seems like we're adjusting speed. So I knew I wanted to get the tape loop Into there because I mean come on look at that thing. It's just so cute So add a little OLED with a tape loop and it's going to make it all that much better But let me show you a little demo of this thing in action that has now had the audio samples replaced with Some tape loop style drones So I'm gonna power this off properly this time sleep Hello, this is when the not red light stops blinking connect disconnect from power So there's a LED on there that might not always be green. I guess so it said when the one that isn't red Whoa, okay, you can hear I have a bunch of sort of echo reverb on there So yeah Just leave that on plug this in Okay, so what's happening now in code is? Why does that camera not want to switch? Oh, I have a camera in the way. Sorry go get that out of there So what happens is at the top of code? There are eight samples that can Play together those have all started and they're just running so you can envision Eight wave files that are just playing basically seamlessly Over and over again, so if I hold down one you're gonna hear just that note play It's actually a chord. So I did again this this sort of chord Triton ish thing So I recorded roughly eight seconds So you'll hear that looping Probably won't even hear it loop because it's fairly constant I just have a little noise in there and some flutter on pitch of a couple of the tones and then you can hear I'm providing some some echo from the black box here some reverb Right so there you can hear when I hold down two of them we get some nice interaction between the Tones some little harmonics and beating things because they're a little slightly detuned from from perfect Based on some modulation that I have of the pitch on on the original recordings Super satisfying I really enjoy that you can just kind of zone out and play that and mix that together It's a lot of fun. You can almost Especially with all that reverb. You can't really play a bad note. They all sort of fit together and work together So let's take a look at what that code looks like how that works and then We have time. I'll also show you a little bit about how I set up the To create those sounds because generating those sounds in the first place is Is part of the fun one way that I thought of doing it, but I didn't actually have the time was to just hook up my Walk Melotron that we've been working on and My keyboard and just play and record that directly into here because it's a similar type of type of sound And I get about a little more than an octave there that I can play with so we could record some some nice samples from that That would be great. And that may be what I ultimately do But for expediency, I generated these with a virtual modular synthesizer. So Let's head back over here and we'll take a look at the code. I'm gonna need this.  Yeah, so that's gonna be in there Somehow a screen maybe not that exact killer one, but I like I like exact one But I like the idea of a of an OLED in there One of the things that I Want to do with this is just a simple hardware thing But since I said these are probably gonna be like a latch or a toggle I'm planning to build this with those little lighted Buttons that I asked Lady Aida if she could carry and she found them Let me see if I can find a an image of them They essentially are the the type of buttons that you find on a roll and data weight drum machine and a bunch of other synthesizers Let's see. What did we call these? Well, let me just look up Eight oh eight buttons. That's kind of a way to find them So Chrome capture So it's these types. They have a little step in them and a There's a nice close-up An LED so we'll see when one is latched They are momentary buttons, but by pressing it in software will latch that on light up the buttons You can see which ones are playing which I think would be kind of nice. These are great for sequencers I'm not doing anything that Advanced or ambitious with it, but just to to be able to use those buttons. I think will be really nice aesthetically So that was that was part of the inspiration here and now let's Take a look at Oh My mic pack causing problems. Hmm. Is it is it having a problem with let me try screwing in the I Wonder if I've got a flaky Wiring on this again Tell me how how that sounds. I'll just speak for a moment and see if you can get that Sort of buzzes every now and again. Yeah, that sounds like a faulty wire Could be in need of some Reinforcement when I was playing with the fates it was buzzing, huh? I wonder if I was yeah if I was grounding to Something is it okay now that I'm standing here. I hope so There we go get that out of the way. It's fine now. All right Mysterious, okay, so the Code for this, let me go ahead and open That up I'm gonna plug this in don't save that static bursts once in a while. Hmm. All right. I'll try to stand very still So I've plugged in that KB 2040 there and I'm opening up the code on it. There you go. So Is that the right one? Nope, I have two of these plugged in the man plug one of them. Don't save open cancel that Did I plug it into a? Yeah, I plugged it into a cable. That's not actually Connected to my computer so that would Explain that. Hey, there it is. There's lights and everything. That's quite helpful Okay Let's try this again There we go so What I'm doing on here. It's the same as the breakbeat breadboard from before Same code just changed out the waves for now and then we'll see if we can make these latching or not. So the Wave files that I'm bringing in you can see here the key stuff is that I've got audio core and audio mixer And since this is a RP 2040 based board I'm using PWM IO instead of the analog output But it works works very nicely as well. I'd also forgotten about this Until I was trying to put files on it. There's some Probably I haven't updated the version of circuit Python on the board in a little while and I think some of these things have been fixed but on the Version that I was running one of the earlier 7.1 or something We Sometimes would have little glitches with the USB Systems and audio conflicting with each other making it difficult to drag files onto it without first going to the REPL and Stopping the program running. So that was a whole little dance that I had forgotten about But that's probably why this three-second sleep is here. It's to try to let that USB audio stuff settle before we Start Working with with the program But here you can see I've got these eight files on here I've just named them tape zero one two three four five six seven and I'm setting the mixer volumes at point four I should probably Test this out with all of them playing and see how that gain sounds I can't remember if this thing just Limits it to one or if it can clip but we want to Potentially adjust those based on how many are playing So that we we maintain a consistent volume sort of like a compressor So since we know which ones are actually Being played we could mess around with gain level when we have five of them versus one of them playing the Set up here is the pins that I'm using for these buttons individual GPIO buttons there Let's see Todd says he thinks audio mixer auto gains for you that makes sense because this this didn't sound like it Was jumping around in volume. Thank you Then I have some keyboard setup using keypad There's the audio out is on PWM on D10 and then we set up the mixer. So right now in the mixer you can see Let me make this a little more legible There we go We have the voice count which is however many voices are in that that list So I've got eight voices so the count the length of wave files Sample rate right now set to 22050 that's what I have my wave file set at you could probably go lower if you needed to Right now just looking at this earlier it seems like the Mixer object is where you set your sample rate. So Scott mentioned something about this last night It's gosh, I'll cross there may be a way to change these on an individual Voice basis, which would be great because that's what would kind of give us a speed control on individual Sound files, which would be pretty neat, especially if we added a knob so you could do little Warbly detunings and stuff Channel count is just mono. So I'm just going out one side one one pin 16 bits per sample We set up the Mixer playing so it just runs all those wave files that have been opened Or rather it starts the starts the mixer now we open up all these individual wave files and Here's this function called handle mixer number pressed and this is what currently just changes the level from Zero to whatever the original was so in this case it's this point four and I have that just based on a press right now now we have In the main loop We check all the keypads. This is in the keypad library and then when one of these is pressed We set the mixer To the opposite state, so that's what flips it so off and on when pressed or released so Let me set up a little I won't use the blue box this time. I'll just put it straight into the Little speaker here. It will not sound anywhere as cool Because reverb makes everything a lot cooler but Let's see. Maybe my mic will freak out too now that I'm touching These grounded audio things again. Let's see. Let me know if it's terrible and I'll cut the audio demo So let me turn that up a little bit By the way, I didn't just play them straight through this is this is the eight that I recorded So let's see if I wanted to change these To be a State change. Let's see. What would I do if the event key number is pressed? Right now I'm setting this to true. I guess I could set it to whatever Opposite of what it is, right? What's a good way to do that. Can I ask them what they are? Let's see. How about I'll make a state called mix state Equals false and Let's do Set that to not Mix state and then mix state Equals not mix state. Will that work? I don't think I need this All right Oh, sorry.  It's got a typo. Yeah, okay, so now this acts like a toggle Question over in YouTube is what thank you Andy Andy said I missed the underscore the question on YouTube is what? microcontroller unit is that this is the KB2040 the keyboard so this is a pro micro sized and pinout board that we made originally for Using in mechanical keyboard projects, but I just happen to use it for this one. It's nice. It's got usb-c It's got a bunch of GPIO it has a little stomach qt connector and it's an rp2040 so Kind of a neat choice for this You can see why having the lights is gonna matter because I don't know which ones are lit And you can see my code has problems so I'm having to kind of double-click everything to flip that state enough times so ignore that like actual code there, but it's it's just the idea of Setting these up so that they have a little toggle Without needing a mechanical toggle switch, which I think is is nicer less prone to failures just using a little momentary switch so Let's now I think we can dive a little bit into the generation of those tones just because I think this is kind of interesting Unfortunately, I didn't save the file that I used somewhere That I can get it right now. I don't think yeah, so we'll recreate it, but that's okay So I'm gonna open up VC VRac, which is what I used for this and let's Create a little Screen capture of that if you'll bear with me Dexter totally if only those led if we had buttons with LEDs be perfect All right, so let's grab the Rack window I'll scale that down a bit This actually this the setup. This is at right now is what I used originally to record a sine tone just a single Root pitch tritone to the tape I Can plug that actually into so that's what I recorded originally to my cassette to do the walk mellotron stuff and What I'm doing really I didn't end up using any sequencing on that. So really all that matters is I have these three sine wave Generators and I've used a quantizer to pitch those to three tones that I wanted and output that Through a little mixer and recorded it digitally so That's Really similar to this and then I guess I can work from this and then the Main adjustment I made is to add a little Way to change the sort of root note of the the chord together. So What did I use for that MIDI? To CV and For simplicity I just used my computer keyboard as a MIDI controller and Let's Let's see Sure, okay, I can go through this little mixer. I think let me Have three little mixers there That I can change that root with Turn the volume up a little So that's the the the basic idea. I just have my Computer keyboard acting as a MIDI keyboard to send it notes another actually nice way to do this is With this little 12 key, so here's a module that just looks like a keyboard and That's that's actually what I used so let's I'm gonna simplify this for a second and just have one of the tones playing so let's Give that Output from here.  So I don't have to keep Scrolling around quite so much. Okay, so that's the Input to these so I just hit record moved up to the next one Picked whatever my eight notes are gonna be that way But in this case, I'm just showing it feeding into One sine wave and I just fed it into three that were tuned into the to the intervals that I wanted and then I added a little bit of Modulation some very slight random modulation to because I actually used a different sine module that had a FM frequency modulation on top of the bass note So that just allowed it to warble a little bit and then also mixed in some noise so You can see I'm a big fan of VCV rack because you can kind of patch together the thing that you want you can kind of automate things so it's possible to send a Message to the little recording module to start recording when you press a button and stop recording when you release or some other event happens through some gating So you can even set up a sequencer and just do it for you in every eight seconds It'll move to the next one if you want So a lot of fun sort of logic programming that you can do by patching together modules Not just for creating sound but for sort of building the the little program that you want to happen So that That's how I got the the eight sounds in there if we Look back at the code here you can see we've got These eight waves right here and Since I recorded those accidentally as stereo and 44k and I wanted to get them down to mono and 22k sample rate I started going into I use Adobe audition as a as a wave editor similar to Audacity which is free But that's a pain when you're doing it eight times and then I remembered Todd bot has a tip and trick about using a command line program Called socks to do similar stuff and you could even put a shell around that and batch it up and do a whole bunch of Conversions of audio files, so that's what I did after after the first one I said this is for the birds doing it in a gooey and then I went over to Socks in the command line so if Todd's around he can probably throw that Throw that tip up there. I had a little note. I made of it But he actually has it up on his tips and tricks github which is great. So thanks Todd for that So let's see questions. Let me know if you've got questions. I'll check out the the chat And also any suggestions or ideas on on this the Tape loop thing how I'm going to integrate that any thoughts. Let me know that would be cool Let's see. I think Someone said they were thinking of building when his dexter says now I got to build one of these looper devices It's a lot of fun. Of course, it doesn't have to be just pitched Sign wave things like this you can do all kinds of different loops But those sound particularly nice at running at the different speeds on the different notes. I think Let's see What else? questions or thoughts FX musics finds toggle switches very satisfying. Oh, yeah, you know what I when I was digging around back here This is where I happened to have put This is another option I Built this little toggle board What has eight? Yeah, it says eight. So I could could make this the interface. This is going into a little Cutie pie here. I can't remember what I was doing with this other than other than the LEDs and And switches, but this is kind of overkill because we get LEDs and the toggle position But but fun anyway, so that might be might be a way for me to Test this out as well, but I think I'm going to use those little 808 style buttons Let me know if you have a better name for those. I can never remember Let's see Yeah, question here FX music says this tape loop into clouds could be nice clouds is a is a module from mutable instruments that is great for Making beautiful soundscapey granular reverby things Absolutely Rich asks is circuit python the right language for an audio app? Subjective, I know and Todd said he would use Arduino. I think you were answering that question It is much more efficient for audio stuffs. Yeah, so like synthesis I don't think you'd want to try to do synthesis and effects in circuit python the teensy audio library is Great for that kind of stuff also Mosey Are a couple of audio libraries for Arduino that make audio high-quality audio much more attainable But this kind of wave playback is great in the audio mixer inside of circuit python, so it depends on what you're trying to do I Have a project I've done a couple with a trellis m4 that used the audio Library from teensy because we ported that to the m4 the only one we've poured it to so either you're gonna use that on teensy 3 or 4 or an m4 based Chip if you're gonna use the teensy audio library, but it's great a lot of DIY synths really nice DIY synths are made using the teensy audio library and Thanks Todd put up your he put up his link for the preparing audio files using socks excellent and I think that's it. All right. Well, thanks everyone for stopping by. Thanks for your Your participation in the chat and also for letting me know when my microphone was going crazy. Sorry about that. I Just finished by the way, let me let me jump over to the back to the learn guides here if you Check out this is the latest learn guide. So this is the one I was working on a couple weeks back It is good to go now. It's working better than I had hoped in fact the interactive MIDI Exchange of LED information with the GUI is working perfectly now. I'm not sure why at one point It was taking double clicks once you adjusted things over on the computer Now it works flawlessly and and that's that's great I may have just been a simplification of my patch that I was using in VCV rack, but now we get I'll turn audio off on this, but now you'll see in this video as I press the Buttons on the Neo trellis we get the trigger sequencer lighting up over there in VCV rack and then in a second here I'll go and use my mouse right now I'm using the mouse to adjust all those LEDs and they are in sync just like that on the trellis and no funny business with double-clicking so Yay for that. So go check that out. Also. I was just chatting with FX music over in our chat about Making a version of this that runs on the trellis M4 the trellis M4, which is the integrated one with the 8 by 4 pads and so he's he's taking a crack at it. It looks good. There's just some questions about mapping So I might might put a follow-up one in there Also, I just tested yesterday the new neo trellis library That is in PR from C Grover that adds a brightness Adjustment you couldn't do that with multi trellis before for for various reasons so Or not easily so now we'll be able to set like fully saturated fully bright colors Which is easier to say red is going to be ff 0000 and then tune the brightness Using using this new library. So thank you so much C Grover for that once that is merged into The main branch there. I will update the code to use that All right, well, thanks everyone that's gonna be it I will be working on the walk mellotron project and get a guide out for that and then Be diving more into this digital looper. We'll see more about that probably next week For a different industry. I'm John Park. This has been John Park's workshop. Bye. Bye