Skip to content
Permalink
Browse files

Add a basic pianoroll track type.

  • Loading branch information...
odahoda committed Sep 8, 2019
1 parent 98ed4f3 commit f81b4e38895b7ab22a0a72bd6a7e76ca61a5087f
Showing with 6,859 additions and 1,482 deletions.
  1. +1 −1 3rdparty/typeshed/PyQt5/QtWidgets.pyi
  2. +156 −0 data/icons/pianoroll-arrange-segments.svg
  3. +171 −0 data/icons/pianoroll-edit-events.svg
  4. +148 −0 data/icons/pianoroll-edit-velocity.svg
  5. +178 −0 data/icons/pianoroll-select-events.svg
  6. +135 −0 data/icons/pianoroll-split-segment.svg
  7. +13 −0 data/icons/placeholders/error.svg
  8. +166 −0 data/icons/track-type-pianoroll.svg
  9. +6 −0 data/icons/wscript
  10. +1 −1 noisicaa/audioproc/engine/double_buffered_state_manager.h
  11. +2 −2 noisicaa/audioproc/engine/double_buffered_state_manager.inl.h
  12. +2 −0 noisicaa/audioproc/public/musical_time.pyi
  13. +6 −0 noisicaa/audioproc/public/musical_time.pyx
  14. +40 −36 noisicaa/builtin_nodes/beat_track/track_ui.py
  15. +1 −1 noisicaa/builtin_nodes/control_track/processor.cpp
  16. +1 −1 noisicaa/builtin_nodes/control_track/processor.h
  17. +62 −69 noisicaa/builtin_nodes/control_track/track_ui.py
  18. +8 −1 noisicaa/builtin_nodes/model_registry.proto
  19. +6 −0 noisicaa/builtin_nodes/model_registry.py
  20. +2 −0 noisicaa/builtin_nodes/node_description_registry.py
  21. +263 −39 noisicaa/builtin_nodes/pianoroll/processor.cpp
  22. +51 −10 noisicaa/builtin_nodes/pianoroll/processor.h
  23. +65 −0 noisicaa/builtin_nodes/pianoroll/processor_messages.proto
  24. +125 −0 noisicaa/builtin_nodes/pianoroll/processor_messages.py
  25. +99 −0 noisicaa/builtin_nodes/pianoroll/processor_test.py
  26. +21 −0 noisicaa/builtin_nodes/pianoroll_track/__init__.py
  27. +85 −0 noisicaa/builtin_nodes/pianoroll_track/model.desc.pb
  28. +402 −0 noisicaa/builtin_nodes/pianoroll_track/model.py
  29. +154 −0 noisicaa/builtin_nodes/pianoroll_track/model_test.py
  30. +44 −0 noisicaa/builtin_nodes/pianoroll_track/node_description.py
  31. +76 −0 noisicaa/builtin_nodes/pianoroll_track/node_ui.py
  32. +119 −0 noisicaa/builtin_nodes/pianoroll_track/processor_messages.py
  33. +1,092 −0 noisicaa/builtin_nodes/pianoroll_track/track_ui.py
  34. +304 −0 noisicaa/builtin_nodes/pianoroll_track/track_ui_test.py
  35. +34 −0 noisicaa/builtin_nodes/pianoroll_track/wscript
  36. +2 −0 noisicaa/builtin_nodes/processor_message_registry.proto
  37. +1 −1 noisicaa/builtin_nodes/sample_track/processor.cpp
  38. +1 −1 noisicaa/builtin_nodes/sample_track/processor.h
  39. +68 −69 noisicaa/builtin_nodes/sample_track/track_ui.py
  40. +232 −238 noisicaa/builtin_nodes/score_track/track_ui.py
  41. +4 −0 noisicaa/builtin_nodes/ui_registry.py
  42. +1 −0 noisicaa/builtin_nodes/wscript
  43. +1 −1 noisicaa/ui/graph/canvas.py
  44. +1,406 −52 noisicaa/ui/pianoroll.py
  45. +233 −16 noisicaa/ui/pianoroll_test.py
  46. +23 −7 noisicaa/ui/project_view.py
  47. +124 −124 noisicaa/ui/track_list/base_track_editor.py
  48. +73 −306 noisicaa/ui/track_list/editor.py
  49. +60 −0 noisicaa/ui/track_list/editor_test.py
  50. +123 −109 noisicaa/ui/track_list/measured_track_editor.py
  51. +5 −0 noisicaa/ui/track_list/time_line.py
  52. +9 −6 noisicaa/ui/track_list/time_view_mixin.py
  53. +104 −74 noisicaa/ui/track_list/tools.py
  54. +32 −306 noisicaa/ui/track_list/track_editor_tests.py
  55. +5 −8 noisicaa/ui/track_list/view.py
  56. +1 −0 noisicaa/ui/track_list/wscript
  57. +26 −0 noisicaa/value_types/midi_event.py
  58. +1 −1 noisicaa/value_types/pitch.py
  59. +285 −2 noisidev/uitest.py
