M2000 Γλώσσα Προγραμματισμού
Θέλετε να αντιδράσετε στο μήνυμα; Φτιάξτε έναν λογαριασμό και συνδεθείτε για να συνεχίσετε.

Πρόγραμμα Πιάνο (με συγχορδίες)

Πήγαινε κάτω

Πρόγραμμα Πιάνο (με συγχορδίες) Empty Πρόγραμμα Πιάνο (με συγχορδίες)

Δημοσίευση από m2000 Σαβ Ιουν 11, 2016 11:00 am

Πίνακας Νοτα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#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
Τύπωσε "οκ"
Νηματα
Νήμα Λ Κάθε 6000
Κύριο.Έργο 100 {
      Διαμέσου Εμφ_Κλαβιέ(μμ, κκ, μμ2, κκ1)
Ανανέωση 1000
      αν πατημένο(κωδ("1")) τότε έξοδος
      αν πατημένο(κωδ("3")) τότε οργ<=14 : τέμπο<=100 ' ξυλόφωνο
      αν πατημένο(κωδ("4")) τότε οργ<=5 : τέμπο<=300 ' Πιάνο
      αν πατημένο(κωδ("5")) τότε οργ<=65 : τέμπο<=5000 ' Σαξόφωνο
      αν πατημένο(κωδ("8")) τότε ν=1-ν
      αν πατημένο(κωδ("9")) τότε Νήμα Λ Ξεκίνα
      αν πατημένο(κωδ("0")) τότε Νήμα Λ Κράτα
      αν πατημένο(32) τότε { εντ$ <= "V127"  } Αλλιώς εντ$ <= "V90"
      Τύπωσε "--------"
}
Νήματα Σβήσε
Τύπωσε "Τέλος"
Ρουτίνα Εμφ_Κλαβιέ(π0,υ0, π1, υ1)
      Διαμέσου Κλαβιέ(π0, υ0, π1, υ1, 0, &Νοτα1$())
      Διαμέσου Κλαβιέ(π0-π1/2,υ0,π1,υ1*2/3, -1, &Νοτα2$())
Τέλος Ρουτίνας
Ρουτινα Κλαβιέ(π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):= ν$, κ$, νο
            }
      }
}
Τέλος Ρουτίνας
m2000
m2000
Admin

Posts : 27
Join date : 10/06/2016
Age : 57
Location : Kanallaki Greece

https://m2000.forumgreek.com

Επιστροφή στην κορυφή Πήγαινε κάτω

Επιστροφή στην κορυφή


 
Δικαιώματα σας στην κατηγορία αυτή
Δεν μπορείτε να απαντήσετε στα Θέματα αυτής της Δ.Συζήτησης