BassMidi, hat das schon jemand zum Laufen bekommen ?

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1617
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

BassMidi, hat das schon jemand zum Laufen bekommen ?

Beitrag von corpsman »

Hallo Zusammen,
ich portiere ja gerade DOOM nach FPC und bin da mittlerweile auch schon an einem Recht pasablen Stand angekommen.
Neben diversen Themen ist eins davon aber leider das mit dem Sound. DOOM selbst nutzt sfx (was im Prinzip Wave ist) und was ich bereits mittels bass.pas abspielen kann.

Für die Musik werden "pseudo" midi files verwendet. Um überhaupt erst mal ein bisschen ins Thema rein zu kommen versuche ich nun das Beispiel von bassmidi zum laufen zu bekommen.
Hierzu habe ich
1. bassmidi.pas geladen
2. das miditest programm in Lazarus FPX nachgecoded (siehe Anlage)
3. eine test.mid Datei geladen (die sich mit dem Windows Media Player auch abspielen lässt)
4. auf den "Play" button gedrückt.
Vorschau.png
Vorschau.png (13.35 KiB) 6430 mal betrachtet
Man Sieht dass, nach ca 20sec auch "Liedtext" angezeigt wird, bzw die Länge des gesamtstücks auch ausgegeben wird. Nur leider wird kein Ton ausgegeben.

Daher die Frage, hat hier jemand Erfahrungen mit midi, bzw eine Idee was ich falsch mache ?
Das Beispiel im Anhang sollte unter Windows direkt laufen, für Linux muss erst noch ein bischen was getan werden ..
Dateianhänge
BASS_MIDI.zip
(257.2 KiB) 37-mal heruntergeladen
--
Just try it

Benutzeravatar
Zvoni
Beiträge: 363
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: BassMidi, hat das schon jemand zum Laufen bekommen ?

Beitrag von Zvoni »

Du hast keinen SoundFont (Ich hoffe du weisst was ein SoundFont in dem Zusammenhang ist)

https://sites.google.com/site/soundfonts4u/

in deiner unit1.pas scheitert diese If-Anweisung

Code: Alles auswählen

If BASS_MIDI_FontGetInfo(fSoundfont, FontInfo) Then
    lbSoundfont.Caption := 'name: ' + FontInfo.name + LineEnding +
      'loaded: ' + Format('%d / %d', [FontInfo.samload, FontInfo.samsize])
  Else
    lbSoundfont.Caption := 'no soundfont';
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1617
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: BassMidi, hat das schon jemand zum Laufen bekommen ?

Beitrag von corpsman »

Wenn ich ehrlich bin hab ich nicht verstanden was diese SoundFont sein soll, da muss ich dann wohl erst mal lernen was das ist und woher man die bekommt..
--
Just try it

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 580
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 3.9 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
Kontaktdaten:

Re: BassMidi, hat das schon jemand zum Laufen bekommen ?

Beitrag von Niesi »

corpsman hat geschrieben: Mo 17. Feb 2025, 13:43 Wenn ich ehrlich bin hab ich nicht verstanden was diese SoundFont sein soll, da muss ich dann wohl erst mal lernen was das ist und woher man die bekommt..
Vielleicht hilft Dir das hier weiter (ab Minute 16):

https://www.youtube.com/watch?v=64XaJXY ... z&index=14
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Benutzeravatar
Zvoni
Beiträge: 363
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: BassMidi, hat das schon jemand zum Laufen bekommen ?

Beitrag von Zvoni »

ein MIDI-File ist im Prinzip eine "digitale" Form eines Musik-Notenblatts
--> "Spiele im dritten Takt auf dem Klavier eine 3/4-Note A" (sehr vereinfacht ausgedrückt)

Gleichzeitig, teilt sich das auf in verschiedene "Kanäle" (welche mehr oder weniger gleichzeitig abgefragt werden)
Beispiel:
Kanal 1 = Piano
Kanal 2 = Violine
Kanal 3 = Trommel
usw.

