Seite 3 von 4

Verfasst: 08.10.2004 06:23
von SoS
Creature hat geschrieben: was sagt du dazu? :mrgreen:
Wer mal mit nem Basicinterpreter gearbeitet hat kennt die Antwort.
Alle Kommentare und Leerzeilen löschen (das war früher Gift für die Geschwindigkeit) und schon kommst du auf schlappe 486 Zeilen :D
Da kannste dann noch ein komplettes Konzert reincoden :lol:

Verfasst: 08.10.2004 10:40
von bobobo
Froggerprogger hat geschrieben: ..
kleine Aufgabe für alle:
Postet mal ein paar nette Melodien ! :)
Erst wenn Du das Programm dahingehend erweiterst dass es die Wavedateien optional abspeichert.

Verfasst: 08.10.2004 11:52
von Froggerprogger
Ich hatte befürchtet, dass jemand sowas wünscht...
Das ist nicht so einfach dahin zu erweitern. (Aber mit fmod, ja mit fmod, da wäre das kein Problem, denn mit fmod, ja fmod, könnte man einfach das Summensignal abgreifen und in eine Datei schreiben...)

Alternative, welche allerdings weniger das gute alte QB-Realzeit-Parsen-Feeling hätte, wäre, generell einfach durch eine abgewandelte Prozedur aus einem 'PlayString' eine WAV-Datei zu machen, indem man in dieser Prozedur 'per Hand' manuell die Töne reinmalt...
Ist vielleicht sowieso die beste Idee ?
Dann hat man kein Thread-Problem und kann mit dem gesamten Song später machen was man möchte, er muss dabei auch gar nicht auf die Festplatte geschrieben werden, sondern kann auch temporär im Speicher bleiben (und mit CatchSound geholt werden).

Oje.
So wie es ausschaut, schreibe ich das nochmal um :)

Aber wohl nicht dieses Wochenende, da bin ich nicht zu Hause, und nächste Woche beginnt Uni.
Allerdings fahre ich insgesamt 6 Stunden Zug :D

Verfasst: 08.10.2004 12:06
von bobobo
Froggerprogger hat geschrieben:..befürchtet...
Wenn ein sound mit catchsound geholt werden kann (und das kann er in Deinem Programm) dann kann er sicher auch mit einem optionalen SaveSound auf die Platte gepackt werden.. Ich dachte an ein Auslesen des Speicherbereichs den der Sound okkupiert. (Falls dieser Speicherbereich die WaveDatei komplett darstellt) ..
Froggerprogger hat geschrieben:..muss dabei auch gar nicht auf die Festplatte geschrieben werden..
was allerdings gerade was nettes wäre .. Weiterverarbeitung ... auf CD brennen und so weiter .. genau .. eine CD nur Pieplieder zum Verschenken an unliebsame Leute :)

Verfasst: 08.10.2004 13:40
von NicTheQuick
Ich hab hier mal die erste von drei Seiten Summertime eingegeben. Klingt schonmal ganz gut und hat auch gar nicht mal so lange gedauert.

Code: Alles auswählen

Melodie.s = "T120 P1 P1 P1 P1 P1 P1 P2 L4 O4 ec L1 e P4 L8 dcde L4 c > L2 ae. P4 < L4 ec L8 d L2 d. P4 L8 c>a<c>a< L4 c L1 >b"
Right_1.s = "T120 O3 L8 e-ce-dc>a<cd L2 e P08 L8 >a<cd P2 <afd>bgec>a P2 P1 P4 <<< L4 f+ P4 g+ P4 f+ >ec L1 e P4 L8 dcde L4 c > L2 a L1 e L4 <ec L8 d L2 d. L4 c L8 c>a<c>a< L4 c L8 >b>b<ee-d>h<f+f"
Right_2.s = "T120 P1 P1 O3 L1 eeee L2 e P2 f+g+f+g+edc L4 g+f+f L8 gg+ L4 a L8 b-b L2 <c L4 >ed+ P8 >b. L2 a"
Right_3.s = "T120 P1 P1 P1 P1 P1 P4 O4 L4 f+ P4 g+ P4 f+ P2 P1 P1 L2 >c P2 P1 P1 d P2 P1"
Left_1.s  = "T120 O2 L8 -ec-edc>a<cd L2 e P08 L8 >a<cd P1 P2 L4 f+g+f+g+f+g+ L2 f+g+f+g+ <cdcd>f+g+f+ L4 <dc>a L8 b-b L4 <c. L8 c+ L4 >4deff+ L2 ed+"
Left_2.s  = "T120 P1 P1 O2 L1 eeeee L2 eeee>aba L4 <ee L2 df L1 >a L2 g+b"
Left_3.s  = "T120 P1 P1 P1 P1 P1 P1 P1 O1 L2 abab P1 P2 L4 ba P1 P1 P1"

