Greasy Fork is available in English.

Noteflight Tuplet Improver

allows you to make tuplets of any size in Noteflight!

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name           Noteflight Tuplet Improver
// @namespace      Unseeable's Noteflight Tools
// @version        1.2.0
// @description:en allows you to make tuplets of any size in Noteflight!
// @description:fr vous permet de créer des groupes de notes de n'importe quelle taille dans Noteflight!
// @description:de ermöglicht es Ihnen, in Noteflight Noten Gruppierung jeder Größe zu erstellen!
// @author         Colton Stone
// @license        GPL-3.0-or-later
// @tag            productivity
// @tag            utilities
// @match          *://www.noteflight.com/scores/view/*
// @icon           https://www.google.com/s2/favicons?sz=32&domain=noteflight.com
// @grant          unsafeWindow
// @description allows you to make tuplets of any size in Noteflight!
// ==/UserScript==

(function() {
  var uwin = unsafeWindow;
  console.log(uwin);
  function checkNested(obj, args) {
    for (var i = 0; i < args.length; i++) {
      if (!obj || !obj.hasOwnProperty(args[i])) {
        return false;
      }
      obj = obj[args[i]];
    }
    return true;
  }
  function waitForGlobal(obj, keyPath, callback) {
    var args = keyPath.split('.');
    if (checkNested(obj, args)) {
      callback();
    } else {
      setTimeout(function() {
        waitForGlobal(keyPath, callback);
      }, 100);
    }
  }
  var nfeditor;
  waitForGlobal(uwin, "nfeditor", () => {
    nfeditor = uwin.nfeditor;
    nfeditor.palette().currentPalette().applyTuplet = (e) => {
      if (e == "septuplet") {
        var l = uwin.prompt("Enter number of notes in tuplet:");
        nfeditor.documentController.controller.createTuplet(parseInt(l));
      } else {
        nfeditor.palette().currentPalette().applyAction("tuplet", {
          duplet: 2,
          triplet: 3,
          quadruplet: 4,
          quintuplet: 5,
          sextuplet: 6
        }[e]);
      }
    };
  });
})();