Skip to content

Commit ea60872

Browse files
author
Ethan Manilow
committed
Adding some small changes.
1 parent c93e70b commit ea60872

File tree

8 files changed

+59
-46
lines changed

8 files changed

+59
-46
lines changed

book/_toc.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,5 +49,6 @@
4949
chapters:
5050
- file: zzz_refs
5151
- file: appendix/resources
52+
- file: appendix/cite_this
5253
- file: appendix/acknowledgements
5354
- file: appendix/authors

book/appendix/acknowledgements.md

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ contributed their time and expertise to the open source projects that we
99
showcase. We want use this page to acknowledge the great work that they have
1010
done.
1111

12-
13-
### Primary Resources
14-
1512
### nussl
1613

1714
- Ethan Manilow
@@ -74,3 +71,18 @@ The authors have used the following images from the [Noun Project](https://theno
7471
- "piano keyboard" by b farias
7572

7673

74+
## Special Thanks
75+
76+
The authors want to acknowledge the many members of the community who graciously
77+
let us use parts of their work in this book. Their names are placed throughout
78+
the text.
79+
80+
We also want to thank these people, without whom we would not be able to write
81+
this book:
82+
83+
- Bryan Pardo
84+
- Jonathan Le Roux
85+
- Gordon Wichern
86+
87+
88+

book/appendix/cite_this.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Cite this Book
2+
3+
If you wish to reference this book in your own work, we ask that you
4+
use the following `bibtex` entry:
5+
6+
```
7+
@misc{opensourceseparation,
8+
author = {Ethan Manilow and
9+
Prem Seetharman and
10+
Justin Salamon},
11+
title = {Open Source Tools & Data for Music Source Separation},
12+
month = oct,
13+
year = 2020,
14+
url = {https://source-separation.github.io/tutorial/}
15+
}
16+
```

book/basics/evaluation.ipynb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,10 @@
9595
"```{note}\n",
9696
"As of this writing (October 2020), the best reported SDR for singing\n",
9797
"voice separation on MUSDB18 is $7.24 dB$. {cite}`takahashi2020d3net`\n",
98+
"Recent research papers have been reporting vocal SDRs on MUSDB18\n",
99+
"in the range of 6-7 dB.\n",
100+
"Compare the SDR of different systems at this\n",
101+
"[Papers with Code link.](https://paperswithcode.com/sota/music-source-separation-on-musdb18)\n",
98102
"```\n",
99103
"\n",
100104
"\n",

book/images/basics/circle_phase.gif

72.7 KB
Loading

book/intro/open_src_projects.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ their research papers. In the era of deep learning, the trained models are also
108108
sometimes released. Here is a non-exhaustive list of some recent open source
109109
projects. We have prioritized open source projects with code and downloadable
110110
trained models by the original authors of the research papers described.
111+
[Papers With Code](https://paperswithcode.com/task/music-source-separation) also
112+
has a nice section on many of these methods.
111113

112114
We will discuss some of these architectures in more detail in later sections,
113115
but here we will provide some highlights and links to their Github repositories,

book/landing.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Open-Source Tools & Data for Music Source Separation
1+
Open Source Tools & Data for Music Source Separation
22
====================================================
33

44
**By Ethan Manilow, Prem Seetharaman, and Justin Salamon**

common/image_maker.py

Lines changed: 20 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ def plot_phase():
203203

204204

205205

206-
def make_phase_cirlce():
206+
def make_phase_circle():
207207
"""Adapted from: https://commons.wikimedia.org/wiki/File:Phase_shifter_using_IQ_modulator.gif"""
208208
# for t in range(0, 356, 5):
209209
@gif.frame
@@ -220,13 +220,13 @@ def plt_set(t):
220220
y = 1 * np.sin(0.0174533 * t)
221221

222222
# creating I, Q, I+Q amplitude and Phase (0° to 720°) for WAVE DIAGRAM
223-
x2 = np.linspace(0, 721, 400) # Pahse from 0° to 720° divided into 400 points
224-
y2 = 1 * np.sin(0.0174533 * t) * np.sin(0.0174533 * x2) # Q
225-
z2 = 1 * np.cos(0.0174533 * t) * np.cos(0.0174533 * x2) # I
226-
q2 = (y2 + z2) # (I+Q)
223+
x2 = np.linspace(0, 721, 400) # Phase from 0° to 720° divided into 400 points
224+
y2 = 1 * np.sin(0.0174533 * t + np.pi) * np.sin(0.0174533 * x2 + np.pi) # Q
225+
z2 = 1 * np.cos(0.0174533 * t + np.pi) * np.cos(0.0174533 * x2 + np.pi) # I
226+
q2 = np.sin(0.0174533 * (x2 + t))
227227

228228
# creating text to show current phase t
229-
text1 = "phase = " + str(t) + '°'
229+
text1 = f'phase = {t}°'
230230

231231
# II) CREATING THE PLOT (phasor and wave diagram in one plot arranged 1 x 2)
232232

@@ -264,26 +264,26 @@ def plt_set(t):
264264

265265
# Setting the y axis ticks at (-1,-0.5,0,0.5,1)
266266
ax1.set_yticks([-1, -0.5, 0, 0.5, 1])
267+
ax1.set_xticks([-1, -0.5, 0, 0.5, 1])
268+
ax1.set_ylim(-1.1, 1.1)
269+
ax1.set_xlim(-1.1, 1.1)
267270

268271
# Creating Arrows and dashed lines
269272
ax1.arrow(0, 0, x, y, length_includes_head='True', head_width=0.05, head_length=0.1,
270273
color='g') # I+Q
271-
# ax1.arrow(0, 0, x, 0, length_includes_head='True', head_width=0.05, head_length=0.1,
272-
# color='b') # I
273-
# ax1.arrow(0, 0, 0, y, length_includes_head='True', head_width=0.05, head_length=0.1,
274-
# color='r') # Q
275274
ax1.arrow(x, 0, 0, y, length_includes_head='True', head_width=0, head_length=0,
276275
ls='-.') # vertical dashed lines
277-
ax1.arrow(0, y, x, 0, length_includes_head='True', head_width=0, head_length=0,
278-
ls='-.') # Horizontal dashed lines
276+
# ax1.arrow(0, y, x, 0, length_includes_head='True', head_width=0, head_length=0,
277+
# ls='-.') # Horizontal dashed lines
279278

280279
# II-B) WAVE DIAGRAM
281280

282281
# setting the y axis limit
283-
ax2.set_ylim(-1.5, 1.5)
282+
ax2.set_ylim(-1.1, 1.1)
284283

285284
# Setting the y axis ticks at (0, 180, 360, 540, 720) degree phase
286285
ax2.set_xticks([0, 180, 360, 540, 720])
286+
ax2.set_yticks([-1, -0.5, 0, 0.5, 1])
287287
# ax2.set_xlim(0, 720)
288288

289289
# Setting the position of the x and y axis
@@ -298,38 +298,16 @@ def plt_set(t):
298298
ax2.set_xlabel('Phase (degree)', labelpad=0)
299299
ax2.set_ylabel('Amplitude', labelpad=0)
300300

301-
# Plotting I, Q and I+Q waves
302-
# ax2.plot(x2, z2, 'b', label='I', linewidth=0.5)
303-
# ax2.plot(x2, y2, 'r', label='Q', linewidth=0.5)
304-
ax2.plot(x2, q2, 'g', label='I+Q')
305-
306-
# function for amplitude of I+Q green arrow
307-
c1 = 1 * np.cos(0.0174533 * t) * np.cos(0.0174533 * t) + 1 * np.sin(0.0174533 * t) * np.sin(
308-
0.0174533 * t)
309-
310-
# plotting I+Q arrow that moves along to show the current phase
311-
# ax2.arrow(t, 0, 0, c1, length_includes_head='True', head_width=10, head_length=0.07,
312-
# color='g')
313-
314-
# plotting I and Q amplitude arrows at position 180° and 90° respectively
315-
# ax2.arrow(180, 0, 0, 1 * np.cos(0.0174533 * t) * np.cos(0.0174533 * 180),
316-
# length_includes_head='True', head_width=10, head_length=0.07, color='b')
317-
# ax2.arrow(90, 0, 0, 1 * np.sin(0.0174533 * t) * np.sin(0.0174533 * 90),
318-
# length_includes_head='True', head_width=10, head_length=0.07, color='r')
319-
320-
# Creating legend
321-
# ax2.legend(loc='center', ncol=3, bbox_to_anchor=[0.5, 0.94])
301+
# plot sine wave
302+
ax2.plot(x2, q2, 'g')
322303

323304
# Adjusting the relative position of the subplots inside the figure
324305
fig.subplots_adjust(left=0.07, bottom=0.15, right=None, top=None, wspace=0.3, hspace=None)
306+
# plt.tight_layout()
325307

326-
# # Saving the figure
327-
# fig.savefig('0file%s.png' % t)
328-
329-
# Clearing the figure for the next iteration
330-
# fig.clf()
331-
308+
# plt.show()
332309

310+
# plt_set(90.0)
333311
frames = [plt_set(t) for t in range(0, 356, 5)]
334312
gif.save(frames, 'book/images/basics/circle_phase.gif', duration=5.0)
335313

@@ -403,8 +381,8 @@ def main():
403381
# plot_lineary_spec()
404382
# plot_mely_spec()
405383
# plot_phase()
406-
# make_phase_cirlce()
407-
phase_intersect()
384+
make_phase_circle()
385+
# phase_intersect()
408386

409387
if __name__ == '__main__':
410388
main()

0 commit comments

Comments
 (0)