Midis komponieren mit BB2D?
Übersicht

FroggyBetreff: Midis komponieren mit BB2D? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
gibt es in BlitzBasic 2D einen Befehl, mit dem man einen einzelnen Miditon abspielen kann? Ich meine jetzt nicht, dass man einen Ton ins Spiel lädt, sondern dass man die Miditöne abspielt. Z.B. ich will ein a von einer Flöte. Also gebe ich Playmidi(Flute,a) ein oder so. Wenn das nicht der Fall sein sollte: Hat jemand einen Ton, der immer gleichbleibt? Das heisst er soll vielleicht eine Viertelsekunde lang sein und immer schön konstant bleiben. Danke |
||
Kekskiller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielleicht über die API... Weiß nicht, glaube nicht, dass jemand das hier jmals schon gefragt hat. Wozu brauchst du es denn? Vielleicht könnte man Alternativen finden. | ||
Froggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Eigentlich brauche ich ein Midikomponierprogramm und will nichts installieren. | ||
![]() |
Digi_ |
![]() Antworten mit Zitat ![]() |
---|---|---|
da du dir ja sowieso die datenstruktur der midifiles anschauen wirst, kannst du ja beim abspielen (ohne gespeichert zu haben) einfach kurz eine temporäre mididatei anlegen, und diese spielen lassen..
ich habe aber ka ob das so ginge.. |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
das mit tmp-midi ist wohl der einfachste weg... denke ich mal... | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Froggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ihr versteht nicht, was ich meine.
Aber könnt ihr mir sagen, wie ich windows media audiodateien in BB abspielen kann? was für einen kürzel haben die? .wma geht nicht. |
||
![]() |
Digi_ |
![]() Antworten mit Zitat ![]() |
---|---|---|
.wmv?
und ja, wir verstehen nicht was du meinst, sondern nur was du schreibst. du willst doch midikomponierprogramm, oder etwa willst du eine antwort auf die zwei fragen von deinem erstem beitrag hier? ein doppeltes nein |
||
Kekskiller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie sollen wir auch was davon verstehen, wenn du mitten im Thread dein "Topic" änderst. Was willst du jetzt, wm* oder midi-kram? Wenn du nichts erklärst, kann keiner wissen, was du willst. Aus deinem ersten Post wolltest du DIREKT Miditöne abspielen, wo sich hier keiner mit auskennt. | ||
Froggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hier seht ihr, was ich meine.
Den Code einfach in einer BB-Datei abspeichern und den Sound Beep.wav aus "..\help\resources\samples\sounds" in den Ordner kopieren. Das mit Playmidi(Flute,a) geht nicht, habe ich in einem BB Buch gelesen. Dann speichert den unteren Text in eine ".txt" Datei namens Musik und stellt diese in den Projektordner. Ihr könnt nun Musik abspielen auswählen und es spielt eine Herr der Ringe Musik ab. Wenn ihr eine neue Musik aufnehmt, wird die alte Musik.txt Datei überspielt. Projekt: Code: [AUSKLAPPEN] Graphics 320,240,16,2
AppTitle "Music Maker" SetBuffer BackBuffer() Ton = LoadSound("Beep.wav") Dim Toeneaufnahme(999999) Dim Toenebeginn(999999) Oktave = 4 OktaveZ = 2 Repeat wahl = 1 Repeat Cls Color 255,255,255 Text 0,0, "[ ] Musik komponieren" Text 0,14,"[ ] Musik abspielen" Text 0,28,"[ ] Musik spielen" Text 0,42,"[ ] Beenden" Color 255,0,0 If KeyHit(200) Then Wahl = Wahl - 1 If KeyHit(208) Then wahl = wahl + 1 Text 0,Wahl*14-14, " X" Flip Until KeyHit(28) Color 255,255,255 Aufnahme = 0 Aufnahmedauer = 0 Tonnr = 0 For I = 0 To 999999 Toeneaufnahme(I) = 0 Toenebeginn(I) = 0 Next If Wahl = 1 Or Wahl = 3 Then Repeat Cls If KeyHit(200) Then Oktave = Oktave * 2 Oktavez = oktavez + 1 EndIf If KeyHit(208) Then Oktave = Oktave / 2 Oktavez = oktavez - 1 EndIf If KeyHit(203) Or KeyHit(205) Then If T = 1 Then T = 0 Else T = 1 EndIf EndIf If Oktavez < 1 Then Oktavez = 1 Oktave = 2 EndIf If Oktavez > 5 Then Oktavez = 5 Oktave = 2^5 EndIf Tons$ = "" If T = 0 Then If KeyHit(30) Then J = 14400 :Tons$ = "c" If KeyHit(17) Then J = 15400 :Tons$ = "c#" If KeyHit(31) Then J = 16100 :Tons$ = "d" If KeyHit(18) Then J = 17200 :Tons$ = "d#" If KeyHit(32) Then J = 18200 :Tons$ = "e" If KeyHit(33) Then J = 19100 :Tons$ = "f" If KeyHit(20) Then J = 20600 :Tons$ = "f#" If KeyHit(21) Then J = 20600 :Tons$ = "f#" If KeyHit(22) Then J = 20600 :Tons$ = "f#" If KeyHit(36) Then J = 21500 :Tons$ = "g" If KeyHit(23) Then J = 23000 :Tons$ = "g#" If KeyHit(37) Then J = 24200 :Tons$ = "a" If KeyHit(24) Then J = 26000 :Tons$ = "a#" If KeyHit(38) Then J = 27400 :Tons$ = "h" If KeyHit(39) Then J = 28800 :Tons$ = "c" If KeyHit(26) Then J = 30800 :Tons$ = "c#" EndIf If T = 1 Then If KeyDown(30) Then J = 14400 :Tons$ = "c" If KeyDown(17) Then J = 15400 :Tons$ = "c#" If KeyDown(31) Then J = 16100 :Tons$ = "d" If KeyDown(18) Then J = 17200 :Tons$ = "d#" If KeyDown(32) Then J = 18200 :Tons$ = "e" If KeyDown(33) Then J = 19100 :Tons$ = "f" If KeyDown(20) Then J = 20600 :Tons$ = "f#" If KeyDown(21) Then J = 20600 :Tons$ = "f#" If KeyDown(22) Then J = 20600 :Tons$ = "f#" If KeyDown(36) Then J = 21500 :Tons$ = "g" If KeyDown(23) Then J = 23000 :Tons$ = "g#" If KeyDown(37) Then J = 24200 :Tons$ = "a" If KeyDown(24) Then J = 26000 :Tons$ = "a#" If KeyDown(38) Then J = 27400 :Tons$ = "h" If KeyDown(39) Then J = 28800 :Tons$ = "c" If KeyDown(26) Then J = 30800 :Tons$ = "c#" EndIf J = J * Oktave / 4 If Aufnahme = 1 Then Aufnahmedauer = Aufnahmedauer + 1 For I = 17 To 39 If KeyDown(I) And Wahl = 1 Then Aufnahme = 1 Toeneaufnahme(Tonnr) = J Toenebeginn(Tonnr) = Aufnahmedauer Tonnr = Tonnr + 1 EndIf Next If J > 0 Then Kanal = PlaySound(Ton) ChannelPitch Kanal, J Text 0,28,"Frequenz: " + J Delay 100 EndIf Text 0,0,"Oktave: "+Oktavez Text 0,14,"Ton: "+Tons$ If T = 1 Then Text 0,42,"Taste halten" If T = 0 Then Text 0,42,"Taste drücken" Text 0,56,"Pfeiltaste oben = Oktave höher" Text 0,70,"Pfeiltaste unten = Oktave tiefer" Text 0,84,"Pfeiltaste links = Taste halten/drücken" Text 0,98,"Pfeiltaste rechts = Taste halten/drücken" Text 0,112,"Escape = Zurück" Color 255,0,0 If Wahl = 1 Then Text 0,126,"Wenn du den ersten Ton drückst, beginnt" Text 0,140,"die Aufnahme. Einfach etwas spielen." Text 0,154,"Aufnahmedauer: " + Aufnahmedauer + " Millisekunden" EndIf Color 255,255,255 Flip 1 J = 0 Until KeyHit(1) If Wahl = 1 Then Datei = WriteFile("Musik.txt") WriteLine Datei, Tonnr-1 For I = 0 To Tonnr-1 WriteLine Datei, Toeneaufnahme(I) WriteLine Datei, Toenebeginn(I) Next CloseFile Datei EndIf EndIf Zeitabspieler = 0 If Wahl = 2 Then Datei = OpenFile("Musik.txt") Tonnr = ReadLine(Datei) For I = 0 To Tonnr Toeneaufnahme(I) = ReadLine(Datei) Toenebeginn(I) = ReadLine(Datei) Next CloseFile Datei Tonabspieler = 0 Repeat If Toenebeginn(Tonabspieler) = Zeitabspieler Then If Toeneaufnahme(Tonabspieler) > 0 Then Kanal = PlaySound(Ton) ChannelPitch Kanal, Toeneaufnahme(Tonabspieler) EndIf Tonabspieler = Tonabspieler + 1 EndIf Delay 16 Cls Text 0,0,"Frequenz: " + Toeneaufnahme(Tonabspieler-1) Text 0,14,"Abspieldauer: " + Zeitabspieler + " / " + Toenebeginn(Tonnr) Flip Zeitabspieler = Zeitabspieler + 1 Until Tonabspieler > Tonnr EndIf Until wahl = 4 End "Musik.txt" Code: [AUSKLAPPEN] 20 8050 0 7200 57 7200 108 7200 113 8050 127 10750 239 12100 244 13000 250 12100 299 10750 303 9550 310 10750 368 12100 375 10750 382 9550 452 9100 486 8050 517 7200 587 7200 644 7200 652 8050 661 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group