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

