Autor Beitrag
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1448

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Mo 06.05.13 22:24 
Hallo,
nachdem ich unter "Ton erstellen" www.entwickler-ecke....iewtopic.php?t=84203 meinen ersten Versuch, MIDI-Töne zu erzeugen vorgestellt hatte, habe ich heute noch etwas weitergemacht und denke, dass ein eigener Thread unter Open Source Projekte besser ist. :nixweiss:

Ich hatte bei "Ton erstellen" schon gesagt, dass ich von Musik so viel Ahnung habe, wie "die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst" (frei nach Einstein).
Ohne das Beispielprogramm von user profile iconhathor zur MIDI-Erzeugung, wäre es auch nie etwas geworden.

tonausgabe

Im Programm werden einzelne Töne über MIDI ausgegeben.
Neben ein paar Schaltern zur Tonausgabe kann man auf der Klaviertastatur mit der Maus die entsprechenden Töne erzeugen.
Die zur Auswahl stehenden Instrumente habe ich auf vorerst 9 reduziert.

Da im Fernsehen, außer "Der Anstalt", nichts los war, musste ich mit meinen kaum vorhandenen Notenkenntnissen versuchen, drei bekanntere Stücke in eine für mein Programm lesbare Form zu bringen.
Wählt Ihr Melodie 1 bis 3 aus, so müsste es eigentlich funktionieren.

Als Mathematiker habe ich auch PI in Töne transformiert. 50 werden hintereinander abgespielt und es klingt grauenvoll schön. Dazu muss der letzte Eintrag rechts gewählt werden.

Ich weiß, dass jeder Musikcomputerprofi nur müde lächeln wird :P , aber ich find's schön. Und ich hätte nie gedacht, dass ich mit meinen Musikfähigkeiten so etwas hinbekomme.

Beste Grüße
Mathematiker

Rev 1/2: beide Audiokanäle müssten jetzt angesprochen werden; das Beispiel "Für Elise" ist vollständig und fehlerfreier.
Rev 3: Fremdkomponenten entfernt.
Rev 4: Erweiterung der Tonleiter um Töne von MIDI-Nr. 36 bis 86. Tasten und Noten sind miteinander verbunden.
Rev 5: Tonlänge einstellbar. 1.Teil der "Bilder einer Ausstellung" jetzt vollständig.
Rev 6: Dank user profile iconhathors Hilfe gibt es jetzt Volume und Balance; zlib entfernt und neues Beispiellied.
Rev 7: Die Balance stellt sich mit der aktuellen Lautstärke ein.
Rev 8: Instrumentenwechsel während des Abspielens möglich, "Hummelflug" ist jetzt vollständig.
Rev 9: Rechtschreibfehler beseitigt.
Rev 10: Weitere Instrumente und zusätzlich "Yesterday".
Einloggen, um Attachments anzusehen!
_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein


Zuletzt bearbeitet von Mathematiker am Sa 11.05.13 13:06, insgesamt 14-mal bearbeitet

Für diesen Beitrag haben gedankt: Anika
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Mo 06.05.13 22:29 
Moin Mathematiker,

Zwei Probleme:
1. Das Programm friert ein, solange ein Ton abgespielt wird
2. Nur der Linke Audiokanal wird genutzt. €: Okay, etwas Signal kommt auch rechts an. Aber wenig.

Ansonsten doch schon ganz ordentlich :)

Gruß
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1448

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Mo 06.05.13 22:41 
Hallo,
user profile iconFinnO hat folgendes geschrieben Zum zitierten Posting springen:
1. Das Programm friert ein, solange ein Ton abgespielt wird
2. Nur der Linke Audiokanal wird genutzt. €: Okay, etwas Signal kommt auch rechts an. Aber wenig.

Danke für die Hinweise.
Und schon habe ich das Problem, dass ich wieder nicht weiß, was ich eigentlich mache.
Linker/Rechter Audiokanal? Toll, was es gibt. Da werde ich wohl suchen müssen, wo man so etwas einstellen kann. Im Moment habe ich keine Ahnung.
Mit dem Einfrieren meinst Du wohl, dass man nicht schnell hintereinander zwei Töne anklicken kann. Da muss ich mir auch noch etwas einfallen lassen.

Jetzt werde ich erst einmal bei "Für Elise" weitere Töne, Ton für Ton, vom Notenblatt ablesen und in "meine" spezielle Form bringen.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Mo 06.05.13 23:19 
Bevor du dich ärgerst: Es gibt ein midi-Dateiformat. Ich finde nur gerade keine wirklich sinnvolle Dokumentation...

Für diesen Beitrag haben gedankt: Mathematiker
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 06.05.13 23:27 
Übrigens: Gute MIDI-Beschreibung:
de.wikipedia.org/wik...nt_Digital_Interface

Volume: Das ist im Programm drin, aber deaktiviert...

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure Tfmus.GetMidiVolume(var volLe, volRi: Word);
var vol: DWORD;
begin
 volLe := 0;
 volRi := 0;
 midiOutGetVolume(0, @vol);
 volLe := vol and $FFFF;
 volRi := vol shr 16;
 //Weiterbearbeitung...
end;

procedure Tfmus.SetMidiVolume(var volLe, volRi: Word);
var vol: DWORD;
begin
 vol := volLe + volRi shl 16;
 midiOutSetVolume(0, vol);
end;

Für diesen Beitrag haben gedankt: Mathematiker
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1448

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Di 07.05.13 19:50 
Hallo,
user profile iconhathor hat folgendes geschrieben Zum zitierten Posting springen:
Volume: Das ist im Programm drin, aber deaktiviert...

Danke für den Hinweis, habe ich jetzt aktiviert und hoffe, dass beide Kanäle abgespielt werden.

Das mit dem "einfrierenden" Programm beim Tonabspielen muss ich noch überdenken.
Zumindest habe ich das Beispielstück "Für Elise" vervollständigt und ein paar Fehler beseitigt.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1448

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Mi 08.05.13 22:18 
Hallo,
Rev 4 ist die wahrscheinlich letzte Änderung des Programms.
Die angezeigte Tonleiter wurde auf alle Töne von MIDI-Nr. 36 bis 86 erweitert. Klickt man auf eine Taste wird die Note angezeigt und umgekehrt.
Da keine Frendkomponenten mehr enthalten sind, müsste der Quelltext sich ab Delphi 5 problemlos compilieren lassen.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 09.05.13 09:07 
Ich habe eine andere ZLIB-Version (DELPHI 2009)

Folgende Änderung erforderlich:

ausblenden Delphi-Quelltext
1:
2:
//     DecompressBuf(InpBuf, sz, 0, OutBuf, OutBytes);
      ZDecompress(InpBuf, sz, OutBuf, OutBytes);

Für diesen Beitrag haben gedankt: Mathematiker
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1448

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Do 09.05.13 12:30 
Hallo,
eigentlich wollte ich ja mit dem Programm aufhören, aber naja ...
In der Revision 5 ist jetzt die Tonlänge einstellbar. Irgendwie habe ich den Eindruck, dass die Beispiele bei verschiedenen Instrumenten unterschiedlich schnell abgespielt werden müssten.
Außerdem habe ich den 1.Teil "Promenade" des Beispiels "Bilder einer Ausstellung" jetzt vollständig.

Ganz nebenbei: Ich dachte, Lennons "Imagine" oder Melanies "Ruby Tuesday" würden sich auch ganz gut als Beispiele eignen. Dabei habe ich erst einmal mitbekommen, wie teuer(!) Noten im WWW gehandelt werden. Soweit geht meine "Liebe" zu MIDI dann nun auch wieder nicht.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 09.05.13 13:11 
"Du kommst hier nicht raus!" :lol:

Volume, Mute und Balance (+Mitte) hinzugefügt.
Einloggen, um Attachments anzusehen!

Für diesen Beitrag haben gedankt: Mathematiker
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1448

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Do 09.05.13 21:58 
Hallo,
user profile iconhathor hat folgendes geschrieben Zum zitierten Posting springen:
"Du kommst hier nicht raus!" :lol:

Das befürchte ich auch. Habe heute schon wieder einige Stunden mit dem Programm gekämpft.
user profile iconhathor hat folgendes geschrieben Zum zitierten Posting springen:
Volume, Mute und Balance (+Mitte) hinzugefügt.

Vielen Dank.
Ich habe auch Deine Farbgebung übernommen und ein paar weitere kleinere Änderungen durchgeführt.

Weiterhin habe ich zlib rausgeworfen. Solange die Daten für die Musikbeispiele ungepackt nur 15 k sind, kann man auf die Kompression verzichten. Außerdem kann ich Dein ZLib mit meinem Delphi 5 nicht compilieren.
Als 4.Beispiel habe ich Rimski-Korsakows "Hummelflug" (noch nicht vollständig) hinzugefügt.

Weißt Du, wie man zwei verschiedene Instrumente gleichzeitig spielen lassen kann?

Beste Grüße
Mathematiker

