Dive into secure and efficient coding practices with our curated list of the top 10 examples showcasing 'st' in functional components in JavaScript. Our advanced machine learning engine meticulously scans each line of code, cross-referencing millions of open source libraries to ensure your implementation is not just functional, but also robust and secure. Elevate your React applications to new heights by mastering the art of handling side effects, API calls, and asynchronous operations with confidence and precision.
request.onload = (e) => {
let songText = request.responseText
let song
try {
song = SongParser.load(songText)
} catch (e) {
console.log(e)
return reject(`Failed to parse: ${name}`)
}
// transpose to middle c
let root = parseNote(song[0].note)
song = song.transpose(60 - root)
resolve(song)
}
it("gets notes in time range", function() {
let song = SongNoteList.newSong([
["C5", 0, 1],
["D5", 1, 1],
["E5", 3, 1],
["D5", 5, 1],
["F5", 1, 5], // overlap (1 - 6)
["F5", 1, 3], // overlap start (1 - 4)
["F5", 4, 2], // overlap end (4 - 6)
])
let range = song.notesInRange(3,5)
matchNotes(range, [
new SongNote("E5", 3, 1),
new SongNote("F5", 1, 5),
new SongNote("F5", 1, 3),
new SongNote("F5", 4, 2),
])
})
})
it("loads notes with timing", function() {
let song = SongParser.load(`
dt
m0 c5 c5 c5
m0 g5 a5 g5
ht
m1 c6
`)
matchNotes(song, [
// first measure
new SongNote("C5", 0, 0.5),
new SongNote("C5", 0.5, 0.5),
new SongNote("C5", 1.0, 0.5),
new SongNote("G5", 0, 0.5),
new SongNote("A5", 0.5, 0.5),
new SongNote("G5", 1.0, 0.5),
// second measure
new SongNote("C6", 4, 1),
])
})
it("gets notes in F MajorScale", function() {
let scale = new MajorScale("F");
// TODO: should be Bb5
expect(scale.getRange(5)).toEqual([
"F5", "G5", "A5", "Bb5", "C6", "D6", "E6", "F6"
]);
});
it("gets enharmonic spelling of notes for key", function() {
let key = new KeySignature(-3) // b e a
let notes = new MajorScale(key.name()).getRange(4).map((n) => key.enharmonic(n))
expect(notes).toEqual([
"Eb4", "F4", "G4", "Ab4", "Bb4", "C5", "D5", "Eb5"
])
})
})
let generator
if (this.state.continuousMelody && this.currentNotes) {
// reuse the same generator so the melody is smooth
generator = this.state.currentNotes.generator
generator.notes = notes // replace notes with the new set generated
generator.notesPerColumn = this.state.notesPerColumn
} else {
generator = new RandomNotes(notes, {
smoothness: 6,
notes: this.state.notesPerColumn,
hands: 1,
})
}
// create a test melody
let list = new NoteList([], { generator })
list.fillBuffer(this.state.notesPerMelody)
if (this.state.melodyDirection == "asc") {
console.warn("sorted asc")
list.sort((rowA, rowB) => parseNote(rowA[0]) - parseNote(rowB[0]))
}
if (this.state.melodyDirection == "desc") {
console.warn("sorted desc")
list.sort((rowA, rowB) => parseNote(rowB[0]) - parseNote(rowA[0]))
}
this.props.midiOutput.playNoteList(list).then(() => {
this.setState({ playing: false })
})
it("matches with singular notes, anyOctave", function () {
const notes = new NoteList([
"D5",
"C5",
])
expect(notes.matchesHead(["D5"], true)).toBe(true)
expect(notes.matchesHead(["D6"], true)).toBe(true)
expect(notes.matchesHead(["C5"], true)).toBe(false)
// singular notes wrapped in array
const notes2 = new NoteList([
["D5"],
["C5"],
])
expect(notes2.matchesHead(["D5"], true)).toBe(true)
expect(notes2.matchesHead(["D6"], true)).toBe(true)
expect(notes2.matchesHead(["C5"], true)).toBe(false)
})
it("notesSame", function() {
expect(notesSame("C5", "C6")).toBe(true);
expect(notesSame("C5", "C5")).toBe(true);
expect(notesSame("C5", "D5")).toBe(false);
expect(notesSame("C#5", "C5")).toBe(false);
expect(notesSame("Ab5", "A3")).toBe(false);
expect(notesSame("Db5", "Db6")).toBe(true);
expect(notesSame("G#5", "G#7")).toBe(true);
// wrapping
expect(notesSame("B#5", "C6")).toBe(true);
expect(notesSame("B#5", "C7")).toBe(true);
expect(notesSame("B3", "Cb5")).toBe(true);
expect(notesSame("B5", "Cb3")).toBe(true);
});
it("notesSame", function() {
expect(notesSame("C5", "C6")).toBe(true);
expect(notesSame("C5", "C5")).toBe(true);
expect(notesSame("C5", "D5")).toBe(false);
expect(notesSame("C#5", "C5")).toBe(false);
expect(notesSame("Ab5", "A3")).toBe(false);
expect(notesSame("Db5", "Db6")).toBe(true);
expect(notesSame("G#5", "G#7")).toBe(true);
// wrapping
expect(notesSame("B#5", "C6")).toBe(true);
expect(notesSame("B#5", "C7")).toBe(true);
expect(notesSame("B3", "Cb5")).toBe(true);
expect(notesSame("B5", "Cb3")).toBe(true);
});
it("notesSame", function() {
expect(notesSame("C5", "C6")).toBe(true);
expect(notesSame("C5", "C5")).toBe(true);
expect(notesSame("C5", "D5")).toBe(false);
expect(notesSame("C#5", "C5")).toBe(false);
expect(notesSame("Ab5", "A3")).toBe(false);
expect(notesSame("Db5", "Db6")).toBe(true);
expect(notesSame("G#5", "G#7")).toBe(true);
// wrapping
expect(notesSame("B#5", "C6")).toBe(true);
expect(notesSame("B#5", "C7")).toBe(true);
expect(notesSame("B3", "Cb5")).toBe(true);
expect(notesSame("B5", "Cb3")).toBe(true);
});