Midi-Programm schreiben (Grundausführungen &so)
Re: Midi-Programm schreiben (Grundausführungen &so)
Hallo
bei mir funktionieren die beispiele nicht,bekomme ständig fehler meldungen in zeilen 37,38,55,56,60,61,62.Ich habe Pure Besic 4.30
MfG
Oliver
bei mir funktionieren die beispiele nicht,bekomme ständig fehler meldungen in zeilen 37,38,55,56,60,61,62.Ich habe Pure Besic 4.30
MfG
Oliver
Re: Midi-Programm schreiben (Grundausführungen &so)
Welche Beispiele genau?Oliver90 hat geschrieben:bei mir funktionieren die beispiele nicht,bekomme ständig fehler meldungen in zeilen 37,38,55,56,60,61,62.
Wie lauten die Fehlermeldungen?
<SCNR>musst Du PureBasic nehmen. Dann klappt's auch.</SCNR>Oliver90 hat geschrieben:Ich habe Pure Besic 4.30
Grüße ... Kiffi
Re: Midi-Programm schreiben (Grundausführungen &so)
Hallo Kiffi
Ich habe mit diesen Beispiel probleme
bei zeile 37 steht:Invalid memory access(read error at adress 4294833381)
bei zeile 38 steht:The specified #Image is not initialized
MfG
Oliver
PS.
bin neu bei PureBasic
--------- codetags ergänzt - bobobo
Ich habe mit diesen Beispiel probleme
Code: Alles auswählen
Structure NotesGadget
SAG.l ;ScrollAreaGadget
ImgG.l ;ImageGadget
IMG.l ;Image
width.l
height.l
Notes.s ;String mit Noten (z.B. Alle meine Entchen "4cdef2gg4aaaa1g4aaaa1g4ffff2ee4gggg1c")
EndStructure
Global NewList _NotesGadget.NotesGadget()
Procedure NotesGadget(x.l, y.l, width.l, height.l, ScrollWidth.l, ScrollHeight.l)
If AddElement(_NotesGadget())
With _NotesGadget()
\IMG = CreateImage(#PB_Any, ScrollWidth, ScrollHeight)
StartDrawing(ImageOutput(\IMG))
Box(0, 0, ScrollWidth, ScrollHeight, $FFFFFF)
StopDrawing()
If \IMG
\SAG = ScrollAreaGadget(#PB_Any, x, y, width, height, ScrollWidth, ScrollHeight, 1)
\ImgG = ImageGadget(#PB_Any, 0, 0, ScrollWidth, ScrollHeight, ImageID(\IMG))
\width = ScrollWidth
\height = ScrollHeight
ProcedureReturn @NotesGadget()
Else
DeleteElement(_NotesGadget())
ProcedureReturn #False
EndIf
EndWith
EndIf
EndProcedure
Procedure SetNotes(*Gadget.NotesGadget, Notes.s)
Protected z.s, length.l = -1, a.l, slength.l, pos.l = -1
With *Gadget
[color=#004080] \Notes = Notes[/color] StartDrawing(ImageOutput(\IMG))
[color=#008080] slength = Len(Notes)[/color] For a = 1 To slength
z = Mid(Notes, a, 1)
If z >= "0" And z <= "9"
length = Val(z)
Else
Select LCase(z)
Case "c" : pos = 0
Case "d" : pos = 1
Case "e" : pos = 2
Case "f" : pos = 3
;...
EndSelect
;Mal Note mit DrawText()
EndIf
Next
StopDrawing()
SetGadgetState(\ImgG, ImageID(\IMG))
EndWith
EndProcedure
Procedure FreeNotesGadget(*Gadget.NotesGadget)
With *Gadget
FreeGadget(\ImgG)
FreeGadget(\SAG)
FreeImage(\IMG)
ChangeCurrentElement(_NotesGadget(), *Gadget)
DeleteElement(_NotesGadget())
EndWith
EndProcedure
;//////////////////////////////////////////////////////////////
Enumeration 0 ;/ #Window_*
#Window_0
EndEnumeration
OpenWindow(#Window_0, 0, 0, 600/2, 480/2, "<title>", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateGadgetList(WindowID(#Window_0))
*gadget.NotesGadget = NotesGadget(10, 10, 200, 150, 200, 150)
Debug *gadget
SetNotes(*gadget, "4cdef2gg4aaaa1g4aaaa1g4ffff2ee4gggg1c")
Define lWindowEvent.l
Repeat
lWindowEvent = WaitWindowEvent()
Select lWindowEvent
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
FreeNotesGadget(*gadget)
End
Structure NotesGadget
SAG.l ;ScrollAreaGadget
ImgG.l ;ImageGadget
IMG.l ;Image
width.l
height.l
Notes.s ;String mit Noten (z.B. Alle meine Entchen "4cdef2gg4aaaa1g4aaaa1g4ffff2ee4gggg1c")
EndStructure
Global NewList _NotesGadget.NotesGadget()
Procedure NotesGadget(x.l, y.l, width.l, height.l, ScrollWidth.l, ScrollHeight.l)
If AddElement(_NotesGadget())
With _NotesGadget()
\IMG = CreateImage(#PB_Any, ScrollWidth, ScrollHeight)
StartDrawing(ImageOutput(\IMG))
Box(0, 0, ScrollWidth, ScrollHeight, $FFFFFF)
StopDrawing()
If \IMG
\SAG = ScrollAreaGadget(#PB_Any, x, y, width, height, ScrollWidth, ScrollHeight, 1)
\ImgG = ImageGadget(#PB_Any, 0, 0, ScrollWidth, ScrollHeight, ImageID(\IMG))
\width = ScrollWidth
\height = ScrollHeight
ProcedureReturn @NotesGadget()
Else
DeleteElement(_NotesGadget())
ProcedureReturn #False
EndIf
EndWith
EndIf
EndProcedure
Procedure SetNotes(*Gadget.NotesGadget, Notes.s)
Protected z.s, length.l = -1, a.l, slength.l, pos.l = -1
With *Gadget
\Notes = Notes
StartDrawing(ImageOutput(\IMG))
slength = Len(Notes)
For a = 1 To slength
z = Mid(Notes, a, 1)
If z >= "0" And z <= "9"
length = Val(z)
Else
Select LCase(z)
Case "c" : pos = 0
Case "d" : pos = 1
Case "e" : pos = 2
Case "f" : pos = 3
;...
EndSelect
;Mal Note mit DrawText()
EndIf
Next
StopDrawing()
SetGadgetState(\ImgG, ImageID(\IMG))
EndWith
EndProcedure
Procedure FreeNotesGadget(*Gadget.NotesGadget)
With *Gadget
FreeGadget(\ImgG)
FreeGadget(\SAG)
FreeImage(\IMG)
ChangeCurrentElement(_NotesGadget(), *Gadget)
DeleteElement(_NotesGadget())
EndWith
EndProcedure
;//////////////////////////////////////////////////////////////
Enumeration 0 ;/ #Window_*
#Window_0
EndEnumeration
OpenWindow(#Window_0, 0, 0, 600/2, 480/2, "<title>", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateGadgetList(WindowID(#Window_0))
*gadget.NotesGadget = NotesGadget(10, 10, 200, 150, 200, 150)
Debug *gadget
SetNotes(*gadget, "4cdef2gg4aaaa1g4aaaa1g4ffff2ee4gggg1c")
Define lWindowEvent.l
Repeat
lWindowEvent = WaitWindowEvent()
Select lWindowEvent
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
FreeNotesGadget(*gadget)
End
bei zeile 38 steht:The specified #Image is not initialized
MfG
Oliver
PS.
was ist das ?<SCNR>musst Du PureBasic nehmen
bin neu bei PureBasic
--------- codetags ergänzt - bobobo
Re: Midi-Programm schreiben (Grundausführungen &so)
Hallo Oliver90,
wo hast Du den Code her? Aus diesem Board eher nicht, oder?
// Edit: Alles klar. Gefunden
Nach 'Säuberung' des Codes (so wie Du ihn gepostet hast, ist er
nicht lauffähig) bekomme auch ich einen IMA (invalid memory access).
Kann es sein, dass Du ihn falsch oder unvollständig kopiert hast?

Grüße ... Kiffi
wo hast Du den Code her? Aus diesem Board eher nicht, oder?
// Edit: Alles klar. Gefunden
Nach 'Säuberung' des Codes (so wie Du ihn gepostet hast, ist er
nicht lauffähig) bekomme auch ich einen IMA (invalid memory access).
Kann es sein, dass Du ihn falsch oder unvollständig kopiert hast?
war nur ein alberner Seitenhieb auf Deinen Typo in "Pure Besic". Nicht so ersnt nehmen.was ist das ?<SCNR>musst Du PureBasic nehmen
bin neu bei PureBasic
Grüße ... Kiffi
a²+b²=mc²
Re: Midi-Programm schreiben (Grundausführungen &so)
Hallo Kiffi
dieses Beispiele ist vom diesen Thread von SimonSimCity
MfG
Oliver
PS.ich möchte so ein kleines Midi Programm schreiben,kannst Du mir Helfen ?
dieses Beispiele ist vom diesen Thread von SimonSimCity
,eigentlich nichtKann es sein, dass Du ihn falsch oder unvollständig kopiert hast
sorry,ist mir nicht aufgefallenwar nur ein alberner Seitenhieb auf Deinen Typo in "Pure Besic". Nicht so ersnt nehmen
MfG
Oliver
PS.ich möchte so ein kleines Midi Programm schreiben,kannst Du mir Helfen ?
Re: Midi-Programm schreiben (Grundausführungen &so)
so läuft es zumindest schon mal ohne Fehlermeldung:Oliver90 hat geschrieben:PS.ich möchte so ein kleines Midi Programm schreiben,kannst Du mir Helfen ?
Code: Alles auswählen
Structure NotesGadget
SAG.l ;ScrollAreaGadget
ImgG.l ;ImageGadget
IMG.l ;Image
width.l
height.l
Notes.s ;String mit Noten (z.B. Alle meine Entchen "4cdef2gg4aaaa1g4aaaa1g4ffff2ee4gggg1c")
EndStructure
Global NewList NotesGadget.NotesGadget()
Procedure xNotesGadget(x.l, y.l, width.l, height.l, ScrollWidth.l, ScrollHeight.l)
If AddElement(NotesGadget())
With NotesGadget()
\IMG = CreateImage(#PB_Any, ScrollWidth, ScrollHeight)
StartDrawing(ImageOutput(\IMG))
Box(0, 0, ScrollWidth, ScrollHeight, $FFFFFF)
StopDrawing()
If \IMG
\SAG = ScrollAreaGadget(#PB_Any, x, y, width, height, ScrollWidth, ScrollHeight, 1)
\ImgG = ImageGadget(#PB_Any, 0, 0, ScrollWidth, ScrollHeight, ImageID(\IMG))
\width = ScrollWidth
\height = ScrollHeight
ProcedureReturn @NotesGadget()
Else
DeleteElement(NotesGadget())
ProcedureReturn #False
EndIf
EndWith
EndIf
EndProcedure
Procedure SetNotes(*Gadget.NotesGadget, Notes.s)
Protected z.s, length.l = -1, a.l, slength.l, pos.l = -1
With *Gadget
\Notes = Notes
StartDrawing(ImageOutput(\IMG))
slength = Len(Notes)
For a = 1 To slength
z = Mid(Notes, a, 1)
If z >= "0" And z <= "9"
length = Val(z)
Else
Select LCase(z)
Case "c" : pos = 0
Case "d" : pos = 1
Case "e" : pos = 2
Case "f" : pos = 3
;...
EndSelect
;Mal Note mit DrawText()
EndIf
Next
StopDrawing()
SetGadgetState(\ImgG, ImageID(\IMG))
EndWith
EndProcedure
Procedure FreeNotesGadget(*Gadget.NotesGadget)
With *Gadget
FreeGadget(\ImgG)
FreeGadget(\SAG)
FreeImage(\IMG)
ChangeCurrentElement(NotesGadget(), *Gadget)
DeleteElement(NotesGadget())
EndWith
EndProcedure
Enumeration 0 ;/ #Window_*
#Window_0
EndEnumeration
OpenWindow(#Window_0, 0, 0, 600/2, 480/2, "<title>", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
*Gadget.NotesGadget = xNotesGadget(10, 10, 200, 150, 200, 150)
Debug *Gadget
SetNotes(*Gadget, "4cdef2gg4aaaa1g4aaaa1g4ffff2ee4gggg1c")
Define lWindowEvent.l
Repeat
lWindowEvent = WaitWindowEvent()
Select lWindowEvent
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
FreeNotesGadget(*Gadget)
EndTeil (das Zeichnen der Noten) ist gar nicht im Code vorhanden.
Es ging im wesentlichen darum, dass NTC einen kleinen Democode zur
Verfügung gestellt hat, in dem ein benutzerdefiniertes Gadget
(NotesGadget) erstellt wird.
Hier müsstest Du in der Zeile
Code: Alles auswählen
;Mal Note mit DrawText()Grüße ... Kiffi
a²+b²=mc²
Re: Midi-Programm schreiben (Grundausführungen &so)
Hallo Kiffi
Programm läuft jetzt ohne fehlermeldung,aber wenn ich das Programm starte, kann ich keine Midi Datei öffnen
MfG
Oliver
Programm läuft jetzt ohne fehlermeldung,aber wenn ich das Programm starte, kann ich keine Midi Datei öffnen
MfG
Oliver
Re: Midi-Programm schreiben (Grundausführungen &so)
ja, das ist so OK. Denn der Code macht nichts anderes, alsOliver90 hat geschrieben:Programm läuft jetzt ohne fehlermeldung,aber wenn ich das Programm starte, kann ich keine Midi Datei öffnen
ein Grundgerüst zur Verfügung zu stellen, um Midi-Noten darzustellen.
Es ist nicht dafür gedacht, Midi in irgendeiner Form abzuspielen.
Grüße ... Kiffi
a²+b²=mc²
Re: Midi-Programm schreiben (Grundausführungen &so)
bei mal ";Mal Note mit DrawText()" kannst du mal
eingeben, damit du mal siehst was da im programm eigentlich verzapft wird.
und mach das xNodegadget etwas größer (die Breite des darzustellenden xNodegadgets ist
abhängig von der Anzahl der darzustellenden Noten).
Code: Alles auswählen
drawtext(a*10,80-pos*10,z)
und mach das xNodegadget etwas größer (die Breite des darzustellenden xNodegadgets ist
abhängig von der Anzahl der darzustellenden Noten).
Code: Alles auswählen
xNotesGadget(10, 10, 280, 220, 600, 300)
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Re: Midi-Programm schreiben (Grundausführungen &so)
Hallo Kiffi
MfG
Oliver
das möchte ich nicht,ich möchte ein kleines Midi-Editor schreiben der mir die Noten(Tonhöhe & Tonlänge)zeigt,einzigste Problem den ich habe ist:ich weiß nicht,wie kann ich eine Midi-Datei öffnen und die Byts im Hex-Format anzeigenEs ist nicht dafür gedacht, Midi in irgendeiner Form abzuspielen
MfG
Oliver