Nachtrag: In Rev 7 stellt sich die Balance mit der aktuellen Lautstärke ein.

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 10.05.13 10:04 
SoundInit verschoben, damit ein Instrument-Wechsel auch während des Abspielens einer Melodie möglich ist.
Das ergibt einen tollen Effekt!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
...
//    soundinit;
    tonan:=false;
    i:=0;
    repeat
    soundinit;
      s:=melodieliste[i];
      case s[1of
...
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1448

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Fr 10.05.13 11:25 
Hallo,
user profile iconhathor hat folgendes geschrieben Zum zitierten Posting springen:
SoundInit verschoben, damit ein Instrument-Wechsel auch während des Abspielens einer Melodie möglich ist.
Das ergibt einen tollen Effekt!

Wunderbar. Allerdings habe ich den Instrumentenwechsel zur Instrumentenauswahl mit
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TFMus.RadioGroup1Click(Sender: TObject);
begin
    if not abbruch then soundinit;
end;

kopiert. Dadurch muss nicht vor jedem Ton das Instrument neu gewählt werden.

Außerdem habe ich den "Hummelflug" als Beispiel jetzt vollständig. Wenn ich Klavier spielen könnte oder wenigstens etwas Ahnung von Noten hätte, wäre es nicht so mühsam, Note für Note in die MIDI-Nr. umzuwandeln. Aber es ist geschafft!

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 10.05.13 11:38 
Übrigens:

Musik ist eine andere Form von Mathematik.


www.sengpielaudio.co...chner-notennamen.htm

Siehe DP:
www.delphipraxis.net...75-tmidiplayer2.html

MIDI-Files zum Downloaden:
Quelle unbekannt - habe ich schon ca. 5 Jahre...(damals hatte ich noch ein Siemens-Handy S55, das MIDI-Files abspielen konnte)
Evtl. von hier:
ez4mobile.com/nokiatone/midi.htm
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von hathor am Mi 22.05.13 14:26, insgesamt 2-mal bearbeitet

Für diesen Beitrag haben gedankt: Anika, Mathematiker
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 22.05.13 11:00 
Moin!

@user profile iconhathor: Kannst du bitte eine Quelle/Lizenz zu dem Download angeben? :nixweiss: Du wirst die MIDI-Files sicher nicht selbst erstellt haben... ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1448

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Mo 27.05.13 23:04 
Hallo,
da ich mit www.entwickler-ecke....pic_Piano_91145.html nun langsam verstehe, wie man selbst MIDI-Dateien erzeugen und vor allem so abspielen kann, dass die entsprechenden Töne angezeigt werden, werde ich nun die mühevoll vom Notenblatt übertragenen Liedbeispiele in MIDI transformieren.

Solange es sich um ältere, gemeinfreie(?) Kompositionen handelt, dürfte es auch keine rechtlichen Probleme geben.

Wie sieht es aber aus, wenn ich z.B. etwas aus der "Neuzeit" abtippen und in MIDI umwandeln will, z.B. "Candle in the wind", "In a gadda da vida" oder solche Dinge aus meiner Jugend, also eigentlich steinalt :wink: ?
Konkret: Kann ich urheberrechtliche Probleme bekommen, wenn ich von einem Notenblatt die Töne ablese und diese in MIDI-Noten übersetze? Kennt sich da jemand aus?

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Di 28.05.13 00:37 
Moin,

user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
Kennt sich da jemand aus?

Nein, ich antworte aber trotzdem :mrgreen:

user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,
da ich mit www.entwickler-ecke....pic_Piano_91145.html
Konkret: Kann ich urheberrechtliche Probleme bekommen, wenn ich von einem Notenblatt die Töne ablese und diese in MIDI-Noten übersetze?

und zwar mit einem Zitat.
de.wikipedia.org/wik...krechte#MIDI-Dateien hat folgendes geschrieben:
Über das Setzen eines Musikstückes in das MIDI-Format können zwar die Verwertungsrechte der beteiligten Musiker einer Aufnahme umgangen werden, nicht jedoch der Urheberschutz selbst. Rechtlich gesehen handelt es sich dabei sogar um eine Bearbeitung, für welche eigentlich die Erlaubnis der Rechteinhaber benötigt wird. Kurze MIDI-Ausschnitte zu Zitatzwecken sind tendenziell geduldet, jedoch nicht unumstritten.


Ich bezweifle allerdings stark, dass du in diesem Rahmen hier Probleme bekommen wirst.

Für diesen Beitrag haben gedankt: Mathematiker