@@ -1029,11 +1029,11 @@ class QAction(QtCore.QObject):


class QActionGroup(QtCore.QObject):
triggered = ... # type: PYQT_SIGNAL

def __init__(self, parent: QtCore.QObject) -> None: ...

def hovered(self, a0: QAction) -> None: ...
def triggered(self, a0: QAction) -> None: ...
def setExclusive(self, a0: bool) -> None: ...
def setVisible(self, a0: bool) -> None: ...
def setDisabled(self, b: bool) -> None: ...
@@ -0,0 +1,156 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="30"
id="svg2"
version="1.1"
viewBox="147 151 60 60"
width="30"
sodipodi:docname="pianoroll-arrange-segments.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<metadata
id="metadata3495">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1373"
id="namedview3493"
showgrid="false"
inkscape:zoom="32"
inkscape:cx="6.385936"
inkscape:cy="16.531571"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer2" />
<defs
id="defs10" />
<g
id="layer2"
style="display:inline"
transform="translate(0,-637.6694)"
inkscape:groupmode="layer"
inkscape:label="Symbol">
<path
style="display:inline;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.47799999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 171.74514,790.64038 v 55.97211"
id="path4608-6"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.478;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 147.5491,790.6694 h 24.43305"
id="path4608"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.35841447pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 147.5491,846.6694 h 24.43548"
id="path4608-7"
inkscape:connector-curvature="0" />
<rect
style="opacity:1;fill:#888888;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.06709313;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4609"
width="0.5"
height="54.6255"
x="151.1875"
y="791.35663" />
<rect
style="display:inline;opacity:1;fill:#888888;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.06709313;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4609-6"
width="0.5"
height="54.6255"
x="161.41251"
y="791.35663" />
<rect
style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.21914601;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect888"
width="13.875"
height="2"
x="147.6875"
y="821.29437" />
<rect
style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.06055665;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect888-3"
width="10.5"
height="2"
x="161.46875"
y="818.73187" />
<path
style="display:inline;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.47799999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 192.32186,790.51288 v 55.97211"
id="path4608-6-6"
inkscape:connector-curvature="0" />
<rect
style="display:inline;opacity:1;fill:#888888;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.06709313;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4609-56"
width="0.5"
height="54.6255"
x="202.3125"
y="791.35663" />
<rect
style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.04465544;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect888-3-2"
width="10.1875"
height="2"
x="192.34375"
y="821.29437" />
<rect
style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.06055665;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect888-3-9-1"
width="10.5"
height="2"
x="151.1875"
y="840.04437" />
<rect
style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.06055665;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect888-3-9-7"
width="10.5"
height="2"
x="192.25"
y="840.04437" />
<rect
style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.65968394;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect888-3-9-0"
width="4.0625"
height="2"
x="202.5"
y="811.79437" />
<path
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.06437325;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path3076"
d="m 158.87554,802.46639 v 32.30745 l 7.25974,-7.01887 7.05327,11.90456 h 3.92231 l 0.0688,-3.2686 -6.22752,-11.69812 c 0,0 2.89014,0 4.54162,0 1.93823,0 6.22754,0 6.22754,0 z"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.478;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 192.08749,790.61449 h 14.49555"
id="path4608-2"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.47799999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 192.08749,846.48499 h 14.49555"
id="path4608-2-8"
inkscape:connector-curvature="0" />
</g>
</svg>
@@ -0,0 +1,171 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="30"
id="svg2"
version="1.1"
viewBox="147 151 60 60"
width="30"
sodipodi:docname="pianoroll-edit-events.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<metadata
id="metadata3495">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1373"
id="namedview3493"
showgrid="false"
inkscape:zoom="32"
inkscape:cx="5.0455068"
inkscape:cy="15.099995"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer2" />
<defs
id="defs10" />
<g
id="layer2"
style="display:inline"
transform="translate(0,-637.6694)"
inkscape:groupmode="layer"
inkscape:label="Symbol">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.55646701pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 147.5491,790.6694 58.9018,0"
id="path4608"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.55646701pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 147.5491,846.6694 58.9018,0"
id="path4608-7"
inkscape:connector-curvature="0" />
<rect
style="opacity:1;fill:#888888;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.06709313;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4609"
width="0.5"
height="54.6255"
x="151.1875"
y="791.35663" />
<rect
style="display:inline;opacity:1;fill:#888888;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.06709313;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4609-6"
width="0.5"
height="54.6255"
x="161.41251"
y="791.35663" />
<rect
style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.21914601;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect888"
width="13.875"
height="2"
x="147.6875"
y="821.29437" />
<rect
style="display:inline;opacity:1;fill:#888888;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.06709313;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4609-7"
width="0.5"
height="54.6255"
x="171.6375"
y="791.35663" />
<rect
style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.06055665;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect888-3"
width="10.5"
height="2"
x="161.46875"
y="818.73187" />
<rect
style="display:inline;opacity:1;fill:#888888;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.06709313;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4609-5"
width="0.5"
height="54.6255"
x="181.8625"
y="791.35663" />
<rect
style="display:inline;opacity:1;fill:#888888;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.06709313;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4609-3"
width="0.5"
height="54.6255"
x="192.08749"
y="791.35663" />
<rect
style="display:inline;opacity:1;fill:#888888;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.06709313;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4609-56"
width="0.5"
height="54.6255"
x="202.3125"
y="791.35663" />
<rect
style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.48189068;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect888-3-2"
width="20.5"
height="2"
x="182.03125"
y="821.29437" />
<rect
style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.06055665;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect888-3-9"
width="10.5"
height="2"
x="171.71875"
y="811.79437" />
<rect
style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.06055665;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect888-3-9-1"
width="10.5"
height="2"
x="151.1875"
y="840.04437" />
<rect
style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.06055665;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect888-3-9-2"
width="10.5"
height="2"
x="171.6875"
y="840.04437" />
<rect
style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.06055665;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect888-3-9-7"
width="10.5"
height="2"
x="192.25"
y="840.04437" />
<rect
style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.65968394;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect888-3-9-0"
width="4.0625"
height="2"
x="202.5"
y="811.79437" />
<path
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.00726867;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path3076"
d="m 178.23267,810.64877 v 31.41377 l 7.05891,-6.82472 6.85816,11.57526 h 3.81382 l 0.0669,-3.17819 -6.05527,-11.37451 c 0,0 2.81019,0 4.416,0 1.88461,0 6.05527,0 6.05527,0 z"
inkscape:connector-curvature="0" />
</g>
</svg>

0 comments on commit f81b4e3

Please sign in to comment.
You can’t perform that action at this time.