Frets and strings
Control and indications
Algorithm of note detection
Control and indications
Two pins of the microcontroller (high bits of port B) are used to organize primitive indication (red and green LEDs) and scanning of control buttons. Up to 17 buttons can be scanned without scheme changes - as many as frets. Now ONE button is used for all purposes.
B6 and B7 pins are used to control indication. Normally B7 is programmed for input (high impedance) and LEDs are not lighting. To switch LED on it is necessary to program B6 and B7 for output of contrary logical signals, the LED is selected by polarity of B6-B7 voltage. Current-limiting resistor limits LED current to 0.6 mA, which is enough for bright LEDs.
To indicate its state, Tryndelka flashes its LEDs:
To enter commands and values a string should be pressed on a fret and then the button should be clicked. The button is scanned during main scanning cycle of strings by setting B6 to "1" and reading D7 input. B7 is configured for input this time.
Commands should be entered as following:
Serves to enter transposition cammands (as initial action of the command), also used to ented digital values ("how many") in complex commands.
1.1+button - 1 octave up
1.2+button - 1 octave down
1.3+button - 1 halftone up
1.4+button - 1 halftone down
1.5+button - number of halftones up + "how many 1..12"
1.6+button - number of halftones down + "how many 1..12"
1.7+button - reset transpose
To enter "how many i=0..15" parameter, string 1 should be pressed to the i+1'th fret and the button should be clicked. For example, "7" number is entered as 1.8+button.
To enter "how many i=0..127" parameter two steps should be performed. First, string 1 should be pressed to the d+1'th fret (where d is amount of tens in the number) and button clicked. Then string 1 should be pressed to the n+1'th fret (n is the remainder after division the source number on 10) and the button should be clicked again. For example, "113", i.e. 11*10+3, is entered as 1.12+button, 1.4+button.
Serves to enter coarse value "how many" for controllers that lie in 0..127 range, such as volume, reverberation etc. String pressed to the i'th fret means (i-1)*10 value.
2.1 => 0,
2.5 => 40,
2.11 => 100.
2.14 corresponds to 127.
Serves for setting of main MIDI controllers. Both string 1 or string 2 may be used for entering the controller value.
5.1+button - volume + "how many 0..127"
5.2+button - modulation + "how many 0..127"
5.3+button - reverberation + "how many 0..127"
5.4+button - chorus + "how many 0..127"
5.5+button - pan. pos. + "how many 0..127"
Serves for entering main control commands.
6.1+button - channel (for all strings) + "how many 0..15"
6.2+button - program change + "how many 0..127"
6.3+button - tune + "unison" *
6.4+button - random controller +"controller number 0..127"+"how many 0..127"
6.5+button - reset setup (channel 0, tune for 6-string guitar, not velocity-sensitive)
6.6+button - send reset to synthesizer
6.7+button - channel for single string + "string channel" **
6.8+button - tapping mode on/off
*"Tune" command allows to set up frets where adjacent strings sound in unison. The second action of "tune" command is setting up one unison. To do this a string from 2 to 6 should be pressed to a fret where it should have unison with previous string and then the button should be clicked. For example, in order to tune the second string on the 3rd fret in unison with the first string (as it is assumed for 7-string russian guitar), the sequence should be performed: 6.3+button, 2.3+button. To set up complete tune of the guitar all unisons from 2nd to 6th string shoud be set up, total transposition may also be required.
**Channes for the specific string is entered by pressing that string to
the corresponding fret (if channels are counted from 0 then to i+1 fret) and clicking the
button. For example, in order to send all notes played on the 4th string in MIDI channel
2, the sequence should be performed: