Title: The Joy of Dissecting Weave
1The Joy of Dissecting Weave
2Creating Useful SongNodes
- Introducing the SongNodes
- Creating the SongNodes
- Creating a List to Work With
3Coding the SongNodes
Within the SongPhrase class //code for
a1 static public Phrase A1() double
phrasedata JMC.A1,JMC.EN,JMC.A1,JMC.EN,JMC.A
1,JMC.EN,JMC.A1,JMC.EN Phrase myPhrase
new Phrase() myPhrase.addNoteList(phrase
data) return myPhrase //code for
dg5 static public Phrase DG5() double
phrasedata JMC.G5,JMC.EN,JMC.G5,JMC.EN,JMC.G
5,JMC.EN,JMC.G5,JMC.DEN Phrase myPhrase
new Phrase() myPhrase.addNoteList(phra
sedata) return myPhrase //code for
c2 static public Phrase C2() double
phrasedata JMC.C2,JMC.EN,JMC.C2,JMC.EN,JMC.C
2,JMC.EN,JMC.C2,JMC.DEN Phrase
myPhrase new Phrase()
myPhrase.addNoteList(phrasedata) return
myPhrase
4Introducing the SongNodes
a1
dg5
c2
Distinct SongNodes will make it easier to see how
weave works.
5Creating the SongNodes
- SongNode a1 new SongNode()
- a1.setPhrase(SongPhrase.A1())
- SongNode dg5 new SongNode()
- dg5.setPhrase(SongPhrase.DG5())
- SongNode c2 new SongNode()
- c2.setPhrase(SongPhrase.C2())
6Creating a List to Work With
a1.repeatNextInserting(dg5, 5)
7Dissection
- Analyzing the Inputs
- Cases
8Analyzing the Inputs
9Case skip amount 0
a1.weave(c2, 2, 0)
10Case skip amount 1
a1.weave(c2, 2, 1)
Surprisingly a1.weave(c2, 2, 0) or
a1.weave(c2, 2, 1) will yield the same result.
11Case skip amount gt2
a1.weave(c2, 2, 2)
Weave actually works fairly normally with cases
with the skip amount is greater 2
12Case the list is too short
a1.weave(c2, 2, 4)
I do not think it is possible to draw any
conclusions until we see another case.
13Case the list is too short again
a1.weave(c2, 2, 8)
So when the list is too short to accommodate the
amount we want to skip, it will do what it can
(like in the previous case) and then insert the
node at the end of list regardless of the amount
we wanted to skip or the number of times we
wanted to weave the node into the list.
14The Code
- import jm.music.data.
- import jm.JMC
- import jm.util.
- import jm.music.tools.
- public class tester
- public static void main(Stringargs)
- SongNode a1 new SongNode()
- a1.setPhrase(SongPhrase.A1())
- SongNode dg5 new SongNode()
- dg5.setPhrase(SongPhrase.DG5())
- SongNode c2 new SongNode()
- c2.setPhrase(SongPhrase.C2())
- a1.repeatNextInserting(dg5, 5)
- a1.showFromMeOn(JMC.PIANO) //show original
list - //case amount to skip 0
- a1.weave(c2, 2, 0)
- a1.showFromMeOn(JMC.PIANO)
- //case amount to skip 1
- a1.repeatNext(dg5, 5) //resets the list to
the original