Hello and welcome to the International Daily, round up by People's Dispatch, where we bring you some of the major news developments from across the world. Our headlines. COVID-19 Infection Spike as Government's East Counter-Pandemic Restrictions. Donald Trump plans to designate antifa as terrorists, protests intensify across the US. Over nearly 100 US settlers invade Al-Aqsa Mosque with police cover. Over 80 migrants have died in Indian trains while being transported back home, says report. We begin with an update on the COVID-19 pandemic. The total number of cases reported so far stands close to 6.3 million worldwide. The United States alone has over 1.8 million cases, while Brazil has crossed the half a million mark over the weekend. Fatalities currently stand at over 374,000 cases as of today afternoon. Despite the growing number, several countries are easing counter-pandemic restrictions or are in the process of doing so. India, which recently became the country with the highest number of infections in Asia, is set to gradually lift its country-wide lockdown in a few days. India saw the highest increase in new cases on May 31, with over 8,400 reported and single day. Its neighbor Bangladesh also saw its biggest single day increase as it opened up its economy after nearly two months. Bangladesh is reported close to 50,000 cases so far. As the Bangladeshi authorities announced the reopening of offices and transport service after two months of lockdown, the country registered over 2,500 new cases yesterday. On the same day, it also reported the highest number of deaths in a single day, which is around 40. Nevertheless, the country has also increased its testing numbers, bringing it close to 12,000 a day. The opening of the economy and normalizing of activities have raised the concern that the outbreak may get worse in the coming days in these countries. Public health experts have repeatedly raised concerns about resuming public movement. Similar spikes in daily infections were witnessed in different parts of the world. South Korea's reopening, for instance, has led to the biggest spike in over two months. On May 31, US President Donald Trump declared over social media that his administration plans to declare Antifa as a terrorist organization. It is still unclear how the move is to be enacted. Trump's tweet comes at a time when the US has been swept by protests against the police killings after the murder of George Floyd on May 25. Politicians and senior officials have been repeatedly blaming Antifa and so-called outside agitators for the protests. This includes officials from the Trump administration like US Attorney General William Barr and Democrats like the head of Minnesota's Department of Public Safety, John Harrington. Many of these serious concerns about the implications of labeling Antifa as a terrorist. While the US Patriot Act of 2001 allows for designating certain organizations as terrorists, there is no precedent in the US of designating a domestic organization such. Short for the anti-fascist movement, Antifa is a grassroots movement that has come up in response to the growth of the far-right in the US. Inspired by the Antifa protests in Germany and other parts of Europe, the movement has no organizational structure in place. Groups like the American Civil Liberties Union have also raised concerns about designating a movement like this as a terrorist and its implications on civil liberties. Many have also questioned if the move is an attempt to silence dissent in general. In the meanwhile, protests have intensified across the US and have brought around 30 major cities to stand still. 26 state governors have called in the National Guard, which is a reserve force, in order to suppress these protests. In the capital city of Washington DC, protesters have surrounded the presidential residents of the White House. There have been reports of clashes with the police trying to suppress the protesters. Reports have said that the president was moved to an underground bunker by secret service agents. Police repression against the protesters has only gotten more brutal. According to reports, an estimated 4,000 people have been arrested across the US. However, protesters have also received support from across the world, from progressive and anti-fascist groups. Solidarity protests were held in different parts of the world including London, Tehran, Canada and more. In our infocus section, we bring you an interview with Claudia de la Cruz of the People's Forum in New York about the protests that are happening right now. Hello and welcome to People's Dispatch. Protests and demonstrations have broken out across the United States, following the murder of George Floyd on May 25th. George Floyd was killed by police officers, with one of them actually placing his knee on his neck for nearly 9 minutes. In the aftermath, these protests have demanded justice, they have demanded systemic change, they have demanded an end to police racism. To talk more about this, we have with us Claudia de la Cruz of the Popular Education Project and the People's Forum in New York. Thank you so much Claudia for talking to us. And thank you so much Prasad and the People's Dispatch for inviting me. So to begin with, one of the key things many people are mentioning on the streets as well as people who have been raising these issues and movements for a long time is the fact that this is definitely not just one isolated incident. This is not a case of a couple of, I think you yourself have mentioned, this is not a case of a couple of rotten apples in a police force in one city in the country. This is really a systemic issue. There have been a number of such murders, such executions in the past and the trend nonetheless keeps continuing. And there have been a number of movements also, people in power have expressed words of sympathy, they've made calls of vague slogans for change but nothing has happened. So could you talk a bit about the systemic factors and how they play into this, especially when it comes to law enforcement? I mean, I think it's important to understand and you bring up the point of it being systemic. I mean, historically, when we think about surveillance, when we think about policing and militarization, we're thinking about what's at the core and at the roots of the development of the United States of America. To think about it as an individual case is a complete loss, not only for our movements but in general for our people. It creates disadvantage in us understanding how evil, how brutal, how demonic the system can be to protect capital and protect property and protect the elite. Historically we've seen the murder of black and brown bodies of poor people, including poor whites throughout the years and state sanctioned violence. It's important to understand that this is as American as apple pie. It continues to happen. I think the difference now is that it is something that's being documented and is something that is being put out for the world to see. And this particular case of George Floyd brought up a lot of indignation. Because he's not the first one to have been killed in the middle of a pandemic. He's one of many folks who have been killed, some of which we know and some of which we don't know. Not only by police, but also by vigilantes that have been in many ways supported by the state that have been given a slap in the wrist. And very, very soft measures, if anything, have been taken to pacify the people. And the people are fed up, even the judgment of how people choose to express and rebel themselves.  And says, I'm going to send the National Guard to take care of this in the right way. Like you see that, why supremacist, classist way of approaching people's pain and people's mourning. There's more concern for the burning of buildings and the killing of people. And so it's clear that the people of the United States, the people that are in the streets, that are making the streets burn right now, are fed up, and that they understand that it's not a matter of the nine minutes that it took for that cop for Shavin to put his knee on George Floyd's neck. It's beyond that. It's beyond those nine minutes. It's the 400 years plus of this type of state-sanctioned violence. On May 31, dozens of ultra-Zionist Israeli settlers invaded the al-Aqsa mosque compound in occupied Jerusalem with the protection of the Israeli police. This was within hours of the mosque opening after a 70-day lockdown just before Muslim worshipers could enter to offer prayers. The director of the al-Aqsa mosque, Omar Kiswani, told reporters that some 105 settlers entered the compound along with several police officers who not only protected the settlers but also arrested three young Palestinians. The al-Aqsa mosque in occupied Jerusalem was closed due to the COVID-19 threat for the past 70 days. It was reported that the worshipers were entering the compound on Sunday with celebratory chants but were met with police brutality. Last week, Israeli forces raided the home of the president to the Supreme Islamic Council and cleric of the al-Aqsa mosque, Sheikh Akrima Sabri, and arrested him. He has been accused of encouraging Palestinian citizens to pray in the mosque while it was closed. On the other hand, all the cleric had done was to call our fellow Palestinians to prepare themselves to defend al-Aqsa in the coming days. Israeli extremist settlers claim that the site of the al-Aqsa Mount is actually the site of the Jewish temple and they call it the Temple Mount. Some sections have even advocated destruction of the mosque and demanded that a Jewish temple be built in its place. And finally, at least 80 migrant workers in India have died in special trains for stranded workers between May 9th and May 27th, says the report. The special trains were scheduled to transport them back to the native towns and villages from the cities in which they had been stranded during the lockdown. These numbers were reported on Saturday, May 30th by the newspaper The Hindustan Times, which has reportedly accessed it from the railway protection force. Quoting one of its officials anonymously, the report further clarified that this is an initial list and the final list will soon be issued after coordinating with the states. Also, data has not yet been made available about the reasons for the deaths, as well as the deaths that would have occurred in the first eight days since May 1st when this service began. The service began following a massive public outcry about the plight of the workers under the lockdown. The railway ministry maintains that in most cases pre-existing medical ailments were the reason behind the deaths. However, numerous reports quoting the family members of the victims who were on the train have pointed to the shortage of food and water as possible reasons. That's all we have in this episode of the International Daily Roundup. To know more about these stories, visit our website peoplesdispatch.org and follow us on Facebook, Twitter and Instagram. Thanks for watching.


