WEBVTT

00:00.000 --> 00:14.320
Oh, my name is Sergey Kassan-Pyre, and I'm going to talk about VIsDR platform, it's WebPayis, it's

00:14.320 --> 00:16.120
DR processing.

00:16.120 --> 00:28.400
So, a little bit about Miso, I started this map with a radio when I was at 9, so I'm interested

00:28.400 --> 00:37.600
in the concept of programming, so I do have the name of the DSP staff and I was in a recent

00:37.600 --> 00:43.920
there was part of FairWaves, I was a creator of original Pixrix, it's DR, as you

00:43.920 --> 00:50.920
know, and now I'm part of WayWavet Labs, we're doing a couple of bunch of videos also

00:50.920 --> 00:51.920
of FairWaves.

00:51.920 --> 01:00.920
So, I'll start to show some of the presentation to keep up time in, but generally we're

01:00.920 --> 01:09.920
real, so let's talk about Acustin, the web is DR projects, so you can logically group

01:09.920 --> 01:22.920
of web projects, one use UI, as web, so it's my idea to open WebEx and the many, much more,

01:22.920 --> 01:31.920
they don't do a processing on the front, mostly do the processing on the web or on HR itself,

01:31.920 --> 01:37.920
and we have another group where there is a complete implementation of processing device

01:37.920 --> 01:40.920
and manipulation, visualization, everything.

01:40.920 --> 01:47.920
Most notably, probably at least I like CyberWavet Labs, it's awesome, there's a lot of features,

01:47.920 --> 01:56.920
but all that project have the same care, so it's my knowledge of design, mostly single project

01:56.920 --> 02:04.920
compiled into web, you use an M script, and some project use, or per show, it's pretty

02:04.920 --> 02:11.920
cool, but they're very long, it's an extension, so it's not really optimized, to extend

02:11.920 --> 02:19.920
or not really have a multi design, so we think what if we can build such a platform, so it's

02:19.920 --> 02:27.920
going to be extensible, no blood, web assembly blocks, so it's going to be, that was

02:27.920 --> 02:34.920
script, a friend day, you can have interaction between the users, you have multiple web,

02:34.920 --> 02:41.920
BDI supports, and it's much more, so we start thinking what we can build and one thing,

02:41.920 --> 02:50.920
we start less complex stuff, because there's already simple stuff available, and

02:51.920 --> 03:07.920
what was left, run it to J, why today, despite it already, not popular solution, but

03:08.920 --> 03:16.920
what it's great is the amount, so it does not use extension, it's the process same, so it's

03:16.920 --> 03:22.920
simple, it's game of related, just a hundred, seventy kilos of project, and J seems structure

03:22.920 --> 03:34.920
is simple, a burst, and a burst, a friend, a frame, and the user given four samples per second,

03:35.920 --> 03:41.920
you get a slight, one mega, mega samples per second, it's okay, even for you, it's

03:41.920 --> 03:49.920
good to it, which we can support a lot of cheap, is the R on the market, and another thing

03:49.920 --> 03:55.920
which is good for 2G, you don't need to program same card, because there's no cell

03:55.920 --> 04:01.920
authentication from phones, so you can use a custom same card, and now plan was,

04:01.920 --> 04:08.920
like, let's do it in the 2 week time to see how it's going, but, it was my

04:08.920 --> 04:15.920
accommodation, you used really complex structure, which is mostly resembles, the

04:15.920 --> 04:22.920
GM standard, there's lots of component, there's lots of interactions, so, only if you

04:22.920 --> 04:32.920
months later we can get something working, so it was only, like, took only four months

04:32.920 --> 04:38.920
to get a simple UC, and a lot of things need to be done, the only that time we run,

04:38.920 --> 04:44.920
use your campaign to get some money to finish our experiments, and we file and

04:44.920 --> 04:52.920
file net, grant foundation for this wall, fortunately we got an all net grant, but

04:52.920 --> 04:59.920
it was, like, a year late, and during that time we tried our best, so what we did, first

04:59.920 --> 05:06.920
we tried a really simple adaptation for 2G in the web, a year reduced, but that way is

05:06.920 --> 05:12.920
possible to reduce, so, no, APs came a delay, and not a progress, just simplest, mesfices,

