1
00:00:02,010 --> 00:00:02,630
Hello.

2
00:00:02,630 --> 00:00:07,230
Welcome again to the course analyzing and
processing for music applications.

3
00:00:07,230 --> 00:00:12,960
This week, we are talking about sound and
music description in the theory lectures.

4
00:00:12,960 --> 00:00:18,030
We talked about how to analyze sounds and
obtain some features based on

5
00:00:18,030 --> 00:00:23,910
spectral analysis or on the things that we
have been talking all along this course,

6
00:00:23,910 --> 00:00:28,460
but specifically to describe
large collections of sounds.

7
00:00:28,460 --> 00:00:32,660
So the idea of obtaining features with
which then you can measure the similarity

8
00:00:32,660 --> 00:00:37,380
between sounds or we can cluster sounds or
we can classify Identify sounds.

9
00:00:37,380 --> 00:00:43,090
And we mentioned about Essentia,
the software library tool

10
00:00:43,090 --> 00:00:49,290
that we're going to be using in this week,
and also a little bit next week.

11
00:00:49,290 --> 00:00:54,010
So, let's talk a little bit about
Essentia and how to install it,

12
00:00:54,010 --> 00:00:58,470
and how to use it in some simple examples.

13
00:00:58,470 --> 00:01:00,495
Okay.
So, you can go to the website of

14
00:01:00,495 --> 00:01:05,440
Essentia,Essentia.upf.edu and

15
00:01:05,440 --> 00:01:10,370
in here you can find a lot of
the documentation, where to download it?

16
00:01:10,370 --> 00:01:15,620
Things that have been done with
Essentia and other related information.

17
00:01:15,620 --> 00:01:22,340
So, again, Essentia is an open source
C++ library that has been developed

18
00:01:22,340 --> 00:01:27,170
thinking about audio analysis and
audio based music information retrieval.

19
00:01:27,170 --> 00:01:30,860
So, the idea of describing sounds and
music.

20
00:01:30,860 --> 00:01:34,610
And it's an open software project.

21
00:01:34,610 --> 00:01:39,240
So, it's the license is a fero gpl.

22
00:01:39,240 --> 00:01:42,630
And it has quite a few things.

23
00:01:42,630 --> 00:01:45,340
It has a whole bunch of algorithms, and

24
00:01:45,340 --> 00:01:50,290
a whole bunch of ways to
extract features from sounds.

25
00:01:50,290 --> 00:01:56,190
But also we have a whole bunch of
utilities that makes that quite easy.

26
00:01:56,190 --> 00:02:00,470
So, it can facilitate our programming off

27
00:02:00,470 --> 00:02:03,560
more complex ways of
extracting this features.

28
00:02:03,560 --> 00:02:09,050
So for example,
this is a blog diagram of a series of

29
00:02:09,050 --> 00:02:15,760
algorithms that have been put together
using this Cynthia facilities.

30
00:02:15,760 --> 00:02:18,340
And therefore, we can easily and

31
00:02:18,340 --> 00:02:24,320
efficiently generate these types
of descriptives of sounds.

32
00:02:24,320 --> 00:02:26,220
It uses Python quite a bit.

33
00:02:26,220 --> 00:02:33,590
In fact, it has a good support for Python
for wrapping this C++ library with Piton.

34
00:02:33,590 --> 00:02:39,890
So we get the benefit of an efficient
library, an efficient C++ implementation.

35
00:02:39,890 --> 00:02:43,560
And at the same time, a quite easy and

36
00:02:43,560 --> 00:02:49,030
convenient Python framework that
can be used to call the C++.

37
00:02:49,030 --> 00:02:54,890
So the first thing that we should
do is just go to the download page.

38
00:02:55,900 --> 00:03:02,800
Okay, and it's in Github, so you can find
the source code in Github and also there

39
00:03:02,800 --> 00:03:08,190
is some accompanying software that you
might use, which is this Gaia software.

40
00:03:08,190 --> 00:03:12,090
The, it supports Debian and Ubunto and

41
00:03:12,090 --> 00:03:17,400
also Mac OSX even though, of course
in this class, we are going to use

42
00:03:17,400 --> 00:03:22,730
the Ubunto version And
show examples using Ubuntu.

43
00:03:22,730 --> 00:03:27,430
So, if we go to the essentia GitHub page.

44
00:03:27,430 --> 00:03:31,780
Okay, so
here is all the source code of Essentia,

45
00:03:31,780 --> 00:03:36,530
that's a pretty large piece of subwork.

46
00:03:36,530 --> 00:03:38,780
So to install it,

47
00:03:38,780 --> 00:03:44,050
the normal way when you want to really
keep updated on these things and

48
00:03:44,050 --> 00:03:49,820
not have to reinstall it every
time is to use this clone URL.

49
00:03:49,820 --> 00:03:53,110
So, we can copy this URL.

50
00:03:53,110 --> 00:03:56,870
Okay, and now we go to the terminal.

51
00:03:56,870 --> 00:04:04,190
We can go to a specific directory or,
I guess I have the TNP directory.

52
00:04:04,190 --> 00:04:09,050
And I will clone the repository
into my machine.

53
00:04:09,050 --> 00:04:16,170
So I will type Clone, and I just put
the http address of the repository.

54
00:04:17,490 --> 00:04:21,860
And now we'll start copying
everything into my computer.

55
00:04:21,860 --> 00:04:26,879
That might take a little bit,
because that's a quite large library.

56
00:04:27,970 --> 00:04:34,110
So, maybe let's just stop it, because I
already copied so I will stop it here.

57
00:04:34,110 --> 00:04:42,390
And now I will go to the place where
I already copied this library.

58
00:04:42,390 --> 00:04:49,270
So, I have here all the structure
of what I copied that is in GitHub.

59
00:04:50,370 --> 00:04:52,100
Okay.
Now in order to,

60
00:04:52,100 --> 00:04:55,110
we have to compile it and install it.

61
00:04:55,110 --> 00:05:02,440
So for that we can go back
to the Essentia website.

62
00:05:02,440 --> 00:05:10,350
And within the documentation there is,
well explanations about again what it is.

63
00:05:10,350 --> 00:05:13,590
And then in user documentation,

64
00:05:13,590 --> 00:05:17,360
there is a section on building and
installing Essentia.

65
00:05:18,930 --> 00:05:21,460
Okay?
So once we have downloaded,

66
00:05:21,460 --> 00:05:26,930
there is quite a few dependence
of libraries that they use,

67
00:05:26,930 --> 00:05:33,400
like the FFTW or FFM Beck for
holding audio in and out.

68
00:05:33,400 --> 00:05:36,220
For changing something great, etc, etc.

69
00:05:36,220 --> 00:05:42,260
So, we have to install
of these dependencies,

70
00:05:42,260 --> 00:05:50,370
so we will just copy this complete line,
and we go there.

71
00:05:50,370 --> 00:05:54,590
And we can just, we are in our home page.

72
00:05:54,590 --> 00:06:00,187
And we just type sudo and we get all of
these dependencies that may be needed,

73
00:06:00,187 --> 00:06:04,918
so I have to type the password
because we're doing at a superuser

74
00:06:08,202 --> 00:06:12,741
Okay, and well I had it installed already,
so it just checks and

75
00:06:12,741 --> 00:06:16,130
it sees that everything is there.

76
00:06:16,130 --> 00:06:23,320
Okay, then if I want to use Python,
and I want to use these wrapper for

77
00:06:23,320 --> 00:06:28,870
Python, it needs also
some Python packages.

78
00:06:28,870 --> 00:06:32,870
But in fact, I believe these
package were already installed,

79
00:06:32,870 --> 00:06:35,880
because these are the ones that
are used by the SMS tools,

80
00:06:35,880 --> 00:06:39,620
NumPy and the development, and NumPy.

81
00:06:39,620 --> 00:06:43,110
But we can just make sure that are there.

82
00:06:43,110 --> 00:06:44,829
So, we just do sudo.

83
00:06:46,610 --> 00:06:51,090
Yes everything is there, so
no need to install anything else.

84
00:06:51,090 --> 00:06:52,040
Okay, let's continue.

85
00:06:52,040 --> 00:06:59,830
Well there is the instructions for
Mac OS X and now there is instructions for

86
00:06:59,830 --> 00:07:04,270
Compiling Essentia okay, and
this is what we need now.

87
00:07:04,270 --> 00:07:07,260
So we have to first configure,

88
00:07:08,380 --> 00:07:13,890
all the structure of the library
in order to decompile.

89
00:07:13,890 --> 00:07:22,540
So, we are using these
wav compilation tool.

90
00:07:22,540 --> 00:07:27,560
And again, we can copy that and
we can go to our

91
00:07:27,560 --> 00:07:32,280
essentia directory, that's here.

92
00:07:33,600 --> 00:07:35,180
That's where we have all of our.

93
00:07:35,180 --> 00:07:41,570
And now we again can figure out
what needs to be configured.

94
00:07:43,370 --> 00:07:48,130
And it will check everything,
it checks if everything is there, and

95
00:07:48,130 --> 00:07:52,150
it says yes, it's fine,
it has been configured.

96
00:07:52,150 --> 00:07:57,808
And now we have to compile it,
and to compile it,

97
00:07:57,808 --> 00:08:04,714
we just have to type this
compilation instruction, okay?

98
00:08:04,714 --> 00:08:08,833
And this will go through
all the directories,

99
00:08:08,833 --> 00:08:15,920
all what needs to be compiled, all the C
files and compile them as object files.

100
00:08:16,980 --> 00:08:23,040
Okay, so it's building everything and
again, this may take quite a bit

101
00:08:23,040 --> 00:08:29,320
because it's a pretty large library.

102
00:08:29,320 --> 00:08:34,880
So let's stop here because in fact
I already have compiled all this,

103
00:08:34,880 --> 00:08:39,950
so let's stop it and
we can just continue this.

104
00:08:39,950 --> 00:08:44,510
So we have compile it,
then we need to install so

105
00:08:44,510 --> 00:08:50,720
that all the Python bindings I
can find all the information.

106
00:08:52,310 --> 00:08:56,950
And we can, well there is some,
you can run some tests or

107
00:08:56,950 --> 00:09:00,660
you can run the Python test or
you can generate the documentation.

108
00:09:00,660 --> 00:09:04,700
The documentation is basically the same
documentation that we have here,

109
00:09:06,570 --> 00:09:09,780
okay, so that's done.

110
00:09:09,780 --> 00:09:15,962
And then in this directory, again,
we have everything compile and

111
00:09:15,962 --> 00:09:21,384
we will have the directory where
we have all the binaries and

112
00:09:21,384 --> 00:09:25,191
we have everything else ready to be used.

113
00:09:28,186 --> 00:09:31,737
Now we can go back to
the documentation and

114
00:09:31,737 --> 00:09:38,190
start looking at some documentation for
actually using Essentia.

115
00:09:38,190 --> 00:09:41,880
So in here there is some tutorials and

116
00:09:41,880 --> 00:09:45,560
the one I recommend is this
Python tutorial for beginners.

117
00:09:45,560 --> 00:09:50,640
So this is a tutorial that
explains how to use Python

118
00:09:50,640 --> 00:09:54,942
as a way to call all these
Essentia algorithms.

119
00:09:54,942 --> 00:09:58,330
So if you go through that,

120
00:09:58,330 --> 00:10:03,050
you will see pieces of code
that you can basically copy.

121
00:10:03,050 --> 00:10:08,010
And by following that,
you will be able to do some analysis of

122
00:10:08,010 --> 00:10:13,350
some sounds but let us do our own example.

123
00:10:13,350 --> 00:10:19,430
So, in this text file
I have a piece of code

124
00:10:19,430 --> 00:10:25,035
that is basically the one
that I use in the theory

125
00:10:25,035 --> 00:10:30,160
lecture that I use to compute the MFCC's,
so

126
00:10:30,160 --> 00:10:36,920
in fact you can see this code exactly
in the plots from the lectures.

127
00:10:36,920 --> 00:10:44,049
But now let's explain what it is so
that you can actually do it yourself.

128
00:10:45,760 --> 00:10:51,888
So it's Python file that has
the standard import packages the Numpy,

129
00:10:51,888 --> 00:10:59,928
the Matplotlib and the one that now
is specific for Essentia is this one.

130
00:10:59,928 --> 00:11:06,860
So the Essentia has been compiled, so
Python will be able to find this package.

