![]() |
TPCMDrawer - Bilder hören statt sehen
Liste der Anhänge anzeigen (Anzahl: 3)
Hallo zusammen!
Ja, interessanter Thread-Titel, nicht wahr? :wink: Was verbirgt sich hinter dem TPCMDrawer? Und wie, zum Belzebub, kann man Bilder hören? Ein wenig zur Vorgeschichte: Der werte User delfiphan hat, im Konkurenzforum *hüstel*, vor ziemlich genau 2 Jahren ein ![]() Nach dem dann die Faszination ein wenig nachgelassen hat und ich wieder klar denken konnte :wink: habe ich mich mit der BASS.dll dran gemacht, ähnliche Töne zu kreieren. Das hat auch irgendwann (nach studieren der RIFF WAVE-Spezifikationen, aufarbeiten der theoretischen Hintergründe, ziemlich viel Verzweiflung, ein Schubs in die richtige Richtung von delfiphan [vielen Dank nochmal dafür!] und einer Nacht drüber schlafen) recht gut geklappt. Dann habe ich aus dem Projekt, welches die BASS.dll benötigt eine 190-Zeilen-Klasse ohne irgendwelche externen Abhängigkeiten (DLLs, Units, etc.) gebastelt. Und genau diese PCMDrawer.pas, mit der man ohne großen Aufwand recht nett anzuhörende/anzusehende Audio-Dateien erstellen kann, stelle ich der OpenSource-Gemeinde, unter der "Creative Commons Attribution-ShareAlike (CC by-sa)"-Lizenz zur Verfügung. Kurz gesagt: Ihr könnt alles damit machen, solange Ihr meine Wenigkeit in Euren Resultaten erwähnt und die Projekte in ähnlicher Form verbereitet werden. Im Anhang befindet sich die PCMDrawerDemo.zip, in der sich der komplette Sourcecode inklusive einer Demo-Echse und einem Kompilat der Demo befindet. In der Beispiel.zip befindet sich eine Bitmap-Datei und das (zu einer MP3 komprimierte) Ergebnis der Demo. Zum Ansehen der Töne empfehle ich, wie auch delfiphan im zitierten Thread, ![]() Viel Spaß damit! Grüße Michael |
Re: TPCMDrawer - Bilder hören statt sehen
Liste der Anhänge anzeigen (Anzahl: 1)
Wirklich sehr interessant.
Habe mal ein paar Veränderungen vorgenommen... |
Re: TPCMDrawer - Bilder hören statt sehen
Ah, an ähnliches habe ich auch schon gedacht. Wird ASAP (As Slow As Possible; oder wie war das? :stupid: ) mit meinem lokalen Versionsstand abgeglichen und im Start-Posting upgedated. Danke!
|
Re: TPCMDrawer - Bilder hören statt sehen
Liste der Anhänge anzeigen (Anzahl: 2)
Sieht toll aus. Nen Tipp noch:
Im Eingangsposting wird auf SAnalyser verwiesen. Wenn man jetzt bei dem netten Link auch noch den Letzten Punkt aus der Adresse entfernen würde, würde imho der Zugriff auf die Datei auch gewährleistet sein. Bernhard EDIT: Aber an der Funktionsweise hapert es noch ein bisschen. (Siehe Anhang) Auch die erstellte Datei wollte sich überhaupt nicht mit WMP öffnen lassen, da WMP einen Codec wollte. Seit wann braucht man für simples WAVE einen speziellen Codec? |
Re: TPCMDrawer - Bilder hören statt sehen
Zitat:
Zitat:
|
Re: TPCMDrawer - Bilder hören statt sehen
Hi,
Hört sich interessant an, sieht interessant aus :mrgreen: Allerdings erstellt bei mir deine Demo-exe keine abspielbaren wav Dateien. Woran kann das liegen? |
Re: TPCMDrawer - Bilder hören statt sehen
Bei mir erstellt sie Wav-Dateien, die zumindest in VLC keinen Mucks von sich geben.. also nicht wirklich "Bilder hören".
|
Re: TPCMDrawer - Bilder hören statt sehen
Hmmm... anscheinend halte ich mich doch an einigen Punkten nicht an die RIFF WAVE - Spezifikationen, so dass der WMP die Datei nicht abspielen kann (maybe vice versa?). Ich werd' mal schaun', was sich da machen lässt; ist wahrscheinlich nur eine Kleinigkeit im Header.
VLC spielt die erstellten Dateien bei mir problemlos ab. Hab' ich bei mir ein Codec installiert, den sonst niemand hat?! :| WinAmp macht da keine Probleme. Auch mein AudioPlayer AudioDB (siehe meine Sig.) kann diese Dateien wiedergeben und solch ein Sonagramm zeichnen (zugegebener Maßen ein wenig verzerrt, da die Auflösung wesentlich höher ist); vielleicht könnt Ihr es ja damit mal probieren. Edit: Jo, liegt am Header. Das kommt davon, wenn man sowas nur mit einem Player (WinAmp) ausprobiert... |
Re: TPCMDrawer - Bilder hören statt sehen
So, ich hoffe, dass die Version 0.11 jetzt auch WMP- und VLC-kompatible Wave-Dateien generiert; bei mir funktioniert es zumindest.
Desweiteren kann TPCMDrawer jetzt auch "Graustufen" darstellen, vorher wurden nur alle schwarzen [RGB(0,0,0)] Pixel hörbar gemacht. Alle Änderungen vom omata wurden übernommen. Die Klasse ist jetzt von TThread abgeleitet, ob es auch so funktioniert wie es funktionieren soll - keine Ahnung, ich hab jetzt auch kein Bock mehr das ausgiebig zu testen :lol: . Der Download im ersten Beitrag wurde entsprechend aktualisiert. |
Re: TPCMDrawer - Bilder hören statt sehen
Liste der Anhänge anzeigen (Anzahl: 1)
Jetzt siehts schon weit besser aus. Es fehlt nur noch die Funktion, aus dem Ton ein Bild zurückzuholen
Bernhard |
Re: TPCMDrawer - Bilder hören statt sehen
Zitat:
Momentan bastle ich an einem GUI dafür, da könnte man dann auch ein "Livebild" während der Konvertierung anzeigen lassen. |
Re: TPCMDrawer - Bilder hören statt sehen
Ich hab' mal ein wenig dran weitergebastelt.
Das Demoprojekt ist jetzt auch endlich erwachsen, Laden von Bitmaps und JPEGs funktioniert via Drag&Drop aus dem Explorer, die Bilder können verkleinert/vergrößert werden, an diversen Einstellungen kann nach Lust und Laune herumgespielt werden, Threading ist endlich implementiert. ToDos: Geschwindigkeit! Mal gucken, ob man Multithreading implementieren kann. Viel Spaß damit! |
Re: TPCMDrawer - Bilder hören statt sehen
Zitat:
|
Re: TPCMDrawer - Bilder hören statt sehen
Zitat:
Delphi-Quellcode:
Multithreading (sprich das Aufteilen des Bildes in mehrere Abschnitte, welche dann autark bearbeitet werden) bringt auf meinem DualCore mit 2 Threads ungefähr 40 - 45 % mehr Geschwindigkeit. Immerhin... :cyclops:
procedure TPCMDrawerWorker.ReadPictureData;
type pixel = array[0..2] of byte; var p : ^pixel; i: integer; r, g, b, c: byte; color, v: integer; begin p := fBitmap.ScanLine[fBitmapPosCounter]; for i := 0 to fBitmap.Width -1 do begin r := Byte(p^[0]); g := Byte(p^[1]); b := Byte(p^[2]); if fReverseColors then c := 255 - ((r+b+g) div 3) else c := ((r+b+g) div 3); v:= Trunc(c / 255 * fAmplitude); if v >= cIgnoreColorLower then fPixelData[i].Amplitude := v else fPixelData[i].Amplitude := 0; inc(p); end; Inc(fBitmapPosCounter); end; |
Re: TPCMDrawer - Bilder hören statt sehen
Lange nicht mehr dran weitergebastelt und doch ist zwischenzeitlich das Projekt gewachsen. :)
Ich hab mal ein neues ZIP-Archiv an den ersten Beitrag gepinnt. In ihr befindet sich ein etwas ausgereifter Editor, um Geräusche aus Bildern zu kreieren. Mit integriert ist auch eine Sonagramm-Visualisierung. Den Quelltext der TPCMDrawer-Klasse muss ich noch ein wenig "schönschreiben", dann werde ich ihn auch im ersten Beitrag aktualisieren. |
Re: TPCMDrawer - Bilder hören statt sehen
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mir die "PCMDrawerDemoV0_2.zip", welche zwar mehrere Threads hat, aber nur ein Kern auslastet (22 - 25 %).
Außerdem dauert es 38 von 12 Sekunden? Abgesehen davon, sind das (wenns andersherum ist), fast 33 %, obwohl die Progressbar noch nicht mal etwas zeigt. Ansonsten kann ich erstmal dazu nichts sagen. MfG xZise |
Re: TPCMDrawer - Bilder hören statt sehen
Zitat:
Und das Problem, dass die vorhergesagte Laufzeit nicht stimmt, ist mir bekannt. Für's Beheben müsste ich Delphi starten: mal schaun', wann ich das das nächste Mal mache... |
Re: TPCMDrawer - Bilder hören statt sehen
Okay mit der PCMDrawerEditor.zip sind es immrhin 60 - 70 % :thumb:
MfG xZise |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz