elieserdejesus / JamTaba

Jamtaba is a software to play online music jam sessions.
http://www.jamtaba.com
245 stars 49 forks source link

[IDEA] Add "Chord Image Viewer" to display chords graphically #504

Closed vector21 closed 7 years ago

vector21 commented 8 years ago

Hey... :-)

Hope its OK when I post an Idea here - found no way to flag it as idea myself, but please see it as such!

I think it would be nice to have the possibility to display an image when the chord display is active! I imagine it something like this:

chord-image-viewer

So it would be a "floating window", that you can open or close. Every time a chord changes not only the green box in the chord display would light up, but also an image from a folder inside JT's root would be displayed. This image could be a "chord diagram" that shows the actual chord on guitar, bass, keys as a graphic... But it could also be "abused" for all kind of "optical art madness" ...

The way of telling JT what image to use for what chord would be like this:

  1. Edit Chord by clicking on it (Have been added! :-) https://github.com/elieserdejesus/JamTaba/issues/469)
  2. Click the "Select Image" button (that one would have to be added to the "Chord Edit Window")

edit-chord-window

Done!

Technically this could be done by simply copying the selected image into a folder called "Chord Images" inside JT_s root. There also should be a subfolder for the "instrument" the chords are ment to be for (like "Keys", "Guitar", "Bass", etc... )

The image(s) should be "assigned" in a kind of lookup table in an abstract way (not depending on the STRING of a chord, criteria would be more of an abstract ID)

This way it would be easy and intuitive for the U to play arround with chords and learn it by having fun!

What do you think?

Cheers, Echnaton9000 (aka vector21, aka Edwin ... )

elieserdejesus commented 8 years ago

@vector21

Hope its OK when I post an Idea here - found no way to flag it as idea myself, but please see it as such!

Please feel free to post another ideas, the post "format" is not really important. Byte the way, the format you used is good.

This idea (show chord images) is very good. But I think we need improve the "image selection" part. Some time ago I discussed a similiar idea with Tea and Tom, but the idea was show/load chord images from an embedded chords database. The ideia is 1 - A musician enter in a room and receive a chord progression via chat 2 - This musician load the chord progression, but he/she don't know how play some of the chords in loaded progression. 3 - He/she click in the "difficult" chord and a floating window appear showing the chord image (no need to choose some external image). We can use a button to switch between guitar chord view, keys chord view, bass, etc. Users can learn more complex chords with this feature and improve your harmony skills.

From the technical point of view, is better (more flexible) draw the chords dynamically. No need to have a different image to each chord and to each instrument.

A related need is some pre-defined file format to represent a chord visualization, so we can change the chord visualization changing a simple file (the chord visualization database).

This idea is too big to be implemented in the next release, but let's keep this idea in mind for the next round.

For now, any ideas about how represent chord visualization in files are welcome. For example, we can use a scheme like this to represent chord visualization in keyboard:

//Assuming 12 keys (one octave), each key is indexed: key 1, key 2, key 3, ..., key 12

C : 1,5,8         //C chord - the keys C (1), E (5) and G (8) are pressed
Cm : 1,4,8      //C minor chord - the keys C (1), D# (4) and G (8) are pressed
C7 : 1,4,8,11   //C7 chord - the keys C (1), E (4), G (8) and Bb (11) are pressed

No ideas at moment about how represent the guitar chords.

jonjamcam commented 8 years ago

This is a great idea! I've been using Allthatchords software for this purpose and it has this same idea implemented for keyboard and partiture:

image

http://o.gortais.free.fr/

how represent the guitar chords

The image posted by @vector21 is perfect for guitar chords:

image

I'd just add a Left/right handed button:

image

elieserdejesus commented 8 years ago

@jonjamcam

The image posted by @vector21 is perfect for guitar chords:

I agree, this is very good to display the chords, but I was talking (using not very good words :)) about "represent" the guitar chords in a chords database file. The idea is dynamically draw the frets, strings, and the finger circles, but Jamtaba need know where the finger circles will be drawed. Another solution is create one imagem per chord, but this is not a good idea for a maintence point of view.

jonjamcam commented 8 years ago

For a starting point here's what information should be shown:

http://www.howmusicreallyworks.com/PGS_Products_Charts/Complete_Guitar_Chord_Poster.htm

as you can see the same chord can be drawn in different positions.

vector21 commented 8 years ago

Hi guys!

I was thinking about my first post again... :-D Yeah... I sometimes do that!!! :-o ;-)

Eli is right... it would need an enormous ammount of images to display for all the chords :-D :-D :-D So generate them on the fly is for sure the more elegant solution...

I think we would basically need 2 types of chord displays: 1 for key instruments and 1 for string instruments (Guitar and Bass)

Bass is the easiest one... 4 strings... The diagram below shows all common bass chords: 4-string-bass-chords

Its actually nothing more than 1 of 5 possible patterns (fingerings) for each chord. Every chordpattern is exactly the same and can easily be applied to any root note by just adding the intervals, like Eli lined out with his "Chord Definition System" ...

So the "formula" would be "1, 4, 8" applied to any Root Note

We could use MIDI standard to determine each note. If we asume the root note to be a C3 then it would look like this:

"C3" = Midi 60 = Root Note "C3 m" = (60+1) + (60+4) + (60+8) = minor chord (chord formula = 1, 4, 8)

So we could try to implement a function that can basically display a "note" or a "note + a formula" on keys or string instuments. This could look like this:

img image = generateChordImage(int midinote, string formula, int instrument = 1); This would generate an image (a pointer to a sprite... ?) that can display 1 note by this:

myImage = generateChordImage(60, ""); This would generate an image displaying C3 on a keyboard (instrument = 1 = default)

myImage = generateChordImage(60, "1,4,8", 2); This would generate an image of a C3 minor chord on a "6-stringed Guitar" (instrument = 2) Instrument 3 could be a "4-stringed Bass"

All we would need for this is a graphic that shows the whole "note range" on the instrument, take a "cutout" of it that displays the chord. Like this:

bass-fretboard

The formula for the above image is 1, 4, 8, 12, 16 ...

I think this easily could be applied to keys too. Guitars might be a little bit more complicated (muted strings) but I think its doable.

What do you think?

Have a nice one! Ech

qulf commented 7 years ago

mayby that can help: https://github.com/darth10/chordy

qulf commented 7 years ago

another things: https://github.com/ander/chords

search "chords" on github

elieserdejesus commented 7 years ago

moved to wishllist https://github.com/elieserdejesus/JamTaba/issues/907