How to use the tonal.Chord.notes function in tonal

To help you get started, we’ve selected a few tonal examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github comorebi-notes / rechord / app / frontend / utils / translateChord.js View on Github external
const buildChord = (root, baseNotes, translator) => {
  const notes = []
  const chord13 = Chord.notes(root, "13") // 13コードを基準にして音を足したり減らしたりする
  chord13.splice(5, 0, Distance.transpose(root, "M11")) // tonal の 13コードは 11th が omit されている

  for (let i = 0; i < 7; i += 1) {
    if (translator[i] !== null) notes.push(transposer(chord13[i], translator[i]))
  }
  return notes
}
github comorebi-notes / rechord / app / frontend / utils / translate.js View on Github external
const translate = (root, baseKey, chordType) => {
  const notes = Chord.notes(`${root}${baseKey}`, translateType(chordType))
  if (chordType === "m6") {
    // [A3, C4, D4, E4, F#5] => [A3, C4, E4, F#4]
    notes.splice(2, 1)
    const lastNote = notes.pop()
    notes.push(lastNote.replace(/\d{1}/, baseKey + 1))
  }
  return notes
}
github blairjordan / pianoboi / src / renderer.js View on Github external
m.forEach(c => {
      let n = Chord.notes(c);
      if (chordsEqual(n, keys.map(k => k.substring(0, k.length - 1)))) {
        $(`.chord.${c}`).addClass("highlight");
      }
    });
  };
github generative-music / pieces-alex-bainter / packages / piece-apoapsis / src / piece.js View on Github external
onload: () => {
            const notes = Chord.notes('C', 'maj7').reduce(
              (allNotes, pc) =>
                allNotes.concat([2, 3, 4].map(octave => `${pc}${octave}`)),
              []
            );
            notes.forEach(note => {
              Tone.Transport.scheduleRepeat(
                () => violins.triggerAttack(note, '+1'),
                Math.random() * 120 + 60,
                30
              );
            });
          },
          volume: -35,
github felixroos / harmonical / src / util_old.ts View on Github external
export function getChordNotes(chord, validate?) {
  chord = Harmony.getTonalChord(chord);
  const tokens = Chord.tokenize(chord);
  const notes = Chord.notes(chord);
  return notes.filter(note => {
    const interval = Distance.interval(tokens[0], note);
    return !validate || validate(note, {
      root: tokens[0],
      symbol: tokens[1],
      interval,
      step: getStepFromInterval(interval),
      degree: getDegreeFromInterval(interval + '')
    });
  });
}
github generative-music / generative.fm / src / pieces / observable-streams.js View on Github external
        OCTAVES.map(octave => Chord.notes(`${TONIC}${octave}${name}`))
      ),
github generative-music / pieces-alex-bainter / packages / piece-substrate / src / piece.js View on Github external
    (notes, octave) => notes.concat(Chord.notes(`${tonic}${octave}`, 'm7')),
    []
github generative-music / pieces-alex-bainter / packages / piece-quarter-eyes / src / piece.js View on Github external
strings,
          bassdrum1,
          bassdrum2,
          sleighbells,
          fingerCymbals,
          tom,
        ]) => {
          reverb.connect(destination);
          strings.connect(reverb);
          bassdrum1.connect(reverb);
          bassdrum2.connect(reverb);
          sleighbells.connect(reverb);
          fingerCymbals.connect(reverb);
          const tomVol = new Tone.Volume(-10).connect(reverb);
          tom.connect(tomVol);
          const chord = Chord.notes('C1', 'm7');
          const measureLength = Math.random() + 5;
          let p = 1;
          let pDelta = 0.02;
          let didStringsPlayPreviously = false;
          const play = () => {
            bassdrum1.triggerAttack(`+${1 + Math.random() / 100}`);
            bassdrum2.triggerAttack(`+${1 + Math.random() / 100}`);

            if (Math.random() < p) {
              sleighbells.triggerAttack(`+${1 + measureLength / 2}`);
            } else {
              fingerCymbals.triggerAttack(`+${1 + measureLength / 2}`);
            }

            for (let i = 0; i < measureLength; i += measureLength / 16) {
              if (Math.random() < 1 - p) {