History

python/demos/demo_keyboard.py: moved to numpy

Paul Brossier committed 13 years ago

Commit 18a05521 parent 129b2692 files · +85 −46Browse files

Unified · Split

2 files
  1. python.old/aubio/plot/keyboard.py +0 −46
  2. python/demos/demo_keyboard.py +85 −0
python.old/aubio/plot/keyboard.py+0−46
@@ -1,46 +0,0 @@
1
2def draw_keyboard(firstnote = 21, lastnote = 108, y0 = 0, y1 = 1):
3 import Gnuplot
4 octaves = 10
5
6 # build template of white notes
7 scalew = 12/7.
8 xw_temp = [i*scalew for i in range(0,7)]
9 # build template of black notes
10 scaleb = 6/7.
11 xb_temp = [i*scaleb for i in [1,3,7,9,11]]
12
13 xb,xw = [],[]
14 for octave in range(octaves-1):
15 for i in xb_temp:
16 curnote = i+12*octave
17 if curnote > firstnote-1 and curnote < lastnote+1:
18 xb = xb + [curnote]
19 for octave in range(octaves-1):
20 for i in xw_temp:
21 curnote = i+12*octave
22 if curnote > firstnote-1 and curnote < lastnote+1:
23 xw = xw + [curnote]
24
25 xwdelta = [1/2. * scalew for i in range(len(xw))]
26 yw = [y0+(y1-y0)*1/2. for i in range(len(xw))]
27 ywdelta = [(y1-y0)*1/2. for i in range(len(xw))]
28
29 xbdelta = [2/3. * scaleb for i in range(len(xb))]
30 yb = [y0+(y1-y0)*2/3. for i in range(len(xb))]
31 ybdelta = [(y1-y0)*1/3. for i in range(len(xb))]
32
33 whites = Gnuplot.Data(xw,yw,xwdelta,ywdelta,with_ = 'boxxyerrorbars')
34 blacks = Gnuplot.Data(xb,yb,xbdelta,ybdelta,with_ = 'boxxyerrorbars fill solid')
35
36 return blacks,whites
37
38if __name__ == '__main__':
39 from aubio.gnuplot import gnuplot_create
40 blacks,whites = draw_keyboard(firstnote = 21, lastnote = 108)
41 g = gnuplot_create('','')
42 #g('set style fill solid .5')
43 #g('set xrange [60-.5:72+.5]')
44 #g('set yrange [-0.1:1.1]')
45
46 g.plot(whites,blacks)
python/demos/demo_keyboard.py+85−0
@@ -0,0 +1,85 @@
1#! /usr/bin/env python
2
3def get_keyboard_edges(firstnote = 21, lastnote = 108, y0 = 0, y1 = 1):
4 octaves = 10
5
6 # build template of white notes
7 scalew = 12/7.
8 xw_temp = [i*scalew for i in range(0,7)]
9 # build template of black notes
10 scaleb = 6/7.
11 xb_temp = [i*scaleb for i in [1,3,7,9,11]]
12
13 xb,xw = [],[]
14 for octave in range(octaves-1):
15 for i in xb_temp:
16 curnote = i+12*octave
17 if curnote > firstnote-1 and curnote < lastnote+1:
18 xb = xb + [curnote]
19 for octave in range(octaves-1):
20 for i in xw_temp:
21 curnote = i+12*octave
22 if curnote > firstnote-1 and curnote < lastnote+1:
23 xw = xw + [curnote]
24
25 xwdelta = [1/2. * scalew for i in range(len(xw))]
26 yw = [y0+(y1-y0)*1/2. for i in range(len(xw))]
27 ywdelta = [(y1-y0)*1/2. for i in range(len(xw))]
28
29 xbdelta = [2/3. * scaleb for i in range(len(xb))]
30 yb = [y0+(y1-y0)*2/3. for i in range(len(xb))]
31 ybdelta = [(y1-y0)*1/3. for i in range(len(xb))]
32
33 whites,white_height = xw,yw
34 blacks,black_height = xb,yb
35
36 return blacks,whites, 2/3. *scaleb, 1/2. * scalew
37
38def create_keyboard_patches(firstnote, lastnote, ax = None):
39 import numpy as np
40 import matplotlib.pyplot as plt
41 from matplotlib.path import Path
42 import matplotlib.patches as mpatches
43
44 blacks, whites, b_width, w_width = get_keyboard_edges(firstnote, lastnote)
45
46 if not ax:
47 fig = plt.figure()
48 ax = fig.add_subplot(111)
49
50 verts, codes = [], []
51 for white in whites:
52 verts += [ (white - w_width, 0), (white - w_width, 1), (white + w_width, 1), (white + w_width, 0) ]
53 verts += [ (white - w_width, 0) ]
54 codes += [Path.MOVETO] + [Path.LINETO] * 4
55 path = Path(verts, codes)
56 patch = mpatches.PathPatch(path, facecolor= 'white', edgecolor='black', lw=1)
57 ax.add_patch(patch)
58
59 verts, codes = [], []
60 for black in blacks:
61 verts += [ (black - b_width, 0.33), (black - b_width, 1), (black + b_width, 1), (black + b_width, 0.33) ]
62 verts += [ (black - b_width, 0.33) ]
63 codes += [Path.MOVETO] + [Path.LINETO] * 4
64 path = Path(verts, codes)
65 patch = mpatches.PathPatch(path, facecolor= 'black', edgecolor='black', lw=1)
66 ax.add_patch(patch)
67
68 ax.axis(xmin = firstnote, xmax = lastnote)
69
70if __name__ == '__main__':
71
72 if 0:
73 from aubio.gnuplot import gnuplot_create
74 import Gnuplot
75 whites = Gnuplot.Data(blacks, yw,xwdelta,ywdelta,with_ = 'boxxyerrorbars')
76 blacks = Gnuplot.Data(whites, yb,xbdelta,ybdelta,with_ = 'boxxyerrorbars fill solid')
77 g = gnuplot_create('','')
78 #g('set style fill solid .5')
79 #g('set xrange [60-.5:72+.5]')
80 #g('set yrange [-0.1:1.1]')
81 g.plot(whites,blacks)
82 else:
83 import matplotlib.pyplot as plt
84 create_keyboard_patches(firstnote = 61, lastnote = 108)
85 plt.show()

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t