Ein Soundfont (wie der Name impliziert, eine "Klang-Schriftart"), "übersetzt" die Informationen dann auch tatsächlich in "Klang"
"Font" kann man hier sogar tatsächlich wörtlich nehmen.
Eine Tastatur schickt den digitalen Code für "S" an den Rechner über das OS, dann an die Anwendung.
Abhängig von dem Font, den du nutzt, sieht das Ergebnis unterschiedlich aus.
Das ist jetzt natürlich sehr vereinfacht!!

Klingt lustig, die Kanäle für Gitarre mit Saxophon zu ersetzen.
Kann man viel Unfug mit treiben
Wenn ich ehrlich bin hab ich nicht verstanden was diese SoundFont sein soll, da muss ich dann wohl erst mal lernen was das ist und woher man die bekommt..
Err.....meinen Link oben gesehen?

Hier noch ein paar Links:
https://www.reddit.com/r/FL_Studio/comm ... ?rdt=46858
https://www.polyphone.io/en/soundfonts
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1617
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: BassMidi, hat das schon jemand zum Laufen bekommen ?

Beitrag von corpsman »

*g*,

den link hatte ich schon gesehen aber noch nicht geprüft. Ich meinte eher, dass in DOOM ja alles dabei ist, also muss ich in der .wad nach dieser Soundfont suchen

Gefunden habe ich bisher dass hier:

https://www.doomworld.com/idgames/docs/editing/mus_form

Da schreiben sie was von einer Notentabelle => Frequenzen und Dauern. Da ich aber so gar keine Ahnung von Musik habe, hatte ich darauf gehofft die beiden Formate einfach in einander um zu rechnen und gut. Aber so wie ihr das beschreibt, scheint das dann doch komplizierter zu sein :/
--
Just try it

Benutzeravatar
Zvoni
Beiträge: 363
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: BassMidi, hat das schon jemand zum Laufen bekommen ?

Beitrag von Zvoni »

Vielleicht hier?
https://www.doomworld.com/forum/topic/1 ... oundfonts/

P.S.: Wenn ich mich recht erinner, können/werden solche Soundfonts in der Regel als Ressource eingebunden (werden), es sei denn du willst dem User die Möglichkeit bieten, das selbst einzustellen
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1617
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: BassMidi, hat das schon jemand zum Laufen bekommen ?

Beitrag von corpsman »

*g*, das hab ich auch gefunden, da schreibt der erste Poster, ja dass im .wad eine 3mb soundfont drin sei und die 10mb Version hinter dem kaputten github link besser wäre. Also gillt es die 3MB version zu finden ...
--
Just try it

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1617
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: BassMidi, hat das schon jemand zum Laufen bekommen ?

Beitrag von corpsman »

hmm, also ich hab nu irgend eine von diesen Soundfonds geladen und ins Program geschaufelt:
Vorschau_2.png
Vorschau_2.png (25.01 KiB) 6285 mal betrachtet
Angeblich nutz die App das auch nun, aber ich höre leider immer noch nichts :/

Kann es sein, dass solche font files nicht kompatibel sind zu midi files ?

Hab auch mal das Aktualisierte Projekt mit angehängt, falls ihr damit spielen wollt, der Code läuft nu auch unter Linux, wenn man die .so nach /user/lib kopiert..
Dateianhänge
midi.zip
(3.94 KiB) 35-mal heruntergeladen
--
Just try it

Mathias
Beiträge: 6899
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: BassMidi, hat das schon jemand zum Laufen bekommen ?

Beitrag von Mathias »

Ich würde es mit sdl_mixer machen, diese Unit ist bei fpc dabei und ist sehr einfach in der Handhabung.
Ist zwar von alten SDL1.2, aber dies sollte reichen.
gstreamer ist auch noch eine Variante, ist aber ein wenig komplexer.

Hier ein Programm von mir, da sollte es auf Anhieb laufen.

https://github.com/sechshelme/Lazarus-S ... ing_Sounds
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Bullykiffer
Beiträge: 17
Registriert: Fr 9. Aug 2024, 19:44
OS, Lazarus, FPC: Windows 10 (L 3.4.0 FPC 3.2.2)
CPU-Target: Windows 64-Bit
Wohnort: Nordvorpommern

Re: BassMidi, hat das schon jemand zum Laufen bekommen ?

Beitrag von Bullykiffer »

Moin...