05:12.920 --> 05:18.920
the end voice calls, even in that configuration, there's a lot of component required,

05:18.920 --> 05:23.920
so we started looking how we can get it, and another issue, there's no, like,

05:23.920 --> 05:30.920
dire QDP, or TCP communication web, have to wrap everything, and it's web

05:30.920 --> 05:36.920
circuits, or, like, modern technologies, but we use web circuits, point.

05:36.920 --> 05:41.920
So, our first approach was just run, osmotherics, and the content and everything

05:41.920 --> 05:46.920
called in the back end, osmotherics is, uh,

05:46.920 --> 05:54.920
components that translate JSM doors into like you samples, pretty simple, but mostly

05:54.920 --> 06:00.920
this being intensive stuff, but you know, it's not a great idea, because you

06:00.920 --> 06:07.920
dp packets were coming up with very short interval, and web circuit in the web browser

06:07.920 --> 06:10.920
was not optimized for this.

06:10.920 --> 06:17.920
It was during, and it just gives power, and it's terribly, for that, I'm pure,

06:17.920 --> 06:22.920
so only we can get, like, osmotherics running for 20 seconds, and then

06:22.920 --> 06:25.920
completely fails.

06:25.920 --> 06:32.920
Another approach, let's do, like, two components, the front, everything in the web,

06:32.920 --> 06:37.920
and that somehow worked, but still a lot of problems remains.

06:37.920 --> 06:42.920
Since, uh, there's a lot of, uh,

06:42.920 --> 06:47.920
since there's a lot of, uh, threads in osmotherics,

06:47.920 --> 06:52.920
it was not properly running, so we had to optimize everything.

06:52.920 --> 06:59.920
First of all, osmotherics use a lot of vector instructions to form JSM

06:59.920 --> 07:00.920
utilization.

07:00.920 --> 07:06.920
Here we did a trick, so we used lookup tables, so we have predefined waveforms.

07:06.920 --> 07:13.920
Actually, to generate JSM's kind of a uniform, you need only, and knowing what was,

07:13.920 --> 07:20.920
like, two or three previous symbols, and knowing that we can form a lookup table.

07:20.920 --> 07:26.920
And that was, and that worked amazingly fast, so it was, like, pure,

07:26.920 --> 07:31.920
maxi pia instruction that worked really well, so we speed up almost,

07:31.920 --> 07:36.920
and by 50% problem was to find that small,

07:36.920 --> 07:40.920
four milliseconds, uh, period between frames.

07:40.920 --> 07:45.920
That was, uh, that we did a trick, so we adopted, uh,

07:45.920 --> 07:49.920
everything to, uh, in processing of two JSM frames.

07:49.920 --> 07:52.920
That was, like, roughly 10 milliseconds per year, but that,

07:52.920 --> 08:01.920
But that time as a computer was okay with JavaScript schedule and web-assembly.

08:01.920 --> 08:15.260
Another thing to optimize was we have a couple of screens, a couple of web workers fighting

08:15.260 --> 08:22.260
with a child and so we write the code to be a single threat in Washington.

08:22.260 --> 08:25.260
And we just call it task sequentially.

08:25.260 --> 08:38.260
So when we get data, we call it BTS Federal, and we call it osmaterics, and it goes for IQ manipulation.

08:38.260 --> 08:46.260
They were really good results, so we finally can make phone to be released, register it on the network,

08:46.260 --> 08:48.260
to get a simple SMS and use it to message.

08:48.260 --> 08:54.260
But to get phone calls, we need more adaptation.

08:54.260 --> 09:01.260
Like classic osmaterics, call stack, use RTP on the backhand or call communications.

09:01.260 --> 09:09.260
And it gave another problem, because RTP, pure UDP, we need to wrap everything,

09:09.260 --> 09:15.260
and each of us call requires each wrapping and adaptable.

09:15.260 --> 09:23.260
But as a computer project already have so called osmax protocol, the design is specifically to run remote.

09:24.260 --> 09:31.260
Based stations that are located over set link that have limited bandwidth, low latency,

09:31.260 --> 09:37.260
and be adopted that protocol over web markets and it worked really well.

09:37.260 --> 09:42.260
In the end, we get only like zero to three frame lost per hour.

