music21j-port
Version:
A toolkit for computer-aided musicology, Javascript version
76 lines (60 loc) • 2.64 kB
HTML
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<title>stream.clone()</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<!-- midi.js package -->
<script data-main="../src/music21.js" src="../ext/require/require.js"></script>
<link rel="stylesheet" href="http://web.mit.edu/music21/doc/_static/m21.css" type="text/css" />
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Source+Code+Pro|Open+Sans:300italic,400italic,700italic,400,300,700" type="text/css" />
</head>
<body>
<script type="text/javascript">
let allStream;
require(['music21'], function (music21) {
const $b = $('body');
$b.append("<div>s = one measure tinyNotation</div>");
const s = music21.tinyNotation.TinyNotation('3/4 C4 D2');
s.appendNewDOM();
$b.append("<div>clone and change step from C to E</div>");
const y = s.clone(true);
y.flat.notes.get(0).pitch.step = 'E';
y.flat.notes.get(0).stemDirection = undefined;
y.appendNewDOM();
$b.append("<div>s (original) unchanged?</div>");
s.appendNewDOM();
$b.append("<div><h1>three measure tiny notation Part</h1></div>");
const s2 = music21.tinyNotation.TinyNotation('3/4 b2. a2. g2.');
s2.appendNewDOM();
$b.append("<div>cloned right?</div>");
const y2 = s2.clone(true);
y2.appendNewDOM();
$b.append("<div>s3 = three measure tiny notation Part (s.clone(), s.clone([D=A]), s.clone())</div>");
const s3 = new music21.stream.Part();
s3.append(s.clone(true));
const sScrewy = s.clone(true);
sScrewy.flat.notes.get(1).pitch.step = 'A';
sScrewy.flat.notes.get(1).stemDirection = undefined;
s3.append(sScrewy);
s3.append(s.clone(true));
s3.appendNewDOM();
$b.append("<h1>Score</h1><div>s4 = three parts (s3.clone(), s3.clone()-inverted, s3.clone()</div>");
const s4 = new music21.stream.Score();
s4.insert(0, s3.clone(true));
const s3Second = s3.clone(true);
const s3SecondFlat = s3Second.flat;
for (const n of s3SecondFlat.flat.notes) {
n.stemDirection = undefined;
n.pitch.diatonicNoteNum = 22 + (29 - n.pitch.diatonicNoteNum);
}
s4.insert(0, s3Second);
s4.insert(0, s3.clone(true));
s4.appendNewDOM();
$b.append("<div>is s3Second activeSite s4? " + (s3Second.activeSite === s4).toString() + "</div>");
$b.append("<div>s3 unchanged?</div>");
s3.appendNewDOM();
});
</script>
<h1>Stream.clone() tests...</h1>
</body>
</html>