Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

merged with chordidentifier and added fretnotes, intervals, guidetone… #1

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

gsc-dev
Copy link

@gsc-dev gsc-dev commented Dec 7, 2019

Hi @dmitrio95

I merged the plugin with chordidentifier and added fretnotes, intervals, guidetones and rootless chords functionality.

Split chordidentifier into smaller functions so I could run it only on the currently selected segment so now it can applied chord by chord.

I am new to musescore, QT, and QML so there might be a couple of things you would like to change.

@dmitrio95
Copy link
Owner

@gsc-dev hi!

Thanks for your pull request, I'm glad to know that someone is willing to improve the plugin I started :)

Do I understand correctly that you reused code from Chord Identifier (and some other plugins?) in your proposed changes? If so, we might need to change a license under which this plugin is distributed: I have initially put MIT license on this plugin while most of other plugins use GNU GPL license which requires all the derivative works being licensed under GPL as well. I'm fine with changing a license of this plugin as reusing other plugins' code indeed seems to be the most reasonable way to add many of features that could be useful for this plugin, but it would be good to clarify the sources of the code that you propose to reuse here.

As for changes themselves, I like adding labels for note names and intervals (and it was also requested by other people), but honestly I do not fully understand the purpose of adding chord symbols generation to this plugin. Was the idea to identify chords while they are being added to a score? If so, I support the idea but perhaps it would be better to implement it in a separate plugin so that chord identification would work even without this plugin and regardless of note input method being used. I would be happy to help in development of such plugin, but if there are no reasons why chord identification should be tightly bound to fretboard note input method I would prefer to keep this functionality separately.

I was also planning to put some changes regarding note input process and visual appearance, these changes are not so massive so maybe it would be better for me to finish these changes first. After that I could review your changes more completely.

@gsc-dev
Copy link
Author

gsc-dev commented Dec 8, 2019

Hi @dmitrio95,

I did reuse the code from Chord Identifier, so feel free to change the licence or remove the chord detection. You are right about the reason I included it as I wanted to double-check the chords as I changed the notes and voices when trying to get the best voice leading for my progressions. This is also the reason I included the support for naming rootless notes by adding the root as an unplayed note tracked in the plugin only, not the score. The chord symbols could be easily disabled by adding an extra checkbox at the bottom of the plugin.

It could be interesting to decouple both plugins, but I still would be missing the chord symbols being updated on the go as I move the notes in both the score and the fretboard. I am not sure how this can be achieved but I am new to everything musescore, qt, QML, etc so you might haver some better ideas.

The main reason I added these features was because I am learning Jazz on a Brazilian Cavaquinho with a DGBD tunning. There are not many resources in terms of chords so I am basically creating new chord voices (mostly rootless) and fingerings as I go, adding extensions and trying to be aware of guide tones as much as I can. However, I think these new additions and the chord symbols will be useful for anyone studying jazz, playing with chord extensions or trying to use any chords other than standard ones.

I think it is great that you are working on improving the input process and visual appearance and I cant wait to see your new ideas, so feel free to merge, use or discard any of the suggestions in this pull request.

Both plugins are awesome! Thanks very much for creating them.

Best,
Ronaldo

@dmitrio95
Copy link
Owner

Actually I have not created Chord Identifier, I have just adapted it to MuseScore 3 some time ago.

As for a possibility for a separate plugin, onScoreStateChanged handler should be able to track actual score changes with state.startLayoutTick and state.endLayoutTick, this information could be used to see which segments may actually need updating chord symbols and run the usual Chord Identifier plugin's procedure for that score range. As another alternative, chord symbols could be updated for a chord of the currently selected note in onScoreStateChanged handler. Maybe some combination of those methods could be used so that, for example, the selected chords' symbols would be updated only if something has actually changed (as tracked by start/endLayoutTick). I didn't check whether these ideas actually work but I believe it should be possible to implement something like this with the current state of plugins API.

Also I have just uploaded my pending changes to the repository. I hope to be able to review the proposed changes within the next week, or maybe propose some method to implement chords identification on the fly in a separate plugin.

@gsc-dev
Copy link
Author

gsc-dev commented Dec 9, 2019

Hi @dmitrio95,
I've merged your last pending changes and added an option for the chord symbols. Now they only get updated when the checkbox is enabled.

One key feature for me is the automatic detection of the root and displaying the intervals for each note. Depending on how each note is added, new chord inversions and voices can be made, and the root will be on a different string, giving different intervals for each other note. I found really usefull to have this feature at hand and it depends on the chord detection.

@gsc-dev
Copy link
Author

gsc-dev commented Dec 29, 2019

Hi @dmitrio95

Added some minor improvements...

@dmitrio95
Copy link
Owner

Hello! I have just added note labels, although implemented it more similar to a way it is done in this Guitar Pro example: https://musescore.org/en/node/295404#comment-949938.

As for chord identification functionality, it is possible to decouple it right now but that would be not fully usable because of unclear situation with synchronization of Cursor state and score input state. I have created a pull request (musescore/MuseScore#5657) with the desirable changes and hopefully will be able to add it to some future version of MuseScore. After that it should be possible to create a plugin that could reliably identify chords just on the fly, regardless of whether note input is done via this plugin or with standard note input methods offered by MuseScore.

@ronaldocpontes
Copy link

Thanks for the update @dmitrio95. Good to know you are working on it.
Glad to be of any help.

@srghma
Copy link

srghma commented Nov 25, 2021

Another chord identifier (for inspiration) https://www.bfx.qsx.mybluehost.me/chordieapp/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants