OK Thanks so much as no matter what he said the title of my talk is called audio signal processing with the web or U.P.I. that's kind of the clunky academical title it's about what else can we do with supporting something different which is not actually all you and if you follow want to follow along what took. Cosas lights on your own you can find them on that link. And. That's a little bit of information about myself when I was because of quote Undine I'm basing Golan I'm self-employed and your coding sets my own little one man company and I develop something called Chelsea makes it's a present based teaching mixer. And for that teaching mix I wanted to have an audio fingerprinting system because there was none in javascript I had to put my own and I ported a fingerprint system from Piscean which was then the reason why is what about known or he was sick and possessing and. Because of my own usual last name I can use it almost everywhere as a username so you can find me as could go down the known as like channel and get up in PM And while almost all others social networks out there OK that's is the agenda that's what I want to talk about it's what you finish printing in general and then with a lot of print and then the actual. The main part of my talking on all your second processing and I have to bonus tracks what I think I won't have time to go into that in detail and fingerprinting I think you all know what it is it's the process of at reading the unique value or some unique values of an audio signal which can then be later used to match or use signals with other or using those. In a database. Most popular vacation which is doing that might be sure Sam but there are of course open source implementations like because you could do all of print I could print pinnacle and I guess there will be others but I don't know of them and they all have their advantages at want to shit and disadvantages and the end of the day I had to choose one and I was going to sort of print. Out of Print is a landmark based fingerprinting service fingerprinting system which means it. Analyzes the frequencies. And looks in each frequency pin it looks for peace once it finds one of those peaks it compares it to its neighbors and then it stores the difference of those peaks and one of the huge loss for me was that it's used by the Internet Archive which is one of the audio sources from a teacher mixes of I haven't don't have to analyze the files from the Internet Archive again you can just use the pix which they've already analyzed and it's open source in Python which unfortunately I can't use on the web but it's a language which I can understand so it was easier for me to port it and yeah that was kind of the thing which I wanted to do a part of it. Mostly line by line and at the end I had to work in version but it was very very slow it was even slower than the actual audio so if I wanted to analyze a piece ten seconds of music it took eleven seconds to analyze it so it was not the result I wanted to have and so I. Came up with a very simplified. Version of the algorithm which ought of printers using and when I was looking at that to me that looked like all your tasks even though after you are applying the F.F.T.. You are not in the ordered world anymore and you are left alone with think knows what the tie scsi has to do with the signals more or less on. Tars and so my goal was to move as much of the computation as I could into an offline audio context and see how that goes and that's now the main part of my talk and I want to start by the first task it was downsampling and this can be done very easily was to wear body appealing as might all or no but there's a big tradeoff because. The algorithm for downsampling is not really specified by the A.P.I. And so you'd probably going to have specified has implemented its own risen so you. End up was slightly different versions if you use down something with a bit more U.P.I. which then produce likely different fingerprints if you can live with that you can use something which looks like that you are creating and also not a context the only number the only paramita that matters is the frequency separate and then you just decode your only buffer was that already context and you get in every buffer at the sample rate down mixing works very well and it's specified in the A.P.I. and it's. Implemented the same in each browsers so you can safely use it it's a bit more complicated it looks like that you create enough unordered context and then the important part is that you specify the number of channels it would have to already Buffalo as the number of samples and of course the separate again you have to create a buffer source node assign your buffer to the bottom of the buffer source node connected start it start rendering and then you get a promise which we solved to the next audio buffer but there's a backing from for example you have to use already buffer which is already at the decided sample rate you can't use. A buffer which has a different sample rate which would be downsampled but it doesn't work in grown right now. Applying the F.F.T. was the next task and this is very set it does not work a lot of people tried it and you can search and stack overflow. For that. Many many threads about it and the short answer is it just doesn't work because the analyze know to sign for real time and it will give you the result of whatever Buffet has currently has and then you often or your contacts you have no way to control which whether it's company has so you can do something like that it looks. OK but it just won't work so forget it. But playing the F.F.T.. Was still an important part in my code and I used an F.F.T. library at the beginning which was which was very slow and I came across the bit or your fifty performance test but. It's kind of compares different F.F.T. libraries and you can see their performance under different circumstances and for me that increased my performance by four hundred percent so that made me very happy and yet the next task among this was to find the maximum in the sick no finding the maximum is not really all you taught so there's no or do you know what we can do that natively but there's descriptors as a nodes and I thought I could do it with the script was as a note but after some testing and. Errors I came across a back which exists in Chrome Opera and Safari which means that all you want all your process event is not called on every buffer so if you or the Nordic contacts gets large enough you can almost be sure that there will be missing process events so unfortunately you can't use it. Applying a gate I thought that's a task for the dynamics compressor node but it's not supported yet there's a threat going on in the specification if it could be used for gate two but right now you can only use it for compressing not as an expanded and so I thought I could use the script was a note again but. As I already said on or due process is not called in every. Event and even worse descriptors as I know doesn't have any output in all browsers which very surprised me but yes you can use it. The last thing is good news the infinite impulse response filter is finally implemented in Chrome and opera and it works very well. For me in my test test against my stupid code it was ten times faster so it was very words to use it but unfortunately you can't reliably reimplement it because of the broken script process and I would so you have to use it if it's there and implement something totally different if you want to have a solution which works on all browsers. So with that that's already my conclusion these are the good parts in my opinion so if you can use the bit or U.P.I. for computations of arbitrary signals you have a good chance of. Resulting in a faster processing time because it's implemented natively and. Therefore it should run faster and of course it's already implemented so you don't have to do it on your own that saves you some time and once already work its will be there which I don't know what will happen anywhere anytime soon or the scripts as in those problems are solved because we don't need it anymore and even better if suspend remove suspend resume will get implemented in all browsers you can use often already context kind of like a stream when you. Get Data in chunks you can process it as a drive to spend the context wait for the next chunk of data processing it as planned and so on and so on and something which would surprise me is that the web or U.P.I. can happily handle very large numbers because I think it's just a float. Close definition which is the reason for that and so the should be capable of for many many different types of signals. You know those are the not a good parts. Can say this program because of descriptors as annoyed. As it is already deprecated I don't think that it will get fixed any more so there's no way to reliably polyphase an audio workload because the script was a No it doesn't work well that's very bad and no work or support you can't use off an already context in a replica which is country which is normally no problem but if you have to implement own solutions for you know which notes which are not SEO yet you have to shuffle your data back and forth between the worker and the mains for that which is not so nice to do. I don't know how much time do I have left one woman it's OK so I can just briefly mention the bonus tracks. Or you see able to access the process project by sub stuck which is mainly known for building browser if I and he used to read or U.P.I. to output serial data as He created or your data which then was sent to the device and the device into private data as the real data and another project called Doppler but as far as I know he used A.P.I. to send out high frequencies and then you could analyze the movement of the device by that. Yeah at the end I felt most of the felt almost like that if I don't know if you know that it's a lot instrument I guess and it says two men with a hammer everything looks like a nail and for me that would. Say to a developer with her body VI F. ing looks like an all you crafts I don't know if that was the right. Direction which I took. Was very interesting journey. That is like you. Thank you. Thank you I have cheap comments and one is heck of a tutorial I'd love to have a copy of that. And then write in it the second one is almost on your last slide you said that you can detect motion by. Using ultra ultra high frequency yes but motion. Motion of the device so this is not a project of mine so this is the disclaimer but it works by sending out high frequencies and if you move the device the response so used a microphone to record the response and if you move to device in response to change and somehow magically You can of iced the movement of the device. It works I don't know what it was. Which is already a person with a word which is audio processing but it works. Nothing bad about this no more questions I can yeah I was asked to bring up the link for the selection we have a selection of. About you croup I don't know how to say that and if you want to join selection you can go to that link and have a chat with us. Nothing bad to go early to the demo sessions thank you very much. Thank you.