Midis komponieren mit BB2D?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Froggy

Betreff: Midis komponieren mit BB2D?

BeitragSa, Jul 09, 2005 23:23
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Jul 09, 2005 23:40
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Jul 09, 2005 23:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Eigentlich brauche ich ein Midikomponierprogramm und will nichts installieren.

Digi_

BeitragSo, Jul 10, 2005 1:13
Antworten mit Zitat
Benutzer-Profile anzeigen
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..

TheShadow

Moderator

BeitragSo, Jul 10, 2005 10:15
Antworten mit Zitat
Benutzer-Profile anzeigen
das mit tmp-midi ist wohl der einfachste weg... denke ich mal...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

Froggy

BeitragSo, Jul 10, 2005 17:21
Antworten mit Zitat
Benutzer-Profile anzeigen
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_

BeitragSo, Jul 10, 2005 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
.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

BeitragSo, Jul 10, 2005 18:29
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Jul 18, 2005 12:34
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group