Unreal. In response to a question about buying a Kamala Harris jumping in the gun and declaring Jesse Smollett the victim of a hate crime, Jen Psaki does what we all expect from her. Blames Trump. Real quick one on the Jesse Smollett verdict. Both the president and vice president tweeted at the time of that attack. The president tweeted, what happened to Jesse Smollett must never be tolerated in this country. We're with you, Jesse. The vice president called it an attempted modern day lynching. Since the guilty verdict. Are there any lessons learned here on rushing to judgment when a crime is alleged? I think there are there are lessons learned perhaps for everybody who commented at the time, including former president Trump. I wish April Ryan was here because I think she asked him the question. Do I see her somewhere? No. Okay. She just left where he said, I can tell you that it's horrible. It's doesn't get worse in response to her question about the trial about the about Jesse Smollett at the time.


He didn't make muffin this one, did he?  I was like Uhhh Got em! Big bass! I think it's crappy I've ever talked! Look at that toe That was awesome! I'd take it right now, you know what direction he's going bud Take it Anything? I'm up, no way You just lost him? Are you kidding me? No way No way Matt was f***ing, he thought it was gone and it was coming to him No, he didn't get it, he lost it on the hook set Are you f***ing serious? Do you feel good? Yeah Hey, reboot, hey this is reboot way Rookie!  It's all a crab shoot It's like scratching a lottery ticket Every time this goes up, it could be a 20 pounder It could be a 10 pounder It could be a hammer handle 50 I get fooled a lot on the hammer handle 5 pounders Because they get there and they're furt rolling Like, oh boy, it's gonna be a good one Then you hit it Like, ah, never mind This is what we call McMuffin Redemption Michael McMuffin Redemption Hey We're all number one Between the lines, buddy Exactly Between the lines This is the redemption fish You suck, McMuffin There it goes, there it goes There it goes, there it goes He was chillin' He was chillin' Okay He's got it Yep Good one Walk us through it, man, walk us through it Hammer handle Hey, that's a McMuffin fish right there Put your hand back on Is that your PB? Yeah, that's his PB No Not even close What'd you do? Check him out? Dude, I just dropped my thing all the way down to the bottom I'm like, I'm gonna drop it all the way to the bottom As soon as I put it down to the bottom I'm like, I know it's dead And all of a sudden it just took right off I'm like, oh, you got a kidney It's rollin' again No, it's power plant It's power at CMP It's definitely creating power He's goin' that way That way? I got him an 18 and a half pounds I got him that Are you nervous? I wouldn't take it That's just me, how big was this bait?  You want to take it or what? Man, it's your decision, but She's still runnin' steadily That's gonna be a pain One, two, three, not takin' the flag Cause I already see how much line I'd be reelin' in I'm videoin', so I don't believe one guy You guys are dirtballs Should I take it? You know what direction it's going in You know that it's stopped anyway Oh, no, not mine, he's rollin' You know that there's tension on the line He's rollin' You want to take him?   Nothing helps you run Ooh, he said I will He said ooh Ooh does not mean f***in' anything to me I'm gonna be at the hole with him Just helpin' him Okay Cause you're gonna need that He said ooh Gettin' close?  Yeah Yeah The thing is, you keep him away from that edge Is he burned in? You got a ball right here too That definitely could be That fish in that tree We'll see We've got another line hooked up to him He's big I think he just got to the little bell Oh yeah You want to take a breather?   He's at least 10 Look at this, look at this spaghetti And that's after Dan wound up a couple hundred yards All right, you want to grab this Or somebody, you grab this so he can video And we'll get measurements Yeah Fattest Oh, he actually doesn't have anything in there That's what I'm saying Yeah And he's still over 70 17 and a half Nice At the fattest Let me go down a little lower just to make sure it's fattest No, 18 18 18 18 around, what do you have for a length?  Yeah That's his first monster That's my first monster, bro Monster, awesome Oh yeah What do you think? How do you do? Well, he didn't muff it So he's been promoted from Michael McMuffin to Michael Pike Liskum Michael Pike Michael Pike Mike Pike Mike Pike Mike Pike Liskum He muffed one not too long ago and he got his revenge today So almost in the exact same spot Yeah, it literally Maybe 10-yard difference That's your redemption pike That's my redemption pike


These are some soccer drills for kids Let's do some soccer drills for kids Do not start with fancy skills like that if you don't know about me I used to be a huge underachiever, but through obsessive self-improvement I found my success earned a college scholarship played for my national futsal team a YouTube channel with over 100 million views I've helped players worldwide, and I'd love to help you improve faster and achieve more because Kids get caught up in things that don't really matter When you get your basics down then you can do Cool tricks like that, but in this video. I want to talk about Some soccer drills for kids, but anyone who wants to improve their skills beginners And also I want to talk from the perspective of a parent or a coach trying to help your kid improve so First of all Footwork stuff that you've seen a hundred times. Yes little ones when you're five years old three years old taps they're doing these little ball things Okay, these are silly, but it's just building a comfort with the ball different touches in different ways when you get that foundation then It's moving so moving forward Moving backwards and I'm going to guess there's a lot of players who consider themselves advanced They cannot manipulate the ball With these basic skills so forward these roles Just getting your kid comfortable with the ball Moving in different ways now when you're a parent or a coach Especially with the young kids Do not over coach let them figure it out themselves. Give them a drill give them the guidance But if you're trying to get a what's up I hope you're finding this content helpful Watch this all the way to the end if you want to find out which subscriber got this video's special shout out them a tip Every second time they touch the ball or every 20 seconds It's too much information. They are smart enough to figure it out on their own, but you have to give them the chance So start with those footwork drills, okay Then encouraging Basic dribbling running with the ball most kids when they start It's awkward to run with the ball Just encourage them to run in a straight line With the ball become natural with this Okay, so head is up It's nice natural stride Arms are moving it's flowing It's not awkward It's in my natural strides with the outside of my foot when I want to turn inside outside. I would start inside outside and Roll back like that when they get comfortable you can go Croy and Focusing on like I always say quality of the touch but also quality of the movement Getting low to the ground when you turn From a young age and if you notice always using both feet So I would start there if you want to use cones cones can be good My only problem with cones is it's not always match realistic. However When we're talking about young kids We just want to get them comfortable in the ball lots of touches the way to improve is through repetitions We all want to get better But if we analyze how much we're actually practicing and how much time we're actually spending on the ball how many touches You're actually getting on the ball The reason I have a decent touch is not because I was naturally given that skill It's because I've spent tens of thousands maybe hundreds of thousands of hours on the ball has a young kid to now and still improving every day Okay, so first one Just these little touches let them go in and out of the cones with as many touches as they want Next I would do like an inside tap Something like that Okay, learning to manipulate the ball moving with the ball because in a game Yes, these are good But I don't receive the ball and do this on the spot if I do that. I'm gonna get tackled. I'm gonna get it in trouble So encouraging them to use different skills, but moving with the ball when They start to get a little bit of success add the speed Okay, when you're training whether your kid parent coach and encouraging your kid to train If they're going nice and easy because they don't want to screw up That is not going to make them better It's gonna give them a little bit of confidence in practice But when they get in the field and there's pressure and you have to play faster They're not going to be ready. So training by yourself or training your kid encourage them to go fast pick up the speed and Make mistakes just like this because if I'm not making mistakes. I'm not learning if I'm if it's always easy Matches are going to be hard, but if my training is hard. I'm making mistakes Because I'm pushing the speed I'm getting tired. I'm learning to play with heavy legs My practice is hard the game is going to be easier Okay, so those are some things that I would recommend for young kids soccer drills for kids to get started as far as footwork and ball mastery Bit of dribbling Next you can do some ball control And I talked about this in different videos But for a young kid, this is probably where it is kick and catch Okay, kick Back to me you can start with a bounce catch catch getting good backspin on the ball Keeping it to you trying to replicate the same touch doesn't go somewhere else every every other time Okay, backspin on the ball. So I'm hitting here Forcing the ball to come back to me so I can keep control of it if that's easy start like this kick bounce Okay, just keep control of that ball wherever it goes Move your feet a lot of kids they have a decent touch But when you watch them juggle so flat-footed so as soon as the ball gets away, it's gone They're not even trying to get there you will get there more times than you believe if You just have a little more sharpness in your toes if that ball goes I'm quick to get under it Okay, if it goes don't give up on it. Go and get it right away so kick and catch Little curl or a little bounce in between something like that Then as I always say encourage to do basic juggling set your record if the record today is five That's fine. That's where you start tomorrow. You try to make it six Next you could do air controls Which we've all seen before okay If the if your child if the kid is struggling to Kick the ball up with their hands start here Or start kick the ball up with their feet Start with the hands, but receiving in different ways. Okay, so inside the foot Outside of the foot anything you want But controlling out of the air and controlling With different parts of the body when you're doing this the objective is To bring that ball down to the ground as quickly as possible. You'll see the difference here a Lot of kids. This is their first touch They're going through the ball rather than Bringing the ball down to the ground. So think about Getting the ball down to the ground as quickly as possible so you can play Faster have a good speed of play you have watched some of my videos You've seen me here before and especially for young kids. I think this is one of the best places you can be It's with a ball and a wall getting more repetitions remember I said The way you want to improve your skills faster is more repetitions Everyone thinks that they're doing enough or they're getting enough touches on the ball when really they're not so if I'm practicing Shooting by myself in a field. I'm getting one shot in the time that I could get 20 shots. Okay, so especially as a young kid It's all about repetitions the more repetitions you get into each foot The more confident they will become so let's sit talk about passing They can just do basic passing on a wall for a young kid. It's probably too touch to start really short distance to touch Focusing on good contact good first touch get it out of your feet and What am I always doing? I'm playing with both feet all the time if you're a parent Encourage your child to play with both feet from the very beginning It's okay if they have one foot that's better or one that they favor and they use it more in a match But when they're training by themselves Really encourage one with the right one with the left. Okay, so super basic Hey, those touches receiving in different ways. I have other passing tutorials if you want to see but really short distance on The toes good quality pass body over the ball fall through to the contact fall through to the target flex foot light on the toes both feet Okay, next Practice shooting against a wall Good contact with the laces. It's probably where you want to start Okay, again both feet. It's not about power. All this is is about Getting good flush contact Off the laces. I'm just trying to make good contact With the laces because a lot of kids will struggle. They'll either hit it on the inside of the foot Or they'll hit it on the outside especially on the weaker foot. It feels awkward. They twist it try to get really good straight flex contact Through the ball. It can just start like that Okay touch just push through the ball push through the center of the ball make it go forward flex contact With both feet now as I said Give them a few tips, especially if you're a coach with young players or a parent trying to help your child improve Give them a few tips.  They will figure it out as a player You need to be smart enough To not do the same thing a hundred times in a row if you keep pulling that ball to the left Don't allow yourself to do that anymore. Ask. Why is the ball always going over there? What do I need to change about my technique if you have that mindset every time you practice it improves so much faster because so many players Yes, they're putting in the time but what they're getting out of that practice time is not good enough because They may be getting repetitions But they're not analyzing those repetitions don't practice just to practice practice with the intention of getting better and in order to do that I Have to actually think about what I'm doing. I have to analyze. Why did it go there? Why was it a good pass? Why was it a good shot? Why was it a bad shot? Take that information learn from your mistakes. Remember if you're making mistakes, that's a good thing.  I'm just gonna get a little bit better What can I do to make that happen? Focus on finding the solution not complaining about the problem You will improve a lot faster These are some soccer drills for kids This is the featured subscriber for this video if you'd like to be featured in future videos Hit that like button drop a comment below and let me know how my videos have helped you improve and achieve more in this sport If you like this content check out the soccer success planner you can download it for free There's a link in the description below and for advanced training check out the online soccer Academy