09:42.260 --> 09:44.260
That was amazing.

09:44.260 --> 09:56.260
When I started with Harold, the little osmoco project, it's still not impressive for career grade operators.

09:56.260 --> 10:02.260
So I'm going to show you how it looks like.

10:02.260 --> 10:05.260
So we have a divided connect.

10:06.260 --> 10:13.260
We got a notification, so there's device connected, go to our website.

10:13.260 --> 10:17.260
You can actually install on your own, it doesn't matter.

10:17.260 --> 10:20.260
We set a device.

10:20.260 --> 10:22.260
We have to configure it.

10:22.260 --> 10:25.260
GSM, 180 band.

10:25.260 --> 10:29.260
So when the BTS starts, we get some messages,

10:29.260 --> 10:31.260
and you see the data is coming.

10:31.260 --> 10:35.260
So there's an indication that IPU is forming.

10:35.260 --> 10:37.260
So now we took two phones.

10:37.260 --> 10:41.260
There is a screen cast of both phones, both phones,

10:41.260 --> 10:45.260
and we try to connect to a network from both phones.

10:45.260 --> 10:51.260
As we connect, we see a lot of messages going into a BTS log.

10:51.260 --> 10:57.260
The both phones connected to their team, their site, etc.

10:58.260 --> 11:06.260
We turned the osmoco to our number allocation.

11:06.260 --> 11:11.260
So the both phones that dynamic number, one number,

11:11.260 --> 11:16.260
we can make a phone call from another phone.

11:16.260 --> 11:24.260
And every BTS command, everything you can see in the logs of what you are doing.

11:24.260 --> 11:29.260
Every disk and packet is here.

11:29.260 --> 11:34.260
So, and we'll got a phone call.

11:34.260 --> 11:39.260
So we can answer it, unfortunately, there's no sound,

11:39.260 --> 11:43.260
but you got the idea.

11:43.260 --> 11:51.260
Okay.

11:51.260 --> 11:55.260
So what's it like from the old perspectives,

11:55.260 --> 12:01.260
we have a client, which is our browser.

12:01.260 --> 12:04.260
We have intermediate software,

12:04.260 --> 12:07.260
with a back-end that translate websites,

12:07.260 --> 12:10.260
like it's too native as macon protocols.

12:10.260 --> 12:16.260
But the good stuff can really extend it to build a web-based cloud network.

12:16.260 --> 12:19.260
So everyone can run their own BTSs.

12:19.260 --> 12:22.260
We can run multiple BC units.

12:22.260 --> 12:25.260
BC is a control in terms of JSON.

12:25.260 --> 12:27.260
We have multiple controllers,

12:27.260 --> 12:32.260
but geographically distributed to minimize latency between the call.

12:32.260 --> 12:39.260
So, as a community, it's possible to build such a huge worldwide.

12:40.260 --> 12:42.260
Network.

12:42.260 --> 12:45.260
Despite JSM is outdated,

12:45.260 --> 12:47.260
considered outdated nowadays,

12:47.260 --> 12:50.260
and many many sites will look into 4G.

12:50.260 --> 12:52.260
And 5G is still interesting,

12:52.260 --> 12:54.260
in terms of research and education,

12:54.260 --> 12:58.260
where you can build your own network

12:58.260 --> 13:00.260
to do a research and communication,

13:00.260 --> 13:03.260
build distributed network.

13:03.260 --> 13:08.260
And still, it lost for some emergency response technology,

13:08.260 --> 13:11.260
and even looking for people who are lost,

13:11.260 --> 13:14.260
because running a network is open registration.

13:14.260 --> 13:19.260
You can get information that the phone tries to connect to a network,

13:19.260 --> 13:21.260
and based on that information,

13:21.260 --> 13:26.260
you can look where to find the closed people.

13:26.260 --> 13:28.260
And another interesting feature,

13:28.260 --> 13:31.260
we can actually run network on a smartphone.

13:31.260 --> 13:34.260
So it's going to be a network and a network.

13:35.260 --> 13:40.260
Yeah, after getting a success with that application,

13:40.260 --> 13:43.260
we look what we can build in terms of platforms,

13:43.260 --> 13:47.260
how we can unify everything with the one

