Hi Martin.
Ich würde einzelne Klassen seperat schreiben:
1
Text auf MIDI-Noten umwandeln, die über irgendeinen SW-Synth
abspielen (der diese auf Audio-Signal umwandelt).
Ja, das ist eine gute Idee mit separat schreiben.
Durch die Definitionen wird der erste Teil schnell gemacht sein.
2
AudioIn vom Synthy als Stream abzuschicken.
Das ist gerade mein Problem. Ich brauche eine Schnittstelle. Ich habe im Laufe des Tages zwei Möglichkeiten gefunden. Entweder ich benutze die DSSI Schnittstelle, um dem Program Rosegarden die Midi-Inforamtion zu senden.
Oder ich benutze Timidity und schicke diesem Program über einen Midi-Port die Daten.
Rosegarden ist etwas überdimensioniert und benutzt JACK, was wiederum eine Midi-Soundkarte verlangt, wie ich das verstanden habe. Allerdings gibt es ein kleines DSSI-Tool, mit denen man einzelne Noten Senden könnte. Dann könnte ich über ein Script die Daten darüber versenden.
Timidity hab ich schon dazu bringen können, ne midi-Datei abzuspielen, allerdings hat dieses keine DSSI-Schnittstelle. Wie ich diesem Program einen Midi-Strom senden kann, ist mir noch nicht klar. Allerdings ist dieses Programm viel kleiner und macht einen besseren Eindruck auf mich.
NoteOn
byte status = 144;
byte data1 = der ASCII, der rein kommt;
byte data2 = Velocity (Anschlag), am besten so 80 konstant;
NoteOff
byte status = 128;
byte data1 = der ASCII, der rein kommt;
byte data2 = Release-Velocity, nicht so wichtig;
Das wäre für Kanal Null. Für weitere Kanaele 0…15 jeweils
auf das Statusbyte aufaddieren.
Das heißt, ich sende pro Kanal 3 Bytes, um ein Ton zu verändern.
Ich habe 16 Kanäle zur verfügung und muss somit pro 5-10 ms max. 48 Bytes senden.
Was ich noch nicht gefunden habe, ist die Definition der Schnittstellen, um diese selber zu schreiben. Ist das D-Bus, UDP, oder wie?
Von Streams verstehe ich nicht viel, da findet sich vielleicht
jemand anders hier am Brett. Du brauchst aber bloss die
Schnittstelle (Code) bei shoutcast, ALSA oder JACK anzugucken,
mit der man MIDI-Noten abschickt. Das geht dann auch live über
die Tastatur (!).
Du schreibst, um die Schnittstelle zu schreiben, sollte ich den Code durchchecken. Vielleicht ist das die beste Lösung.
Ich glaube, für den Anfang reicht mir das Abpsielen des Sounds und gleichzeitiges Aufnehmen desgleichen, um es dann mit Shoutcast zu versenden. Ich hoffe, daß die Geschwindigkeit meines Rechners das auch mitmacht.
Du musst Dich halt nur entscheiden, was es dann letzlich
werden soll, Audio-Stream oder eben MIDI.
Ja, stimmt eigentlich. Midi kann man ja eigentlich auch Streamen, oder? Dann könnte ich mir doch den ganzen ShoutCast-Block komplett sparen, oder?
Danke für die ersten Anregungen, viele Grüße, Lenny