You need a financial advisor with the freedom to focus on your specific needs. Whatever your goals, Reed Potter can create a game plan tailored to you. Call Reed at 432-0777 at Pikeville, Kentucky to learn more. Artist Collaborative Theatre will be holding their production of Mary Shelley's Frankenstein at Pikeville High School starting on October 6th. What's interesting about Frankenstein is it's a romantic novel at its core. The novel served as sort of a bridge between the Gothic movement and the romantic movement in literature. And romanticism was defined by big emotions. It's a bit of a bleak show, if I do say so myself. A lot of dark themes and a lot of big expressions of emotion. A lot of hard work has gone into creating a faithful adaptation of Shelley's famous novel. Others have put a lot of hard work into portraying the characters from the story accurately. You know, at our roots, we're a community theater.  And what we believe in is putting our roots down in the community, doing work with, you know, local kids free of charge and providing this resource in a way that, you know, is difficult for low-income children to have access to the performing arts. Artist Collaborative Theater's production of Frankenstein will contain gore and flashing lights that may not be suitable for all audiences. For more information, you can visit the Artist Collaborative Theater Facebook page. For Mountain Top News, I'm Kelsey Dean.


Thank you. Hello, hello everyone. First, welcome. I want to thank the organization of Future.js for getting this going, which is awesome. I'm going to be talking about Web Audio, the Web Audio API. This is an example of a 3JS interactive rendering using Web Audio. I'm going to explain how can you get all the nodes and all the functions that the Web Audio API provides to create something like this, which is several specialization components and creating sequences of sound effects that you can trigger and schedule and covering most of the bases of Web Audio API. So, I'm going to be using slides.com. It's the first time I've used it, so I have no idea if this is actually going to go all the way through. But, yeah, first slide. Okay. So, audio on the browser. For many years, we only had a reduced number of solutions to play back audio on our web pages, which were basically depending on external plugins like Flash or QuickTime, or at some point we were depending on the codecs of the system, which was a really dark time for multimedia on the web. Then it came a few years ago with the operation of HTML5. We've got the audio element, which is a pretty nice solution to embed native elements in our web pages as images or text. We also have a video and audio, but it was basically defined to be like a playback experience. We could change the volume, we could stop it, but there wasn't much that we could do. For many experiences that we've been doing during the years, projects like Sound Manager, first version and second version, allowed us to use a hybrid approach in which we had available audio behavior, HTML5 audio behavior, and Flash followbacks, so it was easy to keep up with Chrome, Firefox, IE, and create sound. But everyone was demanding something better, something more professional, something that had more power, which was the Web Audio API. For a while there, there was the Mozilla Audio Data API. It proposed a different approach. They wanted everything to be made with JavaScript, so you would have your frequency analysis or your filters. They would be JavaScript code, while the Web Audio API provides a native approach to all these basic functions when you deal with sound processing. So that's basically what the Web Audio provides for developers to manipulate and play audio assets on web pages or applications. It goes beyond that. Some people have said that Web Audio is the HTML5 audio, what Canvas is to the image element. I think we wish that were the case, because Canvas is very limited in that aspect. It's more like if we had Canvas and Canvas could do color filtering and Photoshop blending and all that Web Audio API provides way more features than Canvas. So how do you use? You basically have to instantiate an audio context. That's your object. You create that declaration. Usually you just use one context per page, usually because you just want everything to go into the mixer. Everything has to go into the user's output system, usually the speakers or the headphones. And once you've got all this instantiated, you can start creating your routing graph, your adding nodes to the system. So Web Audio API, it's based on nodes. It's one of these APIs that works with nodes. So all the basic audio operations like playing a sound, changing the volume, adding some filter are performed by nodes. The nodes get connected together in a graph which defines the behavior of that sound system. They're connected by their inputs and outputs. And that allows a lot of flexibility when you try to create basic playback systems or sound post-processing or dynamic behavior to sound. So these are some examples of routing graphs. The one on the top, it's a very basic one in which you can see that there's a source, not a specific source. It can be anything that provides sound into the system. It's connected to a by-code filter, which is a second-order filter. It does something. And it goes to the destination, which is usually the speakers. And one on the bottom, it's a way more complex system in which there's three sources, several distortions. It creates two paths. One is the dry part that's unprocessed. And the other one is the wet part. It's got a convolution applied. And then it got all together again into the destination. So basically you have to get your system clear in your head, and then that's the graph that you're going to implement. And it's really easy. Don't get intimidated by these weird graphs. So basically we've got sources. Sources is our main way of putting data into the system. Something has to make noise. Something has to provide us with an audio data. I'm going to talk about the four main ways you can put sound into Web Audio API, which are the create buffer source, create media element source, create media stream source, and create oscillator. And basically the way you use them is once you've got your context, you create your source. In this case it's a buffer source, audio buffer source. That creates a note, an audio buffer source note. I have to apologize because it's going to get like a tongue twisted at some points because it's going to be audio buffer note, note, audio note. It's going to get... But there's not that many words in the Web Audio API. So all the words are repeating most of the time. Then you assign a buffer, which is your data to the source audio buffer note, and you start it. This is actually not going to... I mean, this is going to play, but you're not going to hear anything because there's one important step missing, which is connecting the destination. So destination is what you plug your note into. So in the previous case, we had the same thing. Create the context, create the buffer source, assign the buffer, connect it to the context destination, which is the end of our Web Audio chain, which is, again, usually the headphones. And you start the sound, and then you would hear it on your headphones. But the combinations are endless. Once you've got notes, you're able to create notes, you can start connecting them. So here there's an example in which you get an oscillator, connected to a gain note, the gain note is connected to a convolver note, the convolver note is connected to a notch filter, and the notch filter finally goes to the destination. And this is dynamic. You can change it at any time. You can create dynamic effects, whatever you want. So speaking of the specific buffer source, which is probably the one you're going to be using the most, because it allows you to play back a sound file. Once you use the context create buffer source, the audio buffer source note has a few attributes and methods. The most important one is buffer, which is an IE32 bit float ranging from minus one to plus one. This is your data, your raw data, which you would usually load with an XML HTTP request, more about that later. So you assign it, and then you can change the playback rate, tell if the source is looping, how should start looping or end looping. You can start it, you can stop it, and you can know when it's ended. Okay, so this is the most common code that you see when you check for a tutorial on Web Audio. Create a context, create a request, an XML HTTP request, because it's asynchronous. You have to specify the response type you want for this request. It's going to be an array buffer, so it's going to be loaded as a binary data. And once you've got it on load, when you've got the request response, you use the context method that is called decode audio data, which will return a buffer that it's ready for the Web Audio API, for the audio buffer source note to play. So then you can connect it, assign the buffer to your source buffer note, and play it. I'm going to show you a demo. So this is basically the same thing. It's a bit different from what they tell you on the tutorials, because the first thing is that you're going to see... Sorry, I'm going to make it a bit bigger. That's probably better. So the audio context, since it's been an experimented technology, and as things go with Web development, things are prefixed with vendor prefixes, you have to check that you've got the right audio context. So for Chrome, stable right now, it's still WebKit audio context. In Canary, it's already deep prefixed, so it's audio context. Mozilla has dropped the prefix. And Safari, I think, still has got WebKit audio context. So basically, you've got this load sound method that will create the... will request a sound, and will play it like we've said before. The only thing I've changed is that when I create the source, I change the playback rate, and I assign a random value, so you can hear that it's not very exciting, but it's a start. So, yeah. Playback rate, note that it's got... it's playback rate.value. That's weird. Why is that? Because usually you just assign a value. It's because it's an audio param, and we'll talk about that later. So they usually advise you to load these sounds by using the XML HD request. There's one problem with this approach that it's very convenient. It's asynchronous, so it doesn't block your main thread, but you have to download everything. I mean, this own load, it's only triggered when everything's downloaded. So you've got 30 megabytes mp3 for your sound. You have to wait for the whole sound, the whole buffer to be downloaded so you can play it. There's no... the convenience of the HTML5 audio element in which you can auto preload or auto buffer. It's not with this. It doesn't work with this way of loading. But for several other sounds, at least it works. So probably you're good to start with this... with this way. So, oh, sorry. There's another thing. When you get this buffer out of the onload method, and then you pass it in the code that gives us a buffer, you cannot replay an audio buffer source note. Once an audio buffer source note is played, it's done. You cannot play it again. It will throw an exception. So you have to keep the buffer and recreate your source, and then play it again. So a more convenient way of managing sounds, it's probably having a function that what it does, it's the same thing, only that stores the buffer into an audio buffer, and then you can have a play sound which creates the buffer source and plays it. It's exactly the same. It's going to sound the same as the one before. No problem. But this way it's more convenient because it's not loading the same sound every time. It's just reusing the audio buffer. So, I should go step by step into the more complex notes, but I'm going to add something that's a bit more advanced because it's more convenient for the talk. So there's another note that's very useful, that's the analyzer note, which allows us to perform real-time analysis in the frequency domain and in the time domain, which is commonly called the fast Fourier transform. So when you get your data, your audio buffer, that's basically, when it's played back, it's on time domain. That's the classic audio shapes that you see. But the visualizers and the equalizers and most filters work based on frequencies. So the analyzer note allows us to access that data. And the way you do it, it's create an analyzer, set the fast Fourier transform size, which is the number of samples that you want your transform to have. This is all sound engineering and mathematics stuff.  And then you provide your own buffer in which to get float frequency data or get byte frequency data, it's going to store that information. And then you can use it. So in this case, for instance, this is getting more and more complex, but still, we create the audio context, we create the buffer, the analyzer note, we set it to 256 samples, we create this frequency data array of bytes, you in the array, we create a canvas because we want to see what's in that spectrum we want to plot it. And then the rest is the same. We have the load sound, we have the play sound function of before. The only difference is that when we create the play sound, we're connecting it to the analyzer and the analyzer is connected to the output, to the context destination. And the function update, which is called with request animation frame, basically just takes that frequency byte frequency data into frequency data array and plots it. So that's basically what we have. And then we can see the frequencies of what we're sending into the analyzer. So the funny thing of this is that we are creating several buffer source notes in parallel every time I click. All those notes are connected into the analyzer so they get, when you play several sounds, they get accumulated and then they go to the destination. You can see that the frequencies kind of accumulate. So what this is telling us, it's the amount of energy on each frequency band. So this is very useful if you want to create some kind of visualization or some kind of sound reactive application because lower frequencies, this part of the spectrum, it's usually like the bass, like the grave notes and the upper you go into the spectrum, it's higher sounds. So usually like if you wanted to code your own mp3 coder, you would just zero all these frequencies from this part forward or whatever you want. Basically you just link it to something on your page, on your game and you make it react. So this is with a buffer source, same thing, and as I said, there are several ways of putting sound into the system and this one, it's not using load sound, it's using the WebRTC get user media. WebRTC, it's the technology in the browser that allows us to, amongst many, many things, access the webcam and access the microphone or web cams or microphones because there can be many connected to our system. So this navigate or get user media prompts the browser to ask the user to allow access to the microphone and notice that I've commented the part in which the analyzer is connected to the destination so now you're not going to hear if this works. Hello, hello. You can't see the sound but you cannot hear it which is also convenient if you don't want your input feedback to go into the output. You just want to process it. So again, get user media, you have to check that it's prefixed and what it does it's once it prompts, get user media, once it prompts the user to allow access, you've got a success callback to the stream and then there's context create media stream source and it creates a source node and it behaves exactly the same as the audio buffer source node only that it doesn't have playback rate because you cannot make reality speak faster. Okay. So now we've seen that it's very useful to play sounds or to access the input of the system and we saw this audio param type. It's an object. It's a data type that's got some parts of the API. So audio param is an interesting thing and it's basically one of the most powerful features of Web Audio API. It allows you to shadow events to change values over time. So for instance you can set a value at a time that would be like your normal setter you want a frequency or you want again to be 100 and it's right now that's easy. If you wanted it to go slowly into 120 or another value, you would probably have to implement your own easing or your own linear interpolation function and deal with it. So basically what you get is when you set value at time you can say I want this value to be 100 now or in two seconds or whenever. So you can basically shadow everything from the very beginning you start. For the moment you start you can say I want all this to happen. And then there's linear RAM to value at time so it basically you can say it's whatever it is now I want in five seconds to go to zero which is kind of a fade out. It's very cool. So please if you implement mute on your web pages fade them down. Fade the sound in and out because if you do an abrupt cut it's grating so. Like linear RAM to value it's linear interpolation and exponentially it's a curve. Then there's a difference that it's the set target at time that one's a bit more complex it basically says I want you to get into that value at this rate so I don't care the time I just want it's like a fall off it's an implementation of a fall off value and set value curve you can specify certain values and cancel shadow values just removes all your shadow for your sample for your system for anything you want. So I will show this with the next nodes. Gain node basically it's a gain control node it's basically the volume although in audio gain, volume, power are different concepts that are in different measures. It's got one attribute which is gain and it's also an audio param so again you can program it you can shadow it. In this case same thing creating a context creating a buffer source okay creating a volume node assigning the value to 0.1 that's basically the scale that is applied it's a scaling factor to your wave so in this case it would be one tenth one would be no modification two would be twice and connect the source to the volume and the volume to destination and play it and you're done so you can change if you keep the reference to your volume node you can change it any way you want and it would just change the volume. The node that's delay node it adds a delay conveniently and basically same thing you created with context create delay you specify the maximum delay time that that node can process and then you assign it with delay time which is again an audio param attribute so in this case for instance it's creating a source buffer with a sound adding a delay of three seconds out of the 100 seconds that we specified and playing it so it would play three seconds after the actual start so what this can be used for like reverb effect a very easy and cheap reverb effect it's basically connecting your buffer source to a loop between the delay and the gain nodes they're looped you can see it on the last lines that the audio source is connected to the delay node the delay node is connected to the gain node and the gain node is connected to the delay node the delay node is connected to the context destination so it creates a feedback loop attenuating the value so you get this echo reverb effect so I'm going to show you this it's basically the same thing creating the context creating the analyzer creating the canvas to show it loading the sound and playing the sound it's what we've seen creates the audio source sets a random playback rate and creates the loop and just plays it and what you get is this same sample but you can hear that echo so that echo is created by a reverb effect not using anything fancy just a loop of delay and end gain so you've got the echo with a delay and it's attenuated so you lower the gain and the same sound goes on you can run into feedback loops with this you have to be careful it's the oscillator source there's you created with create oscillator and assign a type there's five types sine wave, square wave sawtooth, triangle and custom if you use custom you have to specify how's your custom cyclical wave with set wave table and again there's a frequency that it's an audio pattern so you can specify a frequency that you want your oscillator your LFO to work and you can shadow it, you can ramp it you can do lots of things with it so basically you can start creating your own synthesizer with oscillators same thing, create the other context, create the oscillator assign a frequency value, the type important thing that's one of these things that are on flux and some APIs accept a string stating the triangle or sawtooth, the type and some other APIs, I think it's Safari implementation they require the number so keep that in mind connect the oscillator to the destination and start it okay, sorry okay, filters this is a very useful type of note, it creates a second order filter and it's got all these types low pass, so only lower frequencies below the frequency attribute are led through, high pass, the opposite only frequencies over that frequency are led through, band pass only frequencies around that frequency in the Q attribute are allowed to pass low shelf and high shelf are like low pass and high pass but again is applied so you can amplify those frequencies same with picking it's like band pass but with amplification a notch filter it's the opposite of a band pass it just allows everything to pass except a specific band and all pass basically just applies some shift delay or a gain so in this case, for instance I'm going to show you so I'm creating up there an oscillator with a sawtooth type a signal value and then a filter which is also I think it's 2G7 it's a notch I don't even know right now with numbers I don't remember and what I'm doing is hooking the mouse movement to change and you can see here that I'm doing the frequency of the filter it's changing to a value related to the position of the mouse at the context current time plus 0.1 so in one tenth of a second it's going to go to that value context current time it's very convenient when you're scheduling events because it tells you exactly the moment in which you are in time it starts from zero when you create the context and it progresses while it's running so you can say okay this is my now so now plus one second do this you have to keep track of time and the same thing for the source for the oscillator frequency so you get this so vertical is frequency of the oscillator and horizontal it's the cutting frequency of the filter you can see how the frequencies go up and down so if you want to create a radio it's probably what you need to do it's a very lame demo but that's basically what started with the all the moog all the chords, all the roll and sound machines so you can create sound tables with this so convolution convolution I mean if you know what it is it's cool if you don't know it just use it and forget about it so basically yeah no that's how this thing works because the theory it's mind boggling but it's actually really simple to use a convolution effect it's basically you've got a sample in this case that it's characterizes the dynamic response of a system so for instance when you do this this echo that you hear it can be recorded and when you have a different sample sound you're going to use that sample and a convolver note and it adds all this echo and all this dynamic characteristics of the environment you sampled what is called the impulse response so you can search the internet find wave files or mp3 files which are impulse response in a cathedral inside a metallic tank create a context convolver assign that buffer load it exactly the same as an audio buffer source with xml hd request and apply it everything you put on your system before a convolver it's going to turn into that environment so demo time same thing we create the the canvas of the visualization we use the low sound two times because we're going to load our original sample and the cathedral impulse response then create a convolver and assign it to our audio buffer source and this creates this it creates all this complex texture of sound out of a single I mean if you try to do this with all set of notes of delay gain filters it would be really really long and this is very convenient just stick an audio file and you get this impulse response because you think that you would probably have to calculate for I don't know materials and the way different frequencies bounce of the materials you're modeling so this is pretty cool and I think this is the last one I'm going to cover it's the Paner which it's also very cool if you're creating games or some kind of immersive experience it allows you to create the spatialization effects by doing a very simple thing so basically when you can initiate a Paner note you can define the position the velocity, the direction and the focus or the sound cones like it can be omnidirectional or it can be very directional so you move your sound with all its effects, all its notes you move it in 3D and then it's tied to the audio listener which is context listener which also you can specify the position, the velocity and everything which is you it's the listener so once you've got this running basically it calculates everything like if the source hits far away it's going to get attenuated if it moves fast towards you it's going to calculate the Doppler effect to your relative speeds so that's awesome it's out of the box, you just use it there's a more thorough tutorial about this on HTML5 rocks and I recommend you to look at it because it would take longer than the time I have for the talk and that's it, there's some others like you can split channels and merge them again and the dynamics compressor tries to prevent from clipping and getting things out of hand so usually you just stick it in the end of your chain before the context destination you can create periodic waves wave shaper also complex things and javascript note, that's like the shader of 3D graphics it allows you to do anything you want with the input and the output so anything that you want to do with built notes, you can just create it there you want to do a pitch shift effect you take the frequency, you shift it you turn it back into time domain and let it go so there's plenty of those those are pretty much more complex and require a bit of sound programming knowledge so what you saw the demo I was playing before there's 50 cubes each cube has a sound loop for itself, it's got a proximity activated sound, it's got an activated properly like when it lights the activation sound each note has a different analyzer which is also connected to the microphone it's got a panner so you can place it around in 3D then there's an atmosphere that's playing also with its own note there's a convolver to add some reverb there's a filter for the sake of it then a dynamic compressor to try to keep everything under control and it's basically so now all this sound, all this texture it's created out of a lot of different sounds the sound system is really good but it's not doing justice to the sound with headphones it's way more intense so you can hear all this complex behavior out of sharing events and you can even you have to reload sorry so the sound, the vibration of the light it's based on its own sound but it's also you can also use your microphone so if you want to do something with some installation something that is interactive something that the users can interact with this is a pretty awesome technology so you can hear like when you get closer that's feedback, that's not me and you can hear the sounds when you go over the sound source so it creates a very complex texture very easily so I'm gonna blow this demo and you can see how it's created for its cube and it's not that difficult so awesome, now what you can do with all this technology, there's web artistic user media so you can start doing cool interactions with users on the web page by allowing them to talk into the web page and doing whatever I don't know, sky's the limit there's just the web media API which it's not only for stupid sounding songs, it's actually an interface so you can use MIDI keyboards or any MIDI device plugged into your computer and then use all the shift levers and all the events everything like sound machines everything you want you can go with procedural sound generation for games or for sites or for the sake of it creating an audio note and putting things into the system or using oscillators or you can use real-time effects like specialization or you can have your site explain a soundtrack and if the user goes underwater you can muffle the frequencies so it sounds like it's underwater these are the references I think I mean there's lots of them but better stick to the latest spec there's a few clashing versions of the spec so be careful some you have to create a game note and so you have to create a game so the syntax differs sometimes and both tutorials I mean edit tutorial on HTML5 rocks it's awesome so these two the getting started and the mixing position on audio on WebGL those are really really good and that's it thanks I know questions you can finally answer


Idiopathic epiretinal membranes, IOMs, are common pathological condition found in retina clinics. Research into their pathogenesis has been limited by the lack of definitive cellular origins and the presence of ultrastructural changes. Immunohistochemistry has identified glial cells and high allocytes as key players in IOM formation, while recent advances in proteomic techniques have revealed the growth factors and cytokines involved in IOM formation. This article was authored by Malav Joshi, Shivi Agrawal, and John Byron Christopherides.