13:47.260 --> 13:49.260
from that experience,

13:49.260 --> 13:52.260
it build extensible platform.

13:52.260 --> 13:55.260
And so, our platform example,

13:55.260 --> 13:57.260
that we have an application,

13:57.260 --> 13:59.260
that can be very complete in JavaScript,

14:00.260 --> 14:03.260
or useful graph, or in a wild,

14:03.260 --> 14:05.260
vast module.

14:05.260 --> 14:07.260
It finds so-called data streams.

14:07.260 --> 14:09.260
It's where data come from,

14:09.260 --> 14:11.260
that can be from the real hardware through web,

14:11.260 --> 14:13.260
use be, it can be remote,

14:13.260 --> 14:15.260
data through websockets.

14:15.260 --> 14:19.260
You can have local data through the file IPI,

14:19.260 --> 14:23.260
or even cloud services.

14:23.260 --> 14:25.260
We develop,

14:25.260 --> 14:29.260
so you, the dynamic grid with structure,

14:29.260 --> 14:31.260
I'll show it just in a second,

14:31.260 --> 14:34.260
and definitely we should support multi-user

14:34.260 --> 14:35.260
and data access.

14:35.260 --> 14:38.260
So we use the barrier,

14:38.260 --> 14:42.260
standard technology,

14:42.260 --> 14:44.260
and that,

14:44.260 --> 14:46.260
and the design.

14:46.260 --> 14:49.260
So one demo is a FM radio,

14:49.260 --> 14:52.260
pre-test, and that was project,

14:52.260 --> 14:53.260
it already,

14:53.260 --> 14:56.260
but just to get your impression,

14:56.260 --> 15:00.260
how it looks like.

15:00.260 --> 15:01.260
So in the front page,

15:01.260 --> 15:04.260
there's a couple of pre-defined applications,

15:04.260 --> 15:07.260
so we start FM radio,

15:07.260 --> 15:09.260
so, this standard parameters,

15:09.260 --> 15:10.260
so, sure thing,

15:10.260 --> 15:15.260
we'll get a web API connected.

15:15.260 --> 15:20.260
And, all the controls are dynamic.

15:21.260 --> 15:27.260
So, here we can use both frequency,

15:27.260 --> 15:29.260
and modify it from all local,

15:29.260 --> 15:31.260
and it's a long-diffication,

15:31.260 --> 15:33.260
in the full graph.

15:33.260 --> 15:35.260
And, a changing,

15:35.260 --> 15:36.260
that parameters,

15:36.260 --> 15:38.260
you can shoot different stations,

15:38.260 --> 15:40.260
every thing is dynamic,

15:40.260 --> 15:43.260
so, you can use this application,

15:43.260 --> 15:45.260
I can start the point and develop,

15:45.260 --> 15:47.260
and I think else.

15:47.260 --> 15:49.260
And another example is,

15:49.260 --> 15:51.260
if you can use this application,

15:51.260 --> 15:53.260
it's a signal analyzer.

15:53.260 --> 15:55.260
So, we have,

15:55.260 --> 15:56.260
as I mentioned,

15:56.260 --> 15:58.260
so called data structures,

15:58.260 --> 16:01.260
where you can have data,

16:01.260 --> 16:03.260
either like locally,

16:03.260 --> 16:05.260
as here you can shoot a file,

16:05.260 --> 16:06.260
and then analyze it,

16:06.260 --> 16:09.260
or you can connect with a mode,

16:09.260 --> 16:10.260
location,

16:10.260 --> 16:14.260
using cloud file provider.

16:14.260 --> 16:17.260
Or you can even run your old cloud provider,

16:17.260 --> 16:18.260
here's an example.

16:19.260 --> 16:20.260
We're here,

16:20.260 --> 16:22.260
like our own,

16:22.260 --> 16:26.260
very simple file storage cloud.

16:26.260 --> 16:30.260
So, you can upload data,

16:30.260 --> 16:34.260
and the SIGMF is supported

16:34.260 --> 16:36.260
to properly take all the recording.

16:36.260 --> 16:37.260
So, you can see,

16:37.260 --> 16:40.260
we're just can configure what's recording,

16:40.260 --> 16:41.260
if it's,

