# Answered Essay: Note(String, double) :The main constructor in which the user provides the pitch name and

Note(String, double) :The main constructor in which the user provides the pitch name and

the duration.

Note(int, double) :An alternate constructor using a MIDI value for the pitch.

Note(String) :An alternate constructor using the (whole) string representation of a note.

int toMidi(String) : Convert a pitch name into its MIDI value. (e.g. c#6 ! 73) (static)

String toPitch(int) : Convert a MIDI value into its pitch name. (e.g. 41 ! f3) (static)

String getPitch() : Returns the name of this note’s pitch.

int getMidiPitch() : Returns the MIDI value of this note’s pitch.

double getDuration() : Returns the duration of this note.

Note stretch(double) : Return a new note with the same pitch but with the duration equal

to the product of this note’s duration with the argument.

Note transpose(int) : Return a new note transposed higher (or lower, if the argument is neg-

ative) by the given interval (number of MIDI values).

String toString() : Returns a string of the form p x d” where p is the name of the pitch and

d is the duration.

boolean equals(Object) : Return true if the argument is a note with the same pitch and

duration.

int hashCode() : Returns an int associated with this Note. You should compute a unique

integer eciently (without computing string hashcodes).

public class Note {

/* Static Constants */

public static final int DEFAULT_INTENSITY = 50;

public static final int REST_PITCH = 128; // First illegal pitch, used for rests.

private static final int PITCHES_PER_OCTAVE = 12;

private static final String[] NOTE_LETTERS = {“c”,”c#”,”d”,”d#”,”e”,”f”,”f#”,”g”,”g#”,”a”,”a#”,”b”};

private static final double MIN_DURATION = 1.0/64, // One sixty-fourth

MAX_DURATION = 8.0; // Eight whole notes

/** Fields (Immutable) */

private final String pitch;

private final int midiValue;

private final double duration;

/**

* Instantiates a new note based on a string denoting note letter and octave.

*

* @param pitch the pitch (e.g. “f6″)

* @param duration the duration

* @throws NullPointerException if pitch is null

* @throws IllegalArgumentException if:

*                1. The pitch parameter is malformed or out of range.

*                2. The duration parameter is out of range.

*/

public Note(String pitch, double duration) {

// TODO

// Recommended: First implement toMidi(String).

}

/**

* Instantiates a new note based on MIDI value.

*

* @param midiValue the MIDI value (e.g. 68)

* @param duration the duration

* @throws IllegalArgumentException if:

*                1. The MIDI pitch parameter is out of range.

*                2. The duration parameter is out of range.

*/

public Note(int midiValue, double duration) {

// TODO

// Recommended: First implement toPitch(int).

}

/**

* Instantiates a new note from a String matching the format of Note’s toString() method.

*

* @param note the string representation

*

* @throws IndexOutOfBoundsException if parameter isn’t in correct format

* @throws NumberFormatException if duration representation cannot be parsed as double

* @throws IllegalArgumentException if the elements in the format are not permitted.

*/

public Note(String note) {

this(note.split(” x “)[0], Double.parseDouble(note.split(” x “)[1]));

}

/**

* Converts a pitch string to a MIDI value.

* The pitch “rest” should return {@link #REST_PITCH}.

*

* @param pitch the pitch to convert

* @throws NullPointerException if pitch is null

* @throws IllegalArgumentException is the String is not a legal pitch

* @return the MIDI value

*/

public static int toMidi(String pitch) {

// TODO

return -1;

}

/**

* Converts a MIDI value to a pitch string.

* The MIDI value 128 should return “rest”.

*

* @param midiValue the MIDI value to convert

* @throws IllegalArgumentException if the MIDI value is outside of legal range

* @return the pitch string

*/

public static String toPitch(int midiValue) {

// TODO

return null;

}

/**

* Gets the pitch string of this note.

*

* @return the pitch

*/

public String getPitch() { return pitch; }

/**

* Gets the MIDI value of this note.

*

* @return the MIDI value

*/

public int getMidiPitch() { return midiValue; }

/**

* Gets the duration of this note.

*

* @return the duration

*/

public double getDuration() { return duration; }

/**

* Returns a new note with the same pitch, but with its duration multiplied by the parameter.

*

* @param factor the amount to scale by

* @throws IllegalArgumentException if resultant duration is outside of valid range

* @return the stretched note

*/

public Note stretch(double factor) {

// TODO

return null;

}

/**

* Returns a (new) note with the same duration, but transposed by the given interval.

*

* @param interval the interval to transpose by

* @throws IllegalArgumentException if note is transposed beyond valid bounds [c0, g10]

* @return the transposed note

*/

public Note transpose(int interval) {

// TODO

return null;

}

/**

* Returns a string representation of this Note.

* It should follow the format found in songs/InMyLife.song, namely:

*    For a Note with pitch “g#4” and duration 1.0625 -> “g#4 x 1.0625”

* NB1: Identical spacing and format are important!

* NB2: For a “rest” note, the same format must be used (including duration).

*

* @return the string representation

*/

@Override

public String toString() {

// TODO

return null;

}

* @see java.lang.Object#equals(java.lang.Object)

*/

@Override

public boolean equals(Object o) {

// TODO: Return equal if the argument is a Note and the midiValue and duration are equal

return false;

}

@Override

public int hashCode() {

// TODO: Compute hash using pieces. (Don’t take hash code of strings.)

return -1;

}

}

public class Note {

/* Static Constants */

public static final int DEFAULT_INTENSITY = 50;

public static final int REST_PITCH = 128; // First illegal pitch, used for rests.

private static final int PITCHES_PER_OCTAVE = 12;

private static final String[] NOTE_LETTERS = {“c”,”c#”,”d”,”d#”,”e”,”f”,”f#”,”g”,”g#”,”a”,”a#”,”b”};

private static final double MIN_DURATION = 1.0/64, // One sixty-fourth

MAX_DURATION = 8.0; // Eight whole notes

/** Fields (Immutable) */

private final String pitch;

private final int midiValue;

private final double duration;

/**

* Instantiates a new note based on a string denoting note letter and octave.

*

* @param pitch the pitch (e.g. “f6″)

* @param duration the duration

* @throws NullPointerException if pitch is null

* @throws IllegalArgumentException if:

*                1. The pitch parameter is malformed or out of range.

*                2. The duration parameter is out of range.

*/

public Note(String pitch, double duration) {

// TODO

// Recommended: First implement toMidi(String).

}

/**

* Instantiates a new note based on MIDI value.

*

* @param midiValue the MIDI value (e.g. 68)

* @param duration the duration

* @throws IllegalArgumentException if:

*                1. The MIDI pitch parameter is out of range.

*                2. The duration parameter is out of range.

*/

public Note(int midiValue, double duration) {

// TODO

// Recommended: First implement toPitch(int).

}

/**

* Instantiates a new note from a String matching the format of Note’s toString() method.

*

* @param note the string representation

*

* @throws IndexOutOfBoundsException if parameter isn’t in correct format

* @throws NumberFormatException if duration representation cannot be parsed as double

* @throws IllegalArgumentException if the elements in the format are not permitted.

*/

public Note(String note) {

this(note.split(” x “)[0], Double.parseDouble(note.split(” x “)[1]));

}

/**

* Converts a pitch string to a MIDI value.

* The pitch “rest” should return {@link #REST_PITCH}.

*

* @param pitch the pitch to convert

* @throws NullPointerException if pitch is null

* @throws IllegalArgumentException is the String is not a legal pitch

* @return the MIDI value

*/

public static int toMidi(String pitch) {

// TODO

return -1;

}

/**

* Converts a MIDI value to a pitch string.

* The MIDI value 128 should return “rest”.

*

* @param midiValue the MIDI value to convert

* @throws IllegalArgumentException if the MIDI value is outside of legal range

* @return the pitch string

*/

public static String toPitch(int midiValue) {

// TODO

return null;

}

/**

* Gets the pitch string of this note.

*

* @return the pitch

*/

public String getPitch() { return pitch; }

/**

* Gets the MIDI value of this note.

*

* @return the MIDI value

*/

public int getMidiPitch() { return midiValue; }

/**

* Gets the duration of this note.

*

* @return the duration

*/

public double getDuration() { return duration; }

/**

* Returns a new note with the same pitch, but with its duration multiplied by the parameter.

*

* @param factor the amount to scale by

* @throws IllegalArgumentException if resultant duration is outside of valid range

* @return the stretched note

*/

public Note stretch(double factor) {

// TODO

return null;

}

/**

* Returns a (new) note with the same duration, but transposed by the given interval.

*

* @param interval the interval to transpose by

* @throws IllegalArgumentException if note is transposed beyond valid bounds [c0, g10]

* @return the transposed note

*/

public Note transpose(int interval) {

// TODO

return null;

}

/**

* Returns a string representation of this Note.

* It should follow the format found in songs/InMyLife.song, namely:

*    For a Note with pitch “g#4” and duration 1.0625 -> “g#4 x 1.0625”

* NB1: Identical spacing and format are important!

* NB2: For a “rest” note, the same format must be used (including duration).

*

* @return the string representation

*/

@Override

public String toString() {

// TODO

return null;

}

* @see java.lang.Object#equals(java.lang.Object)

*/

@Override

public boolean equals(Object o) {

// TODO: Return equal if the argument is a Note and the midiValue and duration are equal

return false;

}

@Override

public int hashCode() {

// TODO: Compute hash using pieces. (Don’t take hash code of strings.)

return -1;

}

}

Pages (550 words)
Approximate price: -

Help Me Write My Essay - Reasons:

Best Online Essay Writing Service

We strive to give our customers the best online essay writing experience. We Make sure essays are submitted on time and all the instructions are followed.

Our Writers are Experienced and Professional

Our essay writing service is founded on professional writers who are on stand by to help you any time.

Free Revision Fo all Essays

Sometimes you may require our writers to add on a point to make your essay as customised as possible, we will give you unlimited times to do this. And we will do it for free.

Timely Essay(s)

We understand the frustrations that comes with late essays and our writers are extra careful to not violate this term. Our support team is always engauging our writers to help you have your essay ahead of time.

Customised Essays &100% Confidential

Our Online writing Service has zero torelance for plagiarised papers. We have plagiarism checking tool that generate plagiarism reports just to make sure you are satisfied.

Try it now!

## Calculate the price of your order

Total price:
\$0.00

How it works?

Fill in the order form and provide all details of your assignment.

Proceed with the payment

Choose the payment system that suits you most.

HOW OUR ONLINE ESSAY WRITING SERVICE WORKS

Let us write that nagging essay.

By clicking on the "PLACE ORDER" button, tell us your requires. Be precise for an accurate customised essay. You may also upload any reading materials where applicable.

Pick A & Writer

Our ordering form will provide you with a list of writers and their feedbacks. At step 2, its time select a writer. Our online agents are on stand by to help you just in case.

Editing (OUR PART)

At this stage, our editor will go through your essay and make sure your writer did meet all the instructions.