BassDLL steht mir in Zukunft auch noch bevor,muß noch ein altes Delphi 6 Programm auf Lazarus portieren.

Deinem Bild entnehme ich,das er von deinem Soundfont nichts in den Speicher geladen hat.
MIDI Instrummente im "Digitalen Notenblatt" sind auf Instrummente im Soundfont bezogen,
wenn ich das noch richtig in erinnerung habe,
Intern wird da sicherlich mit ID's gearbeitet. Wenn jetzt die Bezüge zu den Instrumenten fehlen,weil keine ID der Instrumente im Midi mit
dem Soundfont ID's übereinstimmt,dann lädt er auch dementsprechend keine Instrumente in den Speicher, Ergo kein Ton ;)

Die Instrumente aus der Midi Datei müssten also angepasst werden auf das Soundfont was du nutzt.

LMMS wäre zum Beispiel so ein Tool,womit du das machen könntest (Kann viel mehr,kannst auch deine Eigenen Stücke mit schreiben).
Da scheint schon seit längerem nicht mehr altiv was gemacht zu werden,aber läuft unter WIN und Linux und Freeware.

Cya de Helge

Edit wegen Rechtschreibung.

Benutzeravatar
Zvoni
Beiträge: 363
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: BassMidi, hat das schon jemand zum Laufen bekommen ?

Beitrag von Zvoni »

Nochmals zum Verständnis:
MIDI ist eine Technologie, um diverse "Abläufe" direkt auf einem digitalen Instrument (=Synthesizer) zu automatisieren.
Beispiel: "Alleinunterhalter" (unsäglich bekannt von Hochzeiten!)
Dieser hat in seinem Yamaha-Synthesizer drölfzig verschiedene Sounds (Streicher, Gitarren, Schlagzeug und haste nicht gesehen bzw. gehört)
Da dieser Alleinunterhalter ja nicht alle "Instrumente" gleichzeitig bedienen kann, lädt er ein MIDI-File in seinen Synthesizer, welcher ihm alles abnimmt, ausser seinem eigenen Part
(Also quasi sein eigenes "Playback").
Und dieses MIDI-File steuert eben direkt die jeweils benannten Instrumente zum benannten Zeitpunkt an (Siehe oben Analogie eines Notenblatts --> Denk mal an eine Symphonie: 80 Mann, alle mit dem "gleichen" Notenblatt, und jeder weiss wann er welche Note zu spielen hat).
Ein MIDI-File ist im Prinzip wie eine Partitur, ein SoundFont das Orchester

Diese Synthesizer haben diese Soundmodule schon integriert. Es gibt auch "externe" Soundmodule (muss also nicht mal ne Klaviatur haben).
Diese Dinger haben aber zu der damaligen Zeit aber richtig Geld gekostet.
Zumal die damals (ich rede von Anfang der 90er) aufstrebende Gaming-Industrie diesselbe "Qualität" an Sound haben wollte.
Daraus sind dann eben die "SoundFonts" entstanden: Eine Software-basierte "Nachbildung" der "Hardware" aus diesen Synthis.

P.S.: Und am Ende muss natürlich noch ein Output-Device definiert werden.
Ist dein Lautsprecher überhaupt an? :lol:
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Mathias
Beiträge: 6899
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: BassMidi, hat das schon jemand zum Laufen bekommen ?

Beitrag von Mathias »

Und dieses MIDI-File steuert eben direkt die jeweils benannten Instrumente zum benannten Zeitpunkt an (Siehe oben Analogie eines Notenblatts --> Denk mal an eine Symphonie: 80 Mann, alle mit dem "gleichen" Notenblatt, und jeder weiss wann er welche Note zu spielen hat).
Da mag ich mich noch erinnern, ich hatte mal eine recht gute Soundkarte, mit der man Instrumente hochladen konnte. Doom tönte dann wie in einem Orchester.
Aber das war nicht der Grund, das früher viele Games midi hatten, der Hauptgrund war der Speicherplatz. Doom hatte auf ein paar Disketten Platz. Hätte man da den Hintegrundmusik als WAV gespeichert, hätte die ein CD gefüllt. MP3 gab es noch nicht.

Wie schon gesagt. Unter dem Moto hautsache es tönt, reicht SDL_Mixer locker.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten