This post is like a small gift in this Christmas time !
I) Current brakes in your creativity
In my opinion, the last improvements in EOF and DDC tools are difficult because we are facing some limitations about the SNG generation process in the RSToolkit.
That's why I decided to try to understand the code of this part of the tool.
To my surprise, I managed to obtain interesting results with only minor changes (less than 20 lines modified in "Sng2014FileWriter.cs").
I need to share with you my findings as they could have some impacts on the existing tools like EOF and DDC.
Do not hesitate to give your opinion about these possible improvements ...
II) Does the "chordDensity" attribute could work as expected ?
YES : I have found a way to switch between a full chord display and the repeated chord box only by setting the "highDensity" attribute and by using only one handShape !
III) Is it possible to share the same finger positions for a sequence of similar chords (but not exactly the same ones) ?
YES : with embedded handShapes technique (as used in some official DLCs)
Let's start with the following example :
There are only three main handShapes for chords D, C and G.
In each of these main handShapes, you can have various chords variations (less strings used) :
- 2 variations in the D chord sequence
- 3 variations in the C chord sequence
- 3 variations in the G chord sequence (and as you can see, the full G chord is not really used)
To obtain a working solution, I had to modify the XML file like this :
The XML chord tags has been simplified to clarify this example (all other attributes are used in the original file).
All the magic is in the handShapes section :
- The main handshapes start at 5.9, 7.9 and 9.9 and never have a note or a chord at their startTime position. They are used to define the handShape period and the finger positions.
- The embedded handshapes are used as usual, and associated to each sequence of chord variation (the highDensity attribute of chords tells which occurrences need to be fully displayed).
Here is the final result in the game (package generated with my specific release of the RSToolkit) :
IV) A handShape should allow to define partial finger positions
YES : as requested by Berneer a few weeks ago, sometimes we want to indicate only the fixed hand positions to play a sequence of notes (but not for all strings)
In this example, the chords (with ghost notes) are only here to indicate the finger positions of the handShape phrase.
In the second handShape phrase, I didn't want to have the note on the lower string (I removed it from the XML file).
Hi all guys !
This post is like a small gift in this Christmas time !
I) Current brakes in your creativity
In my opinion, the last improvements in EOF and DDC tools are difficult because we are facing some limitations about the SNG generation process in the RSToolkit.
That's why I decided to try to understand the code of this part of the tool.
To my surprise, I managed to obtain interesting results with only minor changes (less than 20 lines modified in "Sng2014FileWriter.cs").
I need to share with you my findings as they could have some impacts on the existing tools like EOF and DDC.
Do not hesitate to give your opinion about these possible improvements ...
II) Does the "chordDensity" attribute could work as expected ?
YES : I have found a way to switch between a full chord display and the repeated chord box only by setting the "highDensity" attribute and by using only one handShape !
III) Is it possible to share the same finger positions for a sequence of similar chords (but not exactly the same ones) ?
YES : with embedded handShapes technique (as used in some official DLCs)
Let's start with the following example :
There are only three main handShapes for chords D, C and G.
In each of these main handShapes, you can have various chords variations (less strings used) :
- 2 variations in the D chord sequence
- 3 variations in the C chord sequence
- 3 variations in the G chord sequence (and as you can see, the full G chord is not really used)
To obtain a working solution, I had to modify the XML file like this :
... <chordTemplates count="9"> <chordTemplate displayName="D" chordName="D" fret0="-1" fret1="-1" fret2="0" fret3="2" fret4="3" fret5="2" finger0="-1" finger1="-1" finger2="-1" finger3="1" finger4="3" finger5="2" /> <chordTemplate displayName="-nop" chordName="" fret0="-1" fret1="-1" fret2="-1" fret3="2" fret4="3" fret5="2" finger0="-1" finger1="-1" finger2="-1" finger3="1" finger4="3" finger5="2" /> <chordTemplate displayName="C" chordName="C" fret0="-1" fret1="3" fret2="2" fret3="0" fret4="1" fret5="0" finger0="-1" finger1="3" finger2="2" finger3="-1" finger4="1" finger5="-1" /> <chordTemplate displayName="-nop" chordName="" fret0="-1" fret1="-1" fret2="2" fret3="0" fret4="1" fret5="0" finger0="-1" finger1="-1" finger2="2" finger3="-1" finger4="1" finger5="-1" /> <chordTemplate displayName="-nop" chordName="" fret0="-1" fret1="-1" fret2="-1" fret3="0" fret4="1" fret5="0" finger0="-1" finger1="-1" finger2="-1" finger3="-1" finger4="1" finger5="-1" /> <chordTemplate displayName="G" chordName="G" fret0="3" fret1="2" fret2="0" fret3="0" fret4="3" fret5="3" finger0="2" finger1="1" finger2="-1" finger3="-1" finger4="3" finger5="4" /> <chordTemplate displayName="-nop" chordName="" fret0="3" fret1="2" fret2="0" fret3="0" fret4="-1" fret5="-1" finger0="2" finger1="1" finger2="-1" finger3="-1" finger4="-1" finger5="-1" /> <chordTemplate displayName="-nop" chordName="" fret0="-1" fret1="-1" fret2="0" fret3="0" fret4="3" fret5="3" finger0="-1" finger1="-1" finger2="-1" finger3="-1" finger4="3" finger5="4" /> <chordTemplate displayName="-nop" chordName="" fret0="-1" fret1="-1" fret2="-1" fret3="0" fret4="3" fret5="3" finger0="-1" finger1="-1" finger2="-1" finger3="-1" finger4="3" finger5="4" /> </chordTemplates> ... <chords count="18"> <chord time="6" chordId="0" highDensity="0"> <chordNote time="6" fret="0" leftHand="-1" string="2" /> <chordNote time="6" fret="2" leftHand="1" string="3" /> <chordNote time="6" fret="3" leftHand="3" string="4" /> <chordNote time="6" fret="2" leftHand="2" string="5" /> </chord> <chord time="7" chordId="1" highDensity="0"> <chordNote time="7" fret="2" leftHand="1" string="3" /> <chordNote time="7" fret="3" leftHand="3" string="4" /> <chordNote time="7" fret="2" leftHand="2" string="5" /> </chord> <chord time="7.5" chordId="1" highDensity="1"> <chordNote time="7.5" fret="2" leftHand="1" string="3" /> <chordNote time="7.5" fret="3" leftHand="3" string="4" /> <chordNote time="7.5" fret="2" leftHand="2" string="5" /> </chord> <chord time="7.75" chordId="1" highDensity="1"> <chordNote time="7.75" fret="2" leftHand="1" string="3" /> <chordNote time="7.75" fret="3" leftHand="3" string="4" /> <chordNote time="7.75" fret="2" leftHand="2" string="5" /> </chord> <chord time="8" chordId="2" highDensity="0"> <chordNote time="8" fret="3" leftHand="3" string="1" /> <chordNote time="8" fret="2" leftHand="2" string="2" /> <chordNote time="8" fret="0" leftHand="-1" string="3" /> <chordNote time="8" fret="1" leftHand="1" string="4" /> <chordNote time="8" fret="0" leftHand="-1" string="5" /> </chord> <chord time="9" chordId="3" highDensity="0"> <chordNote time="9" fret="2" leftHand="2" string="2" /> <chordNote time="9" fret="0" leftHand="-1" string="3" /> <chordNote time="9" fret="1" leftHand="1" string="4" /> <chordNote time="9" fret="0" leftHand="-1" string="5" /> </chord> <chord time="9.5" chordId="4" highDensity="0"> <chordNote time="9.5" fret="0" leftHand="-1" string="3" /> <chordNote time="9.5" fret="1" leftHand="2" string="4" /> <chordNote time="9.5" fret="0" leftHand="-1" string="5" /> </chord> <chord time="9.75" chordId="4" highDensity="1"> <chordNote time="9.75" fret="0" leftHand="-1" string="3" /> <chordNote time="9.75" fret="1" leftHand="2" string="4" /> <chordNote time="9.75" fret="0" leftHand="-1" string="5" /> </chord> <chord time="10" chordId="6" highDensity="0"> <chordNote time="10" fret="3" leftHand="2" string="0" /> <chordNote time="10" fret="2" leftHand="1" string="1" /> <chordNote time="10" fret="0" leftHand="-1" string="2" /> <chordNote time="10" fret="0" leftHand="-1" string="3" /> </chord> <chord time="11" chordId="7" highDensity="0"> <chordNote time="11" fret="0" leftHand="-1" string="2" /> <chordNote time="11" fret="0" leftHand="-1" string="3" /> <chordNote time="11" fret="3" leftHand="3" string="4" /> <chordNote time="11" fret="3" leftHand="4" string="5" /> </chord> <chord time="11.5" chordId="8" highDensity="0"> <chordNote time="11.5" fret="0" leftHand="-1" string="3" /> <chordNote time="11.5" fret="3" leftHand="3" string="4" /> <chordNote time="11.5" fret="3" leftHand="4" string="5" /> </chord> <chord time="11.75" chordId="8" highDensity="1"> <chordNote time="11.75" fret="0" leftHand="-1" string="3" /> <chordNote time="11.75" fret="3" leftHand="3" string="4" /> <chordNote time="11.75" fret="3" leftHand="4" string="5" /> </chord> <chord time="12" chordId="6" highDensity="0"> <chordNote time="12" fret="3" leftHand="2" string="0" /> <chordNote time="12" fret="2" leftHand="1" string="1" /> <chordNote time="12" fret="0" leftHand="-1" string="2" /> <chordNote time="12" fret="0" leftHand="-1" string="3" /> </chord> <chord time="12.5" chordId="6" highDensity="1"> <chordNote time="12.5" fret="3" leftHand="2" string="0" /> <chordNote time="12.5" fret="2" leftHand="1" string="1" /> <chordNote time="12.5" fret="0" leftHand="-1" string="2" /> <chordNote time="12.5" fret="0" leftHand="-1" string="3" /> </chord> <chord time="12.75" chordId="6" highDensity="1"> <chordNote time="12.75" fret="3" leftHand="2" string="0" /> <chordNote time="12.75" fret="2" leftHand="1" string="1" /> <chordNote time="12.75" fret="0" leftHand="-1" string="2" /> <chordNote time="12.75" fret="0" leftHand="-1" string="3" /> </chord> <chord time="13" chordId="7" highDensity="0"> <chordNote time="13" fret="0" leftHand="-1" string="2" /> <chordNote time="13" fret="0" leftHand="-1" string="3" /> <chordNote time="13" fret="3" leftHand="3" string="4" /> <chordNote time="13" fret="3" leftHand="4" string="5" /> </chord> <chord time="13.5" chordId="8" highDensity="0"> <chordNote time="13.5" fret="0" leftHand="-1" string="3" /> <chordNote time="13.5" fret="3" leftHand="3" string="4" /> <chordNote time="13.5" fret="3" leftHand="4" string="5" /> </chord> <chord time="13.75" chordId="8" highDensity="1"> <chordNote time="13.75" fret="0" leftHand="-1" string="3" /> <chordNote time="13.75" fret="3" leftHand="3" string="4" /> <chordNote time="13.75" fret="3" leftHand="4" string="5" /> </chord> </chords> <anchors count="3"> <anchor time="6" fret="2" width="4" /> <anchor time="8" fret="1" width="4" /> <anchor time="10" fret="2" width="4" /> </anchors> <handShapes count="14"> <handShape chordId="0" endTime="7.9" startTime="5.9" /> <handShape chordId="0" endTime="6.875" startTime="6" /> <handShape chordId="1" endTime="7.875" startTime="7" /> <handShape chordId="2" endTime="9.9" startTime="7.9" /> <handShape chordId="2" endTime="8.875" startTime="8" /> <handShape chordId="3" endTime="9.475" startTime="9" /> <handShape chordId="4" endTime="9.875" startTime="9.5" /> <handShape chordId="5" endTime="13.9" startTime="9.9" /> <handShape chordId="6" endTime="10.875" startTime="10" /> <handShape chordId="7" endTime="11.475" startTime="11" /> <handShape chordId="8" endTime="11.875" startTime="11.5" /> <handShape chordId="6" endTime="12.875" startTime="12" /> <handShape chordId="7" endTime="13.475" startTime="13" /> <handShape chordId="8" endTime="13.875" startTime="13.5" /> </handShapes>The XML chord tags has been simplified to clarify this example (all other attributes are used in the original file).
All the magic is in the handShapes section :
- The main handshapes start at 5.9, 7.9 and 9.9 and never have a note or a chord at their startTime position. They are used to define the handShape period and the finger positions.
- The embedded handshapes are used as usual, and associated to each sequence of chord variation (the highDensity attribute of chords tells which occurrences need to be fully displayed).
Here is the final result in the game (package generated with my specific release of the RSToolkit) :
IV) A handShape should allow to define partial finger positions
YES : as requested by Berneer a few weeks ago, sometimes we want to indicate only the fixed hand positions to play a sequence of notes (but not for all strings)
In this example, the chords (with ghost notes) are only here to indicate the finger positions of the handShape phrase.
In the second handShape phrase, I didn't want to have the note on the lower string (I removed it from the XML file).
The XML code looks like this :
<chordTemplates count="2"> <chordTemplate chordName="Amadd4" displayName="Amadd4" finger0="-1" finger1="1" finger2="3" finger3="1" finger4="1" finger5="1" fret0="-1" fret1="5" fret2="7" fret3="5" fret4="5" fret5="5" /> <chordTemplate chordName="A7sus4/C" displayName="A7sus4/C" finger0="-1" finger1="1" finger2="1" finger3="1" finger4="1" finger5="1" fret0="-1" fret1="5" fret2="5" fret3="5" fret4="5" fret5="5" /> </chordTemplates> ... <notes count="38"> ... </notes> <chords count="0"/> ... <handShapes count="4"> <handShape chordId="0" endTime="9.251" startTime="5.9" /> <handShape chordId="1" endTime="11.626" startTime="9.5" /> <handShape chordId="0" endTime="15.251" startTime="11.5" /> <handShape chordId="1" endTime="17.626" startTime="15.5" /> </handShapes> ...And the final result in game is :
Now, the votes are open :D
How to create CDLCs
DDC Tool