Giter Site home page Giter Site logo

cat2151 / chord2mml Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 414 KB

A library transpiles Chord notation into Music Macro Language.

Home Page: https://cat2151.github.io/chord2mml/dist/

License: MIT License

JavaScript 65.97% PEG.js 7.21% TypeScript 26.83%
chord-parsing chord-progression chord-progressions music-macro-language

chord2mml's Introduction

chord2mml

A library transpiles Chord notation into Music Macro Language.

Demo

https://cat2151.github.io/chord2mml/dist/

Features

  • text to textのシンプルなJavaScriptライブラリ
  • コード進行(Chord notation)から MMLを生成
  • ブラウザやObsidianでコード進行を手軽に鳴らせます

関連するproject

  • MML-chord-generator:chord2mmlの仕様の一部は、MML-chord-generatorから継承したものです。
  • obsidian-plugin-mmlabc:chord2mmlが組み込まれています。Obsidianでコード進行を書くと、音が鳴ります。作曲のアイデアスケッチの用途などを想定しています。

分担

  • chord2mml_chord2ast.pegjs ~ chord2mml_notes2mml.ts を作ること
    • が、このリポジトリの担当です。
  • easyにchord2mmlを使える仕組み を作ること
  • コード進行を鳴らすことで、作曲のアイデアスケッチなどに役立てること

このprojectが優先すること

  • 関数にChord notation文字列を与えて、MML文字列を取得できること。
  • obsidian-plugin-mmlabc でコード進行を鳴らせるようにすること。

目指すこと

  • 概念実証
    • 丁寧で完璧な動作を細部まで完璧に作り込むことよりも、
      • 大きな用途のある機能の目処を立てることを優先する
  • シンプル
    • ルールはシンプルであることを優先します。
    • できるだけ入力データそのままを扱います。
    • 例えばオクターブは手動制御とします。
      • 「octave-up」などをユーザーが明示的に書きます。
      • なぜなら「octave上がよい」「octave下がよい」かは、入力データからは断定できないためです。
      • また「スタンダードなほうを自動で選び、そこから外れた場合にユーザーが制御とする」こともしません。
        • なぜなら、スタンダードの境界線がグラデーションであること。そして、どこまでがスタンダードかのルールが複雑となること。それにより仕様が複雑となるためです。

目指さないこと

  • レアケース調査。あらゆるレアケースのコード表記を、全ての書籍とインターネットの隅々まで調べ上げる
  • まだ発生していない可能性への先行対応。「こんなコード表記をする可能性もありそう」というものをすべて実装する
  • 完璧なフォーマット。全てに対応できる表記フォーマットを完成させる
  • 全組み合わせテスト。全てに対応できるようテストケースを全組み合わせについて完成させる
  • 完璧な全自動。あらゆる曖昧な入力に対してすべてを全自動でいい感じにしてくれるシステムを構築する
  • 実用性。実用に耐えうる高機能と高品質を提供する

chord2mml's People

Contributors

cat2151 avatar

Watchers

 avatar  avatar

chord2mml's Issues

臨時octave upが、エラーにならず無効になることがあり、ユーザーが混乱する

  • 再現手順
    • in: US C/C US C'/C
    • out: '>c1eg<ceg''>c1eg<ceg'
    • 臨時octave upを使っても使わなくても出力が同じである
  • 期待される動作は?
    • 臨時octave upは、衝突や範囲外などのエラーがない限り、出力octave をupさせる
    • なおエラーの場合はexceptionとする、ほかのエラー同様である
  • 原因は?
    • octave関連処理の仕様曖昧
  • 対策は?
    • リファクタリングし、ソースが意図をわかりやすく表現できる状態する
    • のち、ソースと仕様を整理してゆく

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.