16:41.260 --> 16:44.260
if it's not tagged correctly,

16:44.260 --> 16:47.260
and it is created from an upload.

16:48.260 --> 16:49.260
Once we are upload,

16:49.260 --> 16:51.260
so you can share the recording

16:51.260 --> 16:53.260
because everyone else,

16:53.260 --> 16:55.260
using the links,

16:55.260 --> 16:57.260
using the link,

16:57.260 --> 17:01.260
and it's pretty convenient.

17:01.260 --> 17:02.260
So, get,

17:02.260 --> 17:06.260
let's get back to our application.

17:06.260 --> 17:08.260
Just in the second.

17:10.260 --> 17:11.260
Yeah,

17:11.260 --> 17:13.260
you can actually download it back,

17:13.260 --> 17:14.260
even then I will,

17:14.260 --> 17:16.260
you want it.

17:17.260 --> 17:18.260
So, here,

17:18.260 --> 17:21.260
we choose our recording,

17:21.260 --> 17:24.260
and you can analyze data

17:24.260 --> 17:27.260
by selecting,

17:27.260 --> 17:28.260
portal,

17:28.260 --> 17:30.260
this recording.

17:30.260 --> 17:31.260
And that record,

17:31.260 --> 17:33.260
at the application,

17:33.260 --> 17:34.260
mostly use liquid,

17:34.260 --> 17:35.260
GSP,

17:35.260 --> 17:36.260
this kind,

17:36.260 --> 17:37.260
is number of,

17:37.260 --> 17:39.260
standard mode view data,

17:39.260 --> 17:40.260
and standard parameters,

17:40.260 --> 17:42.260
for the video later,

17:42.260 --> 17:43.260
like,

17:43.260 --> 17:45.260
the second modulation index,

17:45.260 --> 17:47.260
a threshold,

17:47.260 --> 17:49.260
and once you select it,

17:49.260 --> 17:50.260
you see all beats,

17:50.260 --> 17:51.260
in the decoder stream,

17:51.260 --> 17:52.260
sorry,

17:52.260 --> 17:53.260
that,

17:53.260 --> 17:55.260
it's really,

17:55.260 --> 17:57.260
a lot of fonts.

17:57.260 --> 17:58.260
But,

17:58.260 --> 17:59.260
by a year,

17:59.260 --> 18:00.260
like,

18:00.260 --> 18:01.260
set the wall recording,

18:01.260 --> 18:02.260
you can,

18:02.260 --> 18:03.260
select,

18:03.260 --> 18:04.260
for example,

18:04.260 --> 18:05.260
Bluetooth low energy,

18:05.260 --> 18:06.260
sorry,

18:06.260 --> 18:08.260
I got this recording from my Bluetooth mice,

18:08.260 --> 18:09.260
and you can see,

18:09.260 --> 18:10.260
the wall Bluetooth packet,

18:10.260 --> 18:12.260
decoded here.

18:13.260 --> 18:16.260
They're a bunch of different visualizations,

18:16.260 --> 18:18.260
so you can see power of the signal,

18:18.260 --> 18:21.260
you can see the demodulated signal,

18:21.260 --> 18:23.260
so basically,

18:23.260 --> 18:24.260
I'm the coder,

18:24.260 --> 18:26.260
so you can see all the transitions

18:26.260 --> 18:27.260
from that recording,

18:27.260 --> 18:29.260
you can visualize,

18:29.260 --> 18:31.260
raw beats,

18:31.260 --> 18:33.260
and so forth.

18:35.260 --> 18:36.260
Okay, let's,

18:36.260 --> 18:38.260
skip that,

18:38.260 --> 18:40.260
move to the next video.

18:41.260 --> 18:43.260
Another thing with the platform,

18:43.260 --> 18:44.260
we have,

18:44.260 --> 18:45.260
of course, share device,

18:45.260 --> 18:49.260
where you can run a device

18:49.260 --> 18:51.260
on the one computer,

18:51.260 --> 18:54.260
and share all the data coming from

18:54.260 --> 18:56.260
one computer to another,

18:56.260 --> 18:57.260
through the platform.

18:57.260 --> 18:58.260
For example,

18:58.260 --> 19:01.260
there, we're running one application,

19:01.260 --> 19:02.260
we have,

19:02.260 --> 19:05.260
is your connected to that laptop,

19:05.260 --> 19:06.260
so we started,

19:06.260 --> 19:08.260
and there's a link,

19:08.260 --> 19:10.260
so we can share that link,

19:10.260 --> 19:12.260
with anyone,

19:12.260 --> 19:13.260
whoever you like,

19:13.260 --> 19:14.260
whoever you like,

19:14.260 --> 19:15.260
whoever you want,

19:15.260 --> 19:17.260
and anyone with the link,

19:17.260 --> 19:18.260
can actually hear,

19:18.260 --> 19:19.260
and get,

19:19.260 --> 19:21.260
I do data from your,

19:21.260 --> 19:23.260
streaming,

19:23.260 --> 19:24.260
you can actually run

19:24.260 --> 19:26.260
a pretty fine application,

19:26.260 --> 19:27.260
using this link,

19:27.260 --> 19:31.260
and with both some compression,

19:31.260 --> 19:34.260
here you use the low compression,

19:34.260 --> 19:37.260
but we're looking to get more compression,

19:37.260 --> 19:39.260
even streaming,

19:39.260 --> 19:41.260
a few megacenters per second,

19:41.260 --> 19:44.260
might be problematic,

19:44.260 --> 19:46.260
through the web.

19:48.260 --> 19:50.260
So, one another computer with

19:50.260 --> 19:53.260
set stream parameters,

19:53.260 --> 19:55.260
is that link,

19:55.260 --> 19:58.260
and there's,

19:58.260 --> 20:00.260
that's like,

20:00.260 --> 20:04.260
a fan-demodulator on that stream,

20:04.260 --> 20:05.260
so we have one stream,

20:05.260 --> 20:06.260
device,

20:06.260 --> 20:07.260
one location,

20:07.260 --> 20:08.260
and we are in,

20:08.260 --> 20:09.260
another application,

20:09.260 --> 20:11.260
the translation,

20:11.260 --> 20:13.260
if I'm demodilational,

20:13.260 --> 20:14.260
that's single,

20:14.260 --> 20:15.260
sorry,

20:17.260 --> 20:19.260
so you can hear,

20:19.260 --> 20:20.260
that's,

20:20.260 --> 20:22.260
it's working,

20:22.260 --> 20:25.260
and we have a couple of

20:25.260 --> 20:26.260
configuration,

20:26.260 --> 20:27.260
one is,

20:27.260 --> 20:28.260
you can just

20:28.260 --> 20:30.260
trade data stream,

20:30.260 --> 20:32.260
when you want to like an another,

20:32.260 --> 20:34.260
you can actually give access to your device,

20:35.260 --> 20:37.260
and when you change controls,

20:37.260 --> 20:38.260
like frequency,

20:38.260 --> 20:39.260
or bandwidth,

20:39.260 --> 20:40.260
or gain,

20:40.260 --> 20:42.260
that requests go back

20:42.260 --> 20:44.260
to the original recording,

20:44.260 --> 20:45.260
and actually,

20:45.260 --> 20:47.260
changes to that configuration.

20:47.260 --> 20:50.260
Okay, let's stop for this now.

20:54.260 --> 20:55.260
You know,

20:55.260 --> 20:57.260
all the kinds of architectures,

20:57.260 --> 20:58.260
simple,

20:58.260 --> 21:00.260
not not fancy,

21:00.260 --> 21:01.260
let's just,

21:01.260 --> 21:02.260
express,

21:02.260 --> 21:03.260
simple,

21:03.260 --> 21:04.260
file-based,

21:04.260 --> 21:05.260
file storage,

21:05.260 --> 21:06.260
quite your recording,

21:06.260 --> 21:08.260
we use a website,

21:08.260 --> 21:09.260
it's a way we use

21:09.260 --> 21:10.260
school life for storage,

21:10.260 --> 21:11.260
where you can storage,

21:11.260 --> 21:12.260
custom block,

21:12.260 --> 21:14.260
and application configuration,

21:14.260 --> 21:17.260
and you can actually do all the stuff in

21:17.260 --> 21:19.260
not a JS when you can the back,

21:19.260 --> 21:21.260
so you can predefined the location,

21:21.260 --> 21:22.260
and run it in,

21:22.260 --> 21:23.260
completely in the back,

21:23.260 --> 21:24.260
not required,

21:24.260 --> 21:26.260
your interaction.

21:28.260 --> 21:30.260
Another thing,

21:30.260 --> 21:31.260
is,

21:31.260 --> 21:32.260
I mentioned a,

21:32.260 --> 21:34.260
is all platform,

21:34.260 --> 21:35.260
is accessible,

21:35.260 --> 21:37.260
so you cannot write your own application,

21:37.260 --> 21:39.260
or your own blocks,

21:39.260 --> 21:40.260
so you have,

21:40.260 --> 21:42.260
if you don't find any block,

21:42.260 --> 21:43.260
you won't,

21:43.260 --> 21:44.260
specific,

21:44.260 --> 21:45.260
the module,

21:45.260 --> 21:46.260
which,

21:46.260 --> 21:47.260
or single processing,

21:47.260 --> 21:49.260
you can create one.

21:49.260 --> 21:50.260
The interfaces,

21:50.260 --> 21:51.260
pretty simple,

21:51.260 --> 21:53.260
you need to come to the find couple,

21:53.260 --> 21:54.260
function,

21:54.260 --> 21:55.260
it's mostly,

21:55.260 --> 21:56.260
samples,

21:56.260 --> 21:57.260
a good idea,

21:57.260 --> 21:58.260
interface.

21:59.260 --> 22:00.260
And,

22:00.260 --> 22:03.260
when executing multiple blocks,

22:03.260 --> 22:05.260
called the flow graph application,

22:05.260 --> 22:06.260
you can,

22:06.260 --> 22:07.260
just,

22:07.260 --> 22:08.260
draw,

22:08.260 --> 22:09.260
like,

22:09.260 --> 22:10.260
in a,

22:10.260 --> 22:11.260
in a good radio,

22:11.260 --> 22:12.260
just show you,

22:12.260 --> 22:13.260
that,

22:13.260 --> 22:14.260
up,

22:14.260 --> 22:15.260
or have.

22:15.260 --> 22:16.260
Okay,

22:16.260 --> 22:17.260
let's run the demo.

22:23.260 --> 22:26.260
So we create an empty application,

22:26.260 --> 22:27.260
empty project,

22:28.260 --> 22:29.260
here,

22:29.260 --> 22:30.260
nothing,

22:30.260 --> 22:32.260
and we got into edit mode,

22:32.260 --> 22:34.260
so in edit mode,

22:34.260 --> 22:36.260
we can put different blocks.

22:36.260 --> 22:37.260
For example,

22:37.260 --> 22:39.260
here we create,

22:39.260 --> 22:40.260
web use,

22:40.260 --> 22:41.260
be block,

22:41.260 --> 22:43.260
to source data coming from,

22:43.260 --> 22:48.260
from your device,

22:48.260 --> 22:49.260
we can add,

22:49.260 --> 22:51.260
contrast,

22:51.260 --> 22:52.260
control,

22:52.260 --> 22:54.260
the device,

22:54.260 --> 22:55.260
so it's source,

22:55.260 --> 22:56.260
so if you're multiple,

22:56.260 --> 22:57.260
is there connected,

22:57.260 --> 22:58.260
you can,

22:58.260 --> 22:59.260
you'll be able to select,

22:59.260 --> 23:00.260
which is,

23:00.260 --> 23:01.260
there you want,

23:01.260 --> 23:03.260
to get data from,

23:03.260 --> 23:04.260
now,

23:04.260 --> 23:05.260
we can add,

23:05.260 --> 23:07.260
another configuration,

23:07.260 --> 23:08.260
like,

23:08.260 --> 23:09.260
frequency change,

23:09.260 --> 23:10.260
so we have input,

23:10.260 --> 23:13.260
we connect to a frequency parameter,

23:13.260 --> 23:15.260
and we can,

23:15.260 --> 23:18.260
set the cap,

23:18.260 --> 23:19.260
from main,

23:19.260 --> 23:20.260
now we can,

23:20.260 --> 23:22.260
set the cap,

23:22.260 --> 23:23.260
from main,