*Melodie = QBPlayEx2(Melodie, 100, 1, #QBPlay_Tone_Sin, 100, 100)
*Right_1 = QBPlayEx2(Right_1,  60, 1, #QBPlay_Tone_Sin, 2, 100)
*Right_2 = QBPlayEx2(Right_2,  60, 1, #QBPlay_Tone_Sin, 2, 100)
*Right_3 = QBPlayEx2(Right_3,  60, 1, #QBPlay_Tone_Sin, 2, 100)
*Left_1  = QBPlayEx2(Left_1,   60, 1, #QBPlay_Tone_Sin, 2, 100)
*Left_2  = QBPlayEx2(Left_2,   60, 1, #QBPlay_Tone_Sin, 2, 100)
*Left_3  = QBPlayEx2(Left_2,   60, 1, #QBPlay_Tone_Sin, 2, 100)

QBPlay_Start(*Melodie)

QBPlay_Start(*Right_1)
QBPlay_Start(*Right_2)
QBPlay_Start(*Right_3)

QBPlay_Start(*Left_1)
QBPlay_Start(*Left_2)
QBPlay_Start(*Left_2)

While QBPlay_IsPlaying(*Melodie)
  Delay(100)
Wend

MessageRequester("Summertime", "Lied ist zu Ende")
///Edit: Hab noch etwas verbessern müssen. Dazu muss aber auch noch der Code von FroggerProgger etwas geändert werden. Es gab nämlich Probleme bei punktierten Noten, die zusätzlich noch ein Vorzeichen hatten.

Dazu muss man in die Procedure [c]QBPlay_Update()[/c] gehen und unter der riesigen Select-Abfrage diesen Code:

Code: Alles auswählen

    If parseToIncDecEnd ; parse all following '+', '-' or '.'
      While *char\b & $FF = '+' Or *char\b & $FF = '-' Or *char\b & $FF = '.'
        If *char\b & $FF = '+'
          noteToPlay + 1 
        ElseIf *char\b & $FF = '-'
          noteToPlay - 1
        Else
          noteLength * 2.0 / 3.0
        EndIf 
        *char + 1
        *p_song\actPos + 1
      Wend
      If noteToPlay < 1  : noteToPlay = 1  : EndIf
      If noteToPlay > 96 : noteToPlay = 96 : EndIf
      If noteLength < 1.0 : noteLength = 1.0 : EndIf
      playNow = 1
     
    ; If parseToIncDecEnd ; parse all following '+' or '-' 
      ; While *char\b & $FF = '+' Or *char\b & $FF = '-'
        ; If *char\b & $FF = '+'
          ; noteToPlay + 1 
        ; Else 
          ; noteToPlay - 1 
        ; EndIf 
        ; *char + 1 
        ; *p_song\actPos + 1 
      ; Wend 
      ; If noteToPlay < 1  : noteToPlay = 1  : EndIf 
      ; If noteToPlay > 96 : noteToPlay = 96 : EndIf 
      ; While *char\b & $FF = '.' 
        ; noteLength * 2.0 / 3.0 
        ; *char + 1 
        ; *p_song\actPos + 1 
      ; Wend 
      ; If noteLength < 1.0 : noteLength = 1.0 : EndIf 
      ; playNow = 1 
einfügen. Der kommentierte Code im unteren Bereich war der alte.

Verfasst: 08.10.2004 14:25
von Creature
SoS hat geschrieben:
Creature hat geschrieben: was sagt du dazu? :mrgreen:
Wer mal mit nem Basicinterpreter gearbeitet hat kennt die Antwort.
Alle Kommentare und Leerzeilen löschen (das war früher Gift für die Geschwindigkeit) und schon kommst du auf schlappe 486 Zeilen :D
Da kannste dann noch ein komplettes Konzert reincoden :lol:
oh mann, du hast recht.. :oops:
ich habe jahrelang mit interpretern gearbeitet und hätte selbst darauf kommen müssen. habe allerdings auch nie vor einem solchen "problem" gestanden...

@robert wünsche,

hiermit entschuldige ich mich öffentlich und in aller form... :cry:

Verfasst: 08.10.2004 14:56
von NicTheQuick
Ich habe mal noch einen schönen Swing von Duke Ellington in den Code gebracht. Allerdings wieder nur die erste Seite.

Code: Alles auswählen

;{/ Satin Doll
Melodie.s = "t120 p1 p1 p1 p1 o3 l8 a. l16 g l8 a l4 g a. p8 a. l8 g l4 a. l8 b. l16 a l8 b l4 a b. p8 b. l8 a l4 b. p8 <d. l8 c l4 d.> p8 b-.a- l8 b- l1 g. p2 p8"

Right_1.s = "t120 o3 l8 a. l16 g+ l8 a l4 b-b-. l8 b. l16 a+ l8 b l4 b-b-. l8 a. l16 g+ l8 a l4 a-a-. gf+gg+ l8 a. l16 g l8 a l4 g a. p8 a. l8 g l4 a. l8 b. l16 a l8 b l4 a b. p8 b. l8 a l4 b. p8 <d. l8 c l4 d.> p8 b-.a- l8 b- l4 g p16 l16 e l8 f l4 g l8 ef l4 g p16 l16 e l8 f l4 g b-."
Right_2.s = "t120 o3 l4 f.g-g-.g.g-g.f.f-f.e-de-ef. l2 f p4 l4 f. l2 f l4 g. l2 g p4 l4 g. l2 g p8 l4 g. l2 f+ p8 l4 g-.f.e- p4 l2 cd l8 e p8 l4 f+."
Right_3.s = "t120 o3 l4 c.d-d-.d.d-d-.c.c-c-.>-bab-bc. l2 >b< p4 l4 c. l2 >b< l4 d. l2 c+ p4 l4 d. l2 c+ p8 l4 c. l2 d p8 l4 e-.d.c p4 l2 >ab l8 c+ p8 l4 c+."

Left_1.s  = "t120 o1 l4 d.e-e-.e.e-e-.d.d-d-.c>b<c+c l2 d l4 gc+ l2 d l4 g l8 f+f l2 e l4 ad+ l2 e l4 ae l2 e-da- l4 d-. c p4 l2 fe l4 a a."
Left_2.s  = "t120 p1 p1 p1 p1 p1 p1 p1 p1 p1 p1 p4 p8 o2 l2 c>b p8 p2"
Left_3.s  = "t120 p1 p1 p1 p1 p1 p1 p1 p1 p1 p1 p4 p8 o2 l2 fe l4 gg."

*Melodie = QBPlayEx2(Melodie, 100, 1, #QBPlay_Tone_Tan, 100, 5)
*Right_1 = QBPlayEx2(Right_1,  60, 1, #QBPlay_Tone_Sin, 10, 100)
*Right_2 = QBPlayEx2(Right_2,  60, 1, #QBPlay_Tone_Sin, 10, 100)
*Right_3 = QBPlayEx2(Right_3,  60, 1, #QBPlay_Tone_Sin, 10, 100)
*Left_1  = QBPlayEx2(Left_1,   80, 1, #QBPlay_Tone_Sin, 10, 100)
*Left_2  = QBPlayEx2(Left_2,   80, 1, #QBPlay_Tone_Sin, 10, 100)
*Left_3  = QBPlayEx2(Left_2,   80, 1, #QBPlay_Tone_Sin, 10, 100)

QBPlay_Start(*Melodie)

QBPlay_Start(*Right_1)
QBPlay_Start(*Right_2)
QBPlay_Start(*Right_3)

QBPlay_Start(*Left_1)
QBPlay_Start(*Left_2)
QBPlay_Start(*Left_2)

While QBPlay_IsPlaying(*Melodie)
  Delay(100)
Wend

MessageRequester("Satin Doll", "Lied ist zu Ende")

Verfasst: 08.10.2004 15:34
von PMV
Hm, na das ist doch mal ne Schöne Soundroution :D ... danke Nic für die Lieder ... leider "Knackt" es dort bei mir ein bischen, aber vermutlich dank des OnBoard Sounds -_-. Ach ja und äh das 1 Lied was du da rein geamcht hast hört sich doch ein bischen seltzam an -_- fast schlimmer wie meine versuche mit der vorversion *gg*

Mal sehen was ich damit später mal anstelle ... ist aber so bestimmt zu irgend was nützte 8)

MFG PMV

Verfasst: 08.10.2004 15:38
von bobobo
Bei Nic Liedchens (:allright:) fällt mir auf dass mein Rechner (onboardSoundkarte natürlich) zu lahm ist das alles richtig rauszubringen.

ne "Speichern als Wave"-Funktion wäre göttlich und würde echt helfen.. : :

Verfasst: 08.10.2004 15:47
von PMV
hm ... stimmt, das stockt manchmal ... ob das 1 lied deswegen bei mir so schlimm ist /:-> ... beim zweiten ists gut, da stocks glaub ich auch nicht ... naja pech -_- :?

Jo, Speicherfunktion zu WAV wäre noch hilfreich *Froggerproggeranstichel* :mrgreen:

MFG PMV