131
00:11:06,860 --> 00:11:10,310
We are not importing the whole Essentia,
we are just importing

132
00:11:10,310 --> 00:11:15,300
one of the packages within Essentia which
is what we call the standard package.

133
00:11:15,300 --> 00:11:19,804
There is also another package which is
meant to be more efficient for streaming,

134
00:11:19,804 --> 00:11:22,140
it's the streaming package.

135
00:11:22,140 --> 00:11:26,140
But we're not going to use that, we're
going to use this more standard package.

136
00:11:27,400 --> 00:11:32,890
Okay, and then, well, we have some
intialization of some variables that will

137
00:11:32,890 --> 00:11:39,720
be used for the analysis, we have seen all
that, so no need to now talk about that.

138
00:11:39,720 --> 00:11:44,850
The Core of Essentia
starts now here in which

139
00:11:44,850 --> 00:11:49,718
we are initializing the algorithms
that we will be using.

140
00:11:49,718 --> 00:11:55,520
Essentia is been written C plus plus,

141
00:11:55,520 --> 00:12:00,200
so it's a collection of classes,
every algorytm is a class and

142
00:12:00,200 --> 00:12:05,050
this is in the sort of
object oriented approach.

143
00:12:05,050 --> 00:12:10,980
So in order to use an algorithm, we
first have to instantiate the algorithm,

144
00:12:10,980 --> 00:12:17,020
and give it a name, so here we
are instantiating the class spectrum.

145
00:12:18,080 --> 00:12:23,820
Okay, we instantiate it with
an initialization, the size of the FFT,

146
00:12:23,820 --> 00:12:27,491
size N,
which we have here declared as 1,024.

147
00:12:28,570 --> 00:12:33,260
And now the variable spectrum
has an instance of the spectrum

148
00:12:34,700 --> 00:12:37,020
and we do the same thing for windowing.

149
00:12:37,020 --> 00:12:40,200
So there is an algorithm for
windowing in Essentia and

150
00:12:40,200 --> 00:12:44,200
we initialize it with a given
window size and a given type.

151
00:12:44,200 --> 00:12:48,940
And therefore window now is an instance
of this windowing algorithm,

152
00:12:49,940 --> 00:12:53,830
and again, the same thing for
the MFCC algorithm.

153
00:12:53,830 --> 00:12:57,950
The MFCC algorithm can be initialized
with different parameters, and

154
00:12:57,950 --> 00:13:01,900
here we initialize with the number of
coefficient that we will be using and

155
00:13:01,900 --> 00:13:06,770
the size of the spectrum
that will be required.

156
00:13:06,770 --> 00:13:12,440
So these MFCC's are is the now
the instance of this algorithm.

157
00:13:13,850 --> 00:13:18,180
And one very very useful set of tools from

158
00:13:19,330 --> 00:13:24,820
Essentia Is the way to read audio files.

159
00:13:24,820 --> 00:13:28,510
In this case we are using
an algorithm called mono loader and

160
00:13:28,510 --> 00:13:33,580
this is an algorithm that accepts
any type of file format or

161
00:13:33,580 --> 00:13:37,330
at least a wide variety of file formats.

162
00:13:37,330 --> 00:13:40,989
And then by specifying the sampling rate

163
00:13:42,140 --> 00:13:46,340
It returns a mono file independently,

164
00:13:46,340 --> 00:13:50,270
if it was a stereo or even more channels,
it returns a mono file.

165
00:13:50,270 --> 00:13:54,590
It returns it with something
they didn't specify, and

166
00:13:54,590 --> 00:13:58,652
it returns it as a set of samples, so

167
00:13:58,652 --> 00:14:03,710
x is our array of samples
of the input sound.

168
00:14:04,856 --> 00:14:09,970
Okay, then we initialize
the output array or matrix

169
00:14:09,970 --> 00:14:15,650
where we will store the coefficients, and
the core of the computation comes now.

170
00:14:16,660 --> 00:14:22,540
Okay so we will be iterating over the
sound computing the spectrum windowing and

171
00:14:22,540 --> 00:14:24,390
then computing the MFCC's.

172
00:14:24,390 --> 00:14:30,850
And in Essentia is amazingly compact
with these four lines we are able to do

