Τρίτη 29 Δεκεμβρίου 2015

Πιανάκι 004 με κλαβιέ (διόρθωση)


Τελική μορφή! Χρόνια Πολλά και καλή διασκέδαση!
(διόρθωσα το C4# σε C#4 πρώτα η νότα και μετά ο αριθμός οκτάβας)
Μπορεί κάποιος να ανεβάσει την οκτάβα, αλλά πρέπει να αλλάξει τα νούμερα από Α#3 ..D5...Συνολικά υπάρχουν 7 οκτάβες από 1 έως 7. Εδώ το πιανάκι είναι μπάσο, η 4η είναι η μεσαία οκτάβα. Παρακάτω έχω βάλει και το κανονικό πιανάκι!
Δεν είναι δύσκολο να γίνει με δυο κλαβιέ! Ήδη εδώ έχουμε δυο σειρές τα μαύρα και τα άσπρα πλήκτρα!


Πίνακας Νοτα1$(10,3), Νοτα2$(10,3)
διαμεσου ΓέμισεΠίνακα()
Φόρμα 60,30
Πένα 14
Οθονη 5
Διπλά
Αναφορά 2, "Πιανάκι 004"   
Κανονικά
Αναφορά 2,{Οδηγίες
1-Έξοδος  3-Ξυλόφωνο 4-Πιάνο 5-Σαξόφωνο  8-Πλήκτρα/Νότες 9-Ρυθμός Ναι 0-Ρυθμός Όχι


Διάστημα - Δυναμώνει τις νότες
-- Γιώργος Καρράς --


}
Σχέδιο.Νημάτων Διαδοχικό
Παίξε 0 \\ καθαρίζει το σύστημα
Γενική πλ$=" ", τέμπο=300, οργ=5, φ=0, εντ$="V90", φων(18), χρη(17) ' 0 ..17,
ν=1
Για ι=1 έως 16 { χρη(ι)=Αληθές }
χρη(10)= Ψευδές \\ για την drum machine
\\ υπολογισμός θέσης του κλαβιέ!
μμ=2*(χ.σημεια Δια 14)
μμ2= μμ δια 2
κκ=γραμμή/ύψος*υ.σημεια
κκ1=υ.σημεια/ύψος*8
γραμ=υ.σημεια/ύψος*1.5
Οθόνη , Γραμμή+9

Τμήμα Πλήκτρο {
      Διάβασε α$, πατ, επιλ
      αν πατ τοτε {
      Αν Θέση(πλ$,α$+"-")>0 τότε έξοδος
      διαμέσου Επομ()
      φων(επιλ)=φ \\ δεν χρειάζεται <=
      Τύπωσε α$, φ
      Φωνή φ, τεμπο, α$+εντ$ : πλ$<=πλ$+α$+"-": Παίξε φ, οργ
      } αλλιως {
            πλ$<=αλλαγή$(α$+"-","", πλ$)
            Αν φων(επιλ)>0 τότε {
             Παίξε φων(επιλ), 0 ' προσθήκη στην αναθ. 131
             χρη(φων(επιλ))~
             φων(επιλ)=0
             }
      }
      Ρουτίνα Επομ()
      τοπικη ι
      για ι=1 έως 16 {
            αν χρη(ι) τότε έξοδος
      }
      αν ι<17 τότε { φ<=ι : χρη(ι)~ } αλλιώς φ<=1: χρη(1)=αληθές : Τυπωσε "!!!!!!!!"
      Τέλος Ρουτίνας
}
\\ κανάλι 10 είναι το drum machine
Νήμα { Φωνή 10,400,"CV90CC  ab Cd eCC" : Παίξε 10,1 } ως Λ κάθε 60
Νήμα {
      πλήκτρο "A#2", πατημένο(κωδ("A")), 1
      πλήκτρο "B2", πατημένο(κωδ("Z")), 2
      πλήκτρο "C3", πατημένο(κωδ("X")), 3
      πλήκτρο "C#3", πατημένο(κωδ("D")), 4
      πλήκτρο "D3", πατημένο(κωδ("C")), 5
      πλήκτρο "D#3", πατημένο(κωδ("F")), 6
      πλήκτρο "E3", πατημένο(κωδ("V")), 7
      πλήκτρο "F3", πατημένο(κωδ("B")), 8
      πλήκτρο "F#3", πατημένο(κωδ("H")), 9
      πλήκτρο "G3", πατημένο(κωδ("N")), 10
      πλήκτρο "G#3", πατημένο(κωδ("J")), 11
      πλήκτρο "A3", πατημένο(κωδ("M")), 12
      πλήκτρο "A#3", πατημένο(κωδ("K")), 13
      \\ https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
      πλήκτρο "B3", πατημένο(0xBC), 14 \\ VK_OEM_COMMA
      πλήκτρο "C4", πατημένο(0xBE), 15 \\ VK_OEM_PERIOD
      πλήκτρο "C#4", πατημένο(0xBA), 16 \\ VK_OEM_1
      πλήκτρο "D4", πατημένο(0xBF), 17 \\VK_OEM_2  
} ως ΑΛ κάθε 50
Τύπωσε "οκ"
Νηματα
Αναμονή 100 \\ ξεκινάει το Λ μέσα στην αναμονή και μετά αλλάζουμε το χρόνο του!
Νήμα Λ Κάθε 6000
Κύριο.Έργο 100 {
      Διαμέσου Εμφ_Κλαβιέ(μμ, κκ, μμ2, κκ1)
      αν πατημένο(κωδ("1")) τότε έξοδος
      αν πατημένο(κωδ("3")) τότε οργ<=14 : τέμπο<=100 ' ξυλόφωνο
      αν πατημένο(κωδ("4")) τότε οργ<=5 : τέμπο<=300 ' Πιάνο
      αν πατημένο(κωδ("5")) τότε οργ<=65 : τέμπο<=5000 ' Σαξόφωνο
      αν πατημένο(κωδ("8")) τότε ν=1-ν
      αν πατημένο(κωδ("9")) τότε Νήμα Λ Ξεκίνα
      αν πατημένο(κωδ("0")) τότε Νήμα Λ Κράτα
      αν πατημένο(32) τότε { εντ$<="V127" } Αλλιώς εντ$<="V90"
      Τύπωσε "--------"
}
Τύπωσε "Τέλος"

Ρουτίνα Εμφ_Κλαβιέ(π0,υ0, π1, υ1)
      ανανεωση 5000
      Διαμέσου Κλαβιέ(π0, υ0, π1, υ1, 0, &Νοτα1$())
      Διαμέσου Κλαβιέ(π0-π1/2,υ0,π1,υ1*2/3, -1, &Νοτα2$())
      ανανέωση 50
Τέλος Ρουτίνας

Ρουτινα Κλαβιέ(π0, υ0,π1, υ1, π3, &Ν$())
      Ένωσε Ν$() στο Ν()
      π3-!
      Τοπικές κ=-1, ι
      Για ι=π0 εως 9*π1+π0 ανά π1
      κ++
      Αν Ν$(κ,0)<>"" Τότε {
            θέση ι+π3*π1/6, υ0
            Αν π3 τότε {
                  βαψε π1-π3*π1/3-15,υ1-15, 7* (1-(φων(Ν(κ,2))>0))+1, 0,1
            } Αλλιώς {
                  βαψε π1-15,υ1-15,15,7* (1-(φων(Ν(κ,2))=0))+1,1
            }
            θέση ι+π3*π1/6, υ0
            βαψε @ π1-π3*π1/3,υ1,2,1
            θέση ι+π3*π1/6, υ0+υ1-γραμ
             πένα π3*15 { βαψε @ π1-π3*π1/3,γραμ,5,Ν$(κ,ν)}
      }
      Επόμενο ι
Τέλος Ρουτίνας

Ρουτίνα ΓέμισεΠίνακα()
Τοπικές ν,π, ν$, κ$, νο
Σωρός Νέος {
      Σειρά "A#2", "A", 1, 1, 2
      Σειρά "B2", "Z", 2, 1, 1
      Σειρά "C3", "X", 3, 2, 1
      Σειρά "C#3", "D", 4, 3, 2
      Σειρά "D3", "C", 5, 3, 1
      Σειρά "D#3", "F", 6, 4, 2
      Σειρά "E3", "V", 7, 4, 1
      Σειρά "F3", "B", 8, 5, 1
      Σειρά "F#3", "H", 9, 6, 2
      Σειρά "G3", "N", 10, 6, 1
      Σειρά "G#3", "J", 11, 7, 2
      Σειρά "A3", "M", 12, 7, 1
      Σειρά "A#3", "K", 13, 8, 2
      Σειρά "B3", ",", 14, 8, 1
      Σειρά "C4", ".", 15, 9, 1
      Σειρά "C#4",";", 16 , 10, 2 \\ 10 μικρά - λείπουν μερικά
      Σειρά "D4", "/", 17, 10, 1 \\ 10 μεγάλα πλήκτρα
      Ενώ όχι κενό {
      Διάβασε ν$, κ$, νο, ν, π
            Αν π=1 τότε {
                νοτα1$(ν-1,0):= ν$, κ$, νο
            } Αλλιώς {
                  νοτα2$(ν-1,0):= ν$, κ$, νο
            }
      }
}
Τέλος Ρουτίνας



Και με μια οκτάβα πιο ψηλά (στο μέσον δηλαδή, η 4 είναι η μεσαία)

Πίνακας Νοτα1$(10,3), Νοτα2$(10,3)
διαμεσου ΓέμισεΠίνακα()
Φόρμα 60,30
Πένα 14
Οθονη 5
Διπλά
Αναφορά 2, "Πιανάκι 005"   
Κανονικά
Αναφορά 2,{Οδηγίες
1-Έξοδος  3-Ξυλόφωνο 4-Πιάνο 5-Σαξόφωνο  8-Πλήκτρα/Νότες 9-Ρυθμός Ναι 0-Ρυθμός Όχι


Διάστημα - Δυναμώνει τις νότες
-- Γιώργος Καρράς --


}
Σχέδιο.Νημάτων Διαδοχικό
Παίξε 0 \\ καθαρίζει το σύστημα
Γενική πλ$=" ", τέμπο=300, οργ=5, φ=0, εντ$="V90", φων(18), χρη(17) ' 0 ..17,
ν=1
Για ι=1 έως 16 { χρη(ι)=Αληθές }
χρη(10)= Ψευδές \\ για την drum machine
\\ υπολογισμός θέσης του κλαβιέ!
μμ=2*(χ.σημεια Δια 14)
μμ2= μμ δια 2
κκ=γραμμή/ύψος*υ.σημεια
κκ1=υ.σημεια/ύψος*8
γραμ=υ.σημεια/ύψος*1.5
Οθόνη , Γραμμή+9
Τμήμα Πλήκτρο {
      Διάβασε α$, πατ, επιλ
      αν πατ τοτε {
      Αν Θέση(πλ$,α$+"-")>0 τότε έξοδος
      διαμέσου Επομ()
      φων(επιλ)=φ \\ δεν χρειάζεται <=
      Τύπωσε α$, φ
      Φωνή φ, τεμπο, α$+εντ$ : πλ$<=πλ$+α$+"-": Παίξε φ, οργ
      } αλλιως {
            πλ$<=αλλαγή$(α$+"-","", πλ$)
            Αν φων(επιλ)>0 τότε {
             Παίξε φων(επιλ), 0 ' προσθήκη στην αναθ. 131
             χρη(φων(επιλ))~
             φων(επιλ)=0
             }
      }
      Ρουτίνα Επομ()
      τοπικη ι
      για ι=1 έως 16 {
            αν χρη(ι) τότε έξοδος
      }
      αν ι<17 τότε { φ<=ι : χρη(ι)~ } αλλιώς φ<=1: χρη(1)=αληθές : Τυπωσε "!!!!!!!!"
      Τέλος Ρουτίνας
}
\\ κανάλι 10 είναι το drum machine
Νήμα { Φωνή 10,400,"CV90CC  ab Cd eCC" : Παίξε 10,1 } ως Λ κάθε 60
Νήμα {
      πλήκτρο "A#3", πατημένο(κωδ("A")), 1
      πλήκτρο "B3", πατημένο(κωδ("Z")), 2
      πλήκτρο "C4", πατημένο(κωδ("X")), 3
      πλήκτρο "C#4", πατημένο(κωδ("D")), 4
      πλήκτρο "D4", πατημένο(κωδ("C")), 5
      πλήκτρο "D#4", πατημένο(κωδ("F")), 6
      πλήκτρο "E4", πατημένο(κωδ("V")), 7
      πλήκτρο "F4", πατημένο(κωδ("B")), 8
      πλήκτρο "F#4", πατημένο(κωδ("H")), 9
      πλήκτρο "G4", πατημένο(κωδ("N")), 10
      πλήκτρο "G#4", πατημένο(κωδ("J")), 11
      πλήκτρο "A4", πατημένο(κωδ("M")), 12
      πλήκτρο "A#4", πατημένο(κωδ("K")), 13
      \\ https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
      πλήκτρο "B4", πατημένο(0xBC), 14 \\ VK_OEM_COMMA
      πλήκτρο "C5", πατημένο(0xBE), 15 \\ VK_OEM_PERIOD
      πλήκτρο "C#5", πατημένο(0xBA), 16 \\ VK_OEM_1
      πλήκτρο "D5", πατημένο(0xBF), 17 \\VK_OEM_2  
} ως ΑΛ κάθε 50
Τύπωσε "οκ"
Νηματα
Αναμονή 100 \\ ξεκινάει το Λ μέσα στην αναμονή και μετά αλλάζουμε το χρόνο του!
Νήμα Λ Κάθε 6000
Κύριο.Έργο 100 {
      Διαμέσου Εμφ_Κλαβιέ(μμ, κκ, μμ2, κκ1)
      αν πατημένο(κωδ("1")) τότε έξοδος
      αν πατημένο(κωδ("3")) τότε οργ<=14 : τέμπο<=100 ' ξυλόφωνο
      αν πατημένο(κωδ("4")) τότε οργ<=5 : τέμπο<=300 ' Πιάνο
      αν πατημένο(κωδ("5")) τότε οργ<=65 : τέμπο<=5000 ' Σαξόφωνο
      αν πατημένο(κωδ("8")) τότε ν=1-ν
      αν πατημένο(κωδ("9")) τότε Νήμα Λ Ξεκίνα
      αν πατημένο(κωδ("0")) τότε Νήμα Λ Κράτα
      αν πατημένο(32) τότε { εντ$<="V127" } Αλλιώς εντ$<="V90"
      Τύπωσε "--------"
}
Τύπωσε "Τέλος"
Ρουτίνα Εμφ_Κλαβιέ(π0,υ0, π1, υ1)
      ανανεωση 5000
      Διαμέσου Κλαβιέ(π0, υ0, π1, υ1, 0, &Νοτα1$())
      Διαμέσου Κλαβιέ(π0-π1/2,υ0,π1,υ1*2/3, -1, &Νοτα2$())
      ανανέωση 50
Τέλος Ρουτίνας
Ρουτινα Κλαβιέ(π0, υ0,π1, υ1, π3, &Ν$())
      Ένωσε Ν$() στο Ν()
      π3-!
      Τοπικές κ=-1, ι
      Για ι=π0 εως 9*π1+π0 ανά π1
      κ++
      Αν Ν$(κ,0)<>"" Τότε {
            θέση ι+π3*π1/6, υ0
            Αν π3 τότε {
                  βαψε π1-π3*π1/3-15,υ1-15, 7* (1-(φων(Ν(κ,2))>0))+1, 0,1
            } Αλλιώς {
                  βαψε π1-15,υ1-15,15,7* (1-(φων(Ν(κ,2))=0))+1,1
            }
            θέση ι+π3*π1/6, υ0
            βαψε @ π1-π3*π1/3,υ1,2,1
            θέση ι+π3*π1/6, υ0+υ1-γραμ
             πένα π3*15 { βαψε @ π1-π3*π1/3,γραμ,5,Ν$(κ,ν)}
      }
      Επόμενο ι
Τέλος Ρουτίνας
Ρουτίνα ΓέμισεΠίνακα()
Τοπικές ν,π, ν$, κ$, νο
Σωρός Νέος {
      Σειρά "A#3", "A", 1, 1, 2
      Σειρά "B3", "Z", 2, 1, 1
      Σειρά "C4", "X", 3, 2, 1
      Σειρά "C#4", "D", 4, 3, 2
      Σειρά "D4", "C", 5, 3, 1
      Σειρά "D#4", "F", 6, 4, 2
      Σειρά "E4", "V", 7, 4, 1
      Σειρά "F4", "B", 8, 5, 1
      Σειρά "F#4", "H", 9, 6, 2
      Σειρά "G4", "N", 10, 6, 1
      Σειρά "G#4", "J", 11, 7, 2
      Σειρά "A4", "M", 12, 7, 1
      Σειρά "A#4", "K", 13, 8, 2
      Σειρά "B4", ",", 14, 8, 1
      Σειρά "C5", ".", 15, 9, 1
      Σειρά "C#5",";", 16 , 10, 2 \\ 10 μικρά - λείπουν μερικά
      Σειρά "D5", "/", 17, 10, 1 \\ 10 μεγάλα πλήκτρα
      Ενώ όχι κενό {
      Διάβασε ν$, κ$, νο, ν, π
            Αν π=1 τότε {
                νοτα1$(ν-1,0):= ν$, κ$, νο
            } Αλλιώς {
                  νοτα2$(ν-1,0):= ν$, κ$, νο
            }
      }
}
Τέλος Ρουτίνας


Υπάρχουν πληκτρολόγια που δέχονται έξι πλήκτρα μαζί! (έχω ένα Logitech K310 που παίζει 6 νότες μαζί). Σε φορητούς σπάνια παίζουν πάνω από δύο πλήκτρα. Με χρήση δεύτερου πληκτρολόγιου αυξάνουμε τα πλήκτρα που μπορούν να παίξουν ταυτόχρονα.

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου

You can feel free to write any suggestion, or idea on the subject.