Module: GuitarProHelper

Included in:
GuitarProParser::Song
Defined in:
lib/guitar_pro_parser/guitar_pro_helper.rb

Constant Summary collapse

VERSIONS =

Possible versions of Guitar Pro file

{ 'FICHIER GUITARE PRO v1' => 1.0,
'FICHIER GUITARE PRO v1.01' => 1.01,
'FICHIER GUITARE PRO v1.02' => 1.02,
'FICHIER GUITARE PRO v1.03' => 1.03,
'FICHIER GUITARE PRO v1.04' => 1.04,
'FICHIER GUITAR PRO v2.20'  => 2.2,
'FICHIER GUITAR PRO v2.21'  =>2.21,
'FICHIER GUITAR PRO v3.00' => 3.0,
'FICHIER GUITAR PRO v4.00' => 4.0,
'FICHIER GUITAR PRO v4.06' => 4.06,
'FICHIER GUITAR PRO L4.06' => 4.06,
'FICHIER GUITAR PRO v5.00' => 5.0,
'FICHIER GUITAR PRO v5.10' => 5.1 }
NOTES =
%w(C C# D D# E F F# G G# A A# B)
VOICES =
[:lead, :bass]
FINGERS =
[:thumb, :index, :middle, :ring, :pinky]
BEND_TYPES =
[:none, :bend, :bend_and_release, :bend_release_bend, :prebend, :prebend_and_release,
:tremolo_dip, :tremolo_dive, :tremolo_release_up, :tremolo_inverted_dip, :tremolo_return, :tremolo_release_down]
BEND_VIBRATO_TYPES =
[:none, :fast, :average, :slow]
MUSICAL_DIRECTIONS =
[:coda, :double_coda, :segno, :segno_segno, :fine, :da_capo,
:da_capo_al_coda, :da_capo_al_double_coda, :da_capo_al_fine,
:da_segno, :da_segno_al_coda, :da_segno_al_double_coda,
:da_segno_al_fine, :da_segno_segno, :da_segno_segno_al_coda,
:da_segno_segno_al_double_coda, :da_segno_segno_al_fine,
:da_coda, :da_double_coda]
TRIPLET_FEEL =
[:no_triplet_feel, :triplet_8th, :triplet_16th]
REST_TYPES =
{ '0' => :empty_beat, 
'2' => :rest }
DURATIONS =
{ '-2' => :whole,
                '-1' => :half,
'0' => :quarter,
'1' => :eighth,
'2' => :sixteens,
'3' => :thirty_second,
'4' => :sixty_fourth }
STRING_EFFECTS =
[:tremolo_bar, :tapping, :slapping, :popping]
STROKE_EFFECT_SPEEDS =
[:none, 128, 64, 32, 16, 8, 4]
STROKE_DIRECTIONS =
[:none, :up, :down]
NOTE_TYPES =
[:normal, :tie, :dead]
NOTE_DYNAMICS =
%w(ppp pp p mp mf f ff fff)
GRACE_NOTE_TRANSITION_TYPES =
[:none, :slide, :bend, :hammer]
GRACE_NOTE_DURATIONS =
{ '3' => 16, '2' => 32, '1' => 64 }
TREMOLO_PICKING_SPEEDS =
{ '3' => 32, '2' => 16, '1' => 8 }
SLIDE_TYPES =
[:no_slide, :shift_slide, :legato_slide, :slide_out_and_downwards, :slide_out_and_upwards, :slide_in_from_below, :slide_in_from_above]
MAP_SLIDE_TYPES_GP5 =
{ '0'=>0, '1'=>1, '2'=>2, 
'4'=>3, '8'=>4, '16'=>5, 
'17'=>[1, 5], '18'=>[2, 5], '20'=>[5, 3],
'24'=>[5, 4], '32'=>6, '33'=>[1, 6], 
'34'=>[2, 6] ,'36'=>[6, 3], '40'=>[6,4] }
MAP_SLIDE_TYPES_GP4 =
{ '-2'=>6, '-1'=>5, '0'=>0, '1'=>1, '2'=>2, '3'=>3, '4'=>4 }
HARMONIC_TYPES =
[:none, :natural, :artificial, :tapped, :pinch, :semi]
TRILL_PERIODS =
{ '1' => 4, '2' => 8, '3' => 16 }
CHORD_TYPES =
%w(M 7 7M 6 m m7 m7M m6 sus2 sus4 7sus2 7sus4 dim aug 5)
NINE_ELEVEN_THIRTEEN =
[0, 9, 11, 13]
CHORD_TONALITIES =

Strange moment here. In format specification is written:

0: perfect
1: augmented
2: diminished

But actually (after tests) it seems to be:

0: perfect
1: diminished
2: augmented
[:perfect, :diminished, :augmented]

Class Method Summary collapse

Class Method Details

.digit_to_note(digit) ⇒ Object

Converts note’s digit representation to its string equivalent: 0 for C0, 1 for C#0, etc.



75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/guitar_pro_parser/guitar_pro_helper.rb', line 75

def GuitarProHelper.digit_to_note(digit)
  note_index = 0
  octave = 0
  digit.times do |i|
    note_index = note_index + 1
    if note_index == NOTES.count
      note_index = 0
      octave = octave + 1
    end
  end

  "#{NOTES.fetch(note_index)}#{octave.to_s}"
end