23:23.260 --> 23:24.460
firing tapes,

23:24.460 --> 23:25.260
a kilo,

23:25.260 --> 23:27.220
and every parameter you,

23:27.220 --> 23:28.220
you,

23:28.220 --> 23:29.260
you peak here,

23:29.260 --> 23:32.220
is saved in your configuration,

23:32.220 --> 23:36.260
so you can share what you experiment with others,

23:36.260 --> 23:37.260
and say,

23:37.260 --> 23:38.260
that application,

23:38.260 --> 23:40.260
in case you need,

23:40.260 --> 23:41.260
it to be used later,

23:41.260 --> 23:46.260
or the application have a JSON like structure.

23:46.260 --> 23:48.260
So we running this application,

23:48.260 --> 23:50.260
it has nothing,

23:50.260 --> 23:52.260
that's doing it with data,

23:52.260 --> 24:01.460
but we can see we get some data coming from WIP USB. So let's do something useful.

24:01.460 --> 24:18.900
At one, scene block, we can see, so we realize streaming. And we can connect with the

24:18.900 --> 24:26.300
applications, so if we can change for example sample rate, so we can get redraw our graph

24:26.300 --> 24:37.900
redraw according to change parameter frequency sample rate. So we add visualization UI and let's see.

24:37.900 --> 24:45.100
So it doesn't sound fancy at the moment, but you get the idea, you put a block and it appears

24:45.500 --> 24:52.700
the dynamic layout. The next stage you can edit a little layout. By default, it's so called

24:52.700 --> 25:04.300
grid layout, which is mostly in a window radio, but big added dynamic layout measures, I'll show

25:04.300 --> 25:12.500
you in a second. So every block you can extend to whatever, and for example, frequency,

25:12.500 --> 25:19.500
we extend frequency, sync, and now it occupies more grid. You can place whatever

25:19.500 --> 25:36.500
troll, like, in a formula application, that way. Okay, let's go to another. So if you didn't find any standard

25:36.500 --> 25:41.500
block on the platform, so you always can add through what some block through compiling

25:41.500 --> 25:48.500
anything, but other can just create custom block in the web. So you don't need to install

25:48.500 --> 26:02.500
update anything. So we just need a block name here. If you add a new, something like a

26:02.500 --> 26:11.500
encryption, and more important, we need to put parameters. So every block requires either input

26:11.500 --> 26:29.500
or output parameter. Sorry. Here we have, I accused them for complex float or complex integer.

26:29.500 --> 26:39.500
We can define multiple types supported for input. And we add output parameter with just float

26:39.500 --> 26:49.500
through to real data. So when we can add special parameter for configuration, for FMD

26:50.500 --> 26:59.500
we add modulation index. We can add as many parameters as we want. It'd be automatically

26:59.500 --> 27:10.500
inserted into your JavaScript environment. So we can add limitation, minimum, maximum

27:11.500 --> 27:19.500
step, if you're doing control and set the default value. So when we're done with definition,

27:19.500 --> 27:26.500
we can add actual code for this element. So in that element here, you see already

27:26.500 --> 27:35.500
template, so you can add some function. In for example, for FMD

27:35.500 --> 27:41.500
later, there is the function. It's pretty simple. I'm sure it gets a derivative from

27:41.500 --> 27:56.500
get the angle. So, yeah. We are not stopping developing the platform. So we are looking

27:56.500 --> 28:05.500
how to add more functionality, definitely we are looking how to add web GPU support,

28:05.500 --> 28:11.500
user programs, execution, web GPU, a plan to add more transport, especially web

28:11.500 --> 28:21.500
transport, that is more optimized for little latency. You can add more blocks. And if there's

28:21.500 --> 28:30.500
any interesting service integration of the looking out, how to add the external service

28:30.500 --> 28:41.500
and other real chosen codes to support like LTO 5G in the browser application. So thank

28:41.500 --> 28:48.500
you for the time and there's a couple projects on CrowdSupply. You can support us

28:48.500 --> 28:55.500
by backing this or you can support participating and you see our development. If you

28:55.500 --> 29:02.500
have any idea, any suggestions for your ideas in our discord channel or for the email.

29:02.500 --> 29:03.500
Thank you.

