14
The Joy of Dissecting Weave Dawn Finney

The Joy of Dissecting Weave

Embed Size (px)

DESCRIPTION

The Joy of Dissecting Weave. Dawn Finney. Creating Useful SongNodes. Introducing the SongNodes Creating the SongNodes Creating a List to Work With. Coding the SongNodes. Within the SongPhrase class: //code for a1 static public Phrase A1() { double[] phrasedata = - PowerPoint PPT Presentation

Citation preview

Page 1: The Joy of Dissecting Weave

The Joy of Dissecting Weave

Dawn Finney

Page 2: The Joy of Dissecting Weave

Creating Useful SongNodes

Introducing the SongNodes

Creating the SongNodes

Creating a List to Work With

Page 3: The Joy of Dissecting Weave

Coding the SongNodes Within the SongPhrase class:

//code for a1static public Phrase A1() { double[] phrasedata = {JMC.A1,JMC.EN,JMC.A1,JMC.EN,JMC.A1,JMC.EN,JMC.A1,JMC.EN}; Phrase myPhrase = new Phrase(); myPhrase.addNoteList(phrasedata); return myPhrase; }

//code for dg5 static public Phrase DG5() { double[] phrasedata = {JMC.G5,JMC.EN,JMC.G5,JMC.EN,JMC.G5,JMC.EN,JMC.G5,JMC.DEN}; Phrase myPhrase = new Phrase(); myPhrase.addNoteList(phrasedata); return myPhrase; }

//code for c2 static public Phrase C2() { double[] phrasedata = {JMC.C2,JMC.EN,JMC.C2,JMC.EN,JMC.C2,JMC.EN,JMC.C2,JMC.DEN}; Phrase myPhrase = new Phrase(); myPhrase.addNoteList(phrasedata); return myPhrase; }

Page 4: The Joy of Dissecting Weave

Introducing the SongNodes

a1 dg5 c2

Distinct SongNodes will make it easier to see how weave works.

Page 5: The Joy of Dissecting Weave

Creating 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());

Page 6: The Joy of Dissecting Weave

Creating a List to Work With

a1.repeatNextInserting(dg5, 5);

Page 7: The Joy of Dissecting Weave

Dissection

Analyzing the Inputs

Cases

Page 8: The Joy of Dissecting Weave

Analyzing the Inputs

Page 9: The Joy of Dissecting Weave

Case: skip amount = 0

a1.weave(c2, 2, 0);

Page 10: The Joy of Dissecting Weave

Case: skip amount = 1

Surprisingly a1.weave(c2, 2, 0); or a1.weave(c2, 2, 1); will yield the same result.

a1.weave(c2, 2, 1);

Page 11: The Joy of Dissecting Weave

Case: skip amount >=2

a1.weave(c2, 2, 2);

Weave actually works fairly normally with cases with the skip amount is greater 2

Page 12: The Joy of Dissecting Weave

Case: 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.

Page 13: The Joy of Dissecting Weave

Case: 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.

Page 14: The Joy of Dissecting Weave

The Codeimport jm.music.data.*;import jm.JMC;import jm.util.*;import jm.music.tools.*;public class tester{ public static void main(String[]args){ 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 a1.weave(c2, 2, 1); a1.showFromMeOn(JMC.PIANO); //case amount to skip >=2 a1.repeatNext(dg5, 5); a1.weave(c2, 2, 2); a1.showFromMeOn(JMC.PIANO); //case list is too short a1.repeatNext(dg5, 5); a1.weave(c2, 2, 4); a1.showFromMeOn(JMC.PIANO); //case list is too short again a1.repeatNext(dg5, 5); a1.weave(c2, 2, 8); a1.showFromMeOn(JMC.PIANO); }}