173
00:14:30,850 --> 00:14:36,750
all that, so one of the core
algorithms here is the frame generator.

174
00:14:36,750 --> 00:14:41,890
This is an algorithm that
automatically iterates

175
00:14:41,890 --> 00:14:47,680
over the array x with a given frameSize,

176
00:14:47,680 --> 00:14:52,940
with a given hopSize and also there
are several parameters of how we actually

177
00:14:52,940 --> 00:14:56,450
placed these windows in the sound.

178
00:14:56,450 --> 00:15:02,170
And then these returns then frame,
okay, frame will keep

179
00:15:02,170 --> 00:15:08,470
having the samples of that particular
frame that we have chosen.

180
00:15:08,470 --> 00:15:15,010
So now frame, we'll keep having
the different values of our frame and

181
00:15:15,010 --> 00:15:20,200
therefore the window here
now will accept the frame.

182
00:15:20,200 --> 00:15:23,560
And then, we can put it within
the spectrum automatically.

183
00:15:23,560 --> 00:15:29,560
So, okay, so the spectrum will be
computed from the windowed frame signal.

184
00:15:29,560 --> 00:15:37,082
And mX spectrum returns just the magnitude
spectrum and then this is what it is,

185
00:15:37,082 --> 00:15:42,821
the positive magnitude spectrum
of this particular frame.

186
00:15:42,821 --> 00:15:46,861
And now we can compute the MFCC's, so

187
00:15:46,861 --> 00:15:55,574
the MFCC's again now is this object that
accepts the array of magnitude values and

188
00:15:55,574 --> 00:15:59,489
it returns both the coefficients And

189
00:15:59,489 --> 00:16:06,840
also in fact it returns the bands of
the nfcc if we wanted to use that.

190
00:16:06,840 --> 00:16:11,390
But for us, what we are interested
in is the coefficients.

191
00:16:12,820 --> 00:16:18,240
And since this is being computed at
every frame, we need to append to

192
00:16:18,240 --> 00:16:23,090
an existing initialized
to the empty array and

193
00:16:23,090 --> 00:16:27,530
then you will keep appending and
create a metrics for that.

194
00:16:27,530 --> 00:16:31,974
And finally, in order to be able
to visualize with the plot or

195
00:16:31,974 --> 00:16:37,552
to be able to pass to something else,
it's good to convert to a numpy array so

196
00:16:37,552 --> 00:16:42,016
that we can have all the numpy
possibilities to handle that.

197
00:16:42,016 --> 00:16:47,315
So now if we go to the directory
where this file is and

198
00:16:47,315 --> 00:16:52,180
I believe it's in sms tools work space.

199
00:16:52,180 --> 00:16:56,050
Okay so here I had the nfcc.py.

200
00:16:56,050 --> 00:17:00,950
And I start with python
with pylab if I want

201
00:17:00,950 --> 00:17:05,580
to use the matplotlib automatically.

202
00:17:06,820 --> 00:17:13,600
Okay, and
now I'll basically can execute this file.

203
00:17:13,600 --> 00:17:19,233
So I can just run nfcc.py and

204
00:17:19,233 --> 00:17:26,740
this will have computed the nfccs.

205
00:17:26,740 --> 00:17:31,474
So now if we type in nfccs, this array,

206
00:17:31,474 --> 00:17:36,494
well these metrics of all the coefficient

207
00:17:36,494 --> 00:17:41,840
at every frame throughout the sound.

208
00:17:41,840 --> 00:17:47,092
So, in fact now if I do pcolormesh this

209
00:17:47,092 --> 00:17:52,182
plotting function of matplotlib and

210
00:17:52,182 --> 00:18:02,010
I give it nfccs it will show
the coefficients that it has computed.

211
00:18:02,010 --> 00:18:07,090
So here we see horizontally
as the coefficients,

212
00:18:07,090 --> 00:18:14,180
the 12 coefficients as well with a zero
and then here is the frame location.

213
00:18:14,180 --> 00:18:18,892
So this blue line is the zero's
coefficient, then we have the first,

214
00:18:18,892 --> 00:18:20,410
etc, etc.

215
00:18:20,410 --> 00:18:22,790
So that's pretty good, pretty useful.

216
00:18:22,790 --> 00:18:29,070
And in order to understand how
to call any of these algorithms,

217
00:18:29,070 --> 00:18:35,330
what we have to do is go to
the Essentia documentation.

218
00:18:36,430 --> 00:18:41,519
And go to the algorithm section,
there is the algorithm reference.

219
00:18:42,930 --> 00:18:51,492
And in here, you will see all
the algorithms that Essentia has, okay?

220
00:18:57,901 --> 00:19:03,730
Okay, so here we have as I mentioned
we have two packages in Essentia.

221
00:19:03,730 --> 00:19:05,610
One is the standard algorithm,

222
00:19:05,610 --> 00:19:10,400
the standard package that's the one we're
using and the other is the streaming one.

223
00:19:10,400 --> 00:19:15,620
So in here in the standard one we have
all the algorithms that are currently

224
00:19:15,620 --> 00:19:17,420
Implemented in Essentia.

225
00:19:17,420 --> 00:19:22,460
And for example, if we go to any of
the ones that we were talking about.

226
00:19:22,460 --> 00:19:26,730
For example, the windowing one,
we just go here and

227
00:19:26,730 --> 00:19:32,410
it gives me the input, output and
the parameters that this function accepts.

228
00:19:32,410 --> 00:19:39,030
And also very importantly It gives us a
link to where this algorithm comes from or

229
00:19:39,030 --> 00:19:44,590
what we use as the implementation for

230
00:19:44,590 --> 00:19:48,050
this version of this algorithm.

231
00:19:48,050 --> 00:19:53,470
And of course, you can find all
of them here, that's pretty good.

232
00:19:55,290 --> 00:20:00,020
Now let's go back to documentation and
talk about something else.

233
00:20:00,020 --> 00:20:03,270
Something another feature of Essentia.

234
00:20:03,270 --> 00:20:08,390
We have been talking about
the algorithms that are included in

235
00:20:08,390 --> 00:20:14,070
Essentia and that we can use and
write Phyton wrappers to call them.

236
00:20:14,070 --> 00:20:19,150
But there's also the idea
of complete extractors.

237
00:20:19,150 --> 00:20:26,750
So sort of extractors that have been
developing a way that are useful for

238
00:20:26,750 --> 00:20:30,650
some particular applications and
that extract a whole bunch of things.

239
00:20:30,650 --> 00:20:33,130
So extract the whole bunch
of these features and

240
00:20:33,130 --> 00:20:38,380
then we have a binary quite
efficient quote that can be use.

241
00:20:38,380 --> 00:20:42,690
So for example these are some of
the extractors that are already

242
00:20:42,690 --> 00:20:44,330
available in Essentia.

243
00:20:44,330 --> 00:20:49,420
And there is one that is in fact
this streaming extractor free sound.

244
00:20:49,420 --> 00:20:54,650
And this is the extractor
that the free sound uses

245
00:20:54,650 --> 00:21:00,160
to extract low level and other type
of features from every single sound,

246
00:21:00,160 --> 00:21:05,390
and then is the core of this
similarity engine that we showed.

247
00:21:06,780 --> 00:21:12,820
And all these extractors are in this built
source examples directory of Essentia.

248
00:21:12,820 --> 00:21:18,410
So if we go to the file browser,
this is the Essentia directory.

249
00:21:18,410 --> 00:21:25,650
And we go to build, we go to source,
src and examples, okay.

250
00:21:25,650 --> 00:21:28,630
And here we have a whole
bunch of extracting but

251
00:21:28,630 --> 00:21:31,630
more than the ones that
are into documentation.

252
00:21:31,630 --> 00:21:37,920
So these are have been already
compiled and we can just use them.

253
00:21:37,920 --> 00:21:44,380
So here there is binary of the streaming
extractor freesound and we can just copy.

254
00:21:44,380 --> 00:21:48,880
And if we go to the directory
where we work from,

255
00:21:48,880 --> 00:21:52,570
this SMS tools workspace.

256
00:21:52,570 --> 00:21:58,890
I already in fact have this binary there,
the streaming extractor free sound.

257
00:21:58,890 --> 00:22:02,490
And I can just then use it.

258
00:22:02,490 --> 00:22:08,770
I can just copy it.

259
00:22:08,770 --> 00:22:16,070
Okay, and I can execute it, and
I can give as input the name of a sound.

260
00:22:16,070 --> 00:22:20,170
So here the sounds are in
the sounds directory.

261
00:22:20,170 --> 00:22:26,630
So sounds, and maybe let's take
the sound of rain, okay, rain.wav.

262
00:22:26,630 --> 00:22:30,680
Maybe let's make it so
that we see it better.

263
00:22:30,680 --> 00:22:36,320
And then we put an output file,
let's just give it the name of rain.

264
00:22:36,320 --> 00:22:40,770
Okay, now we execute it, and that's it.

265
00:22:40,770 --> 00:22:44,270
It went very quick so
it created two files.

266
00:22:44,270 --> 00:22:48,390
It created adjacent file and a XML file.

267
00:22:48,390 --> 00:22:54,260
That are the files that include
all the results of the analysis.

268
00:22:54,260 --> 00:23:00,450
So if we now go to the editor and
open this file, for example the JSON file,

269
00:23:01,550 --> 00:23:05,986
this is a particular format
that is quite standard.

270
00:23:05,986 --> 00:23:14,050
And in which we have all what we
have extracted from this rain sound.

271
00:23:14,050 --> 00:23:18,080
And well there's a lot of numbers but

272
00:23:18,080 --> 00:23:23,100
it's pretty good information for a lot of
the things that we will be talking about.

273
00:23:23,100 --> 00:23:27,910
Even it attempted to extract
the keys of these rain sound

274
00:23:27,910 --> 00:23:31,220
throughout the duration of the sound.

275
00:23:32,300 --> 00:23:35,670
But anyway, we will be talking

276
00:23:35,670 --> 00:23:41,270
more about this in the next
programming class of how to use this.

277
00:23:41,270 --> 00:23:44,400
Okay, so
now we go back to the documentation.

278
00:23:45,800 --> 00:23:49,640
Here, we see other extractors that
are going to be quite useful and

279
00:23:49,640 --> 00:23:51,830
we will be talking about.

280
00:23:51,830 --> 00:23:54,614
One is this streaming extractor music.

281
00:23:54,614 --> 00:24:01,470
And this will be very much useful for
analyzing pieces of music.

282
00:24:01,470 --> 00:24:04,570
And we'll talk about that next week, and

283
00:24:04,570 --> 00:24:08,770
in fact this is the one that acoustic
brains, which is an initiative

284
00:24:08,770 --> 00:24:13,733
we started recently uses to automatically
extract these scriptures from music.

285
00:24:15,000 --> 00:24:18,950
And that's all I wanted to say,
so let's go back here.

286
00:24:18,950 --> 00:24:24,160
So we made an introduction to Essentia and

287
00:24:24,160 --> 00:24:28,860
we are able to download and
compile Essentia from GitHub.

288
00:24:30,020 --> 00:24:34,380
And that's in Linux is quite is easy,
it's quite straightforward.

289
00:24:34,380 --> 00:24:42,010
And we talked quite a few things about
the features of Essentia, what we can do?

290
00:24:42,010 --> 00:24:49,287
And we then ended by talking about
the extractor that freesound users and

291
00:24:49,287 --> 00:24:54,970
that can be used to generate a whole
bunch of descriptors of all the sounds.

292
00:24:54,970 --> 00:24:58,870
And then we will be able to use for
quite a lot of things.

293
00:24:58,870 --> 00:25:01,100
So that was all.

294
00:25:01,100 --> 00:25:07,280
Hopefully you got a little bit of
a very introductory view to Essentia.

295
00:25:07,280 --> 00:25:10,860
That's a quite complex library.

296
00:25:10,860 --> 00:25:17,510
And it can be quite complicated to use in
terms of all the features that it has.

297
00:25:17,510 --> 00:25:24,620
But it has an easy way in, and so we can
start using it with simple examples.

298
00:25:24,620 --> 00:25:30,970
And we will see in the next programming
lecture how powerful it is for

299
00:25:30,970 --> 00:25:36,620
doing some interesting sound description,
and describing collections of sounds.

300
00:25:36,620 --> 00:25:40,490
So thank you very much, and
I will see you on next class.

301
00:25:40,490 --> 00:25:40,990
Bye-bye.
