ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > RAW Soundausgabe | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
13.10.2004, 19:00 Uhr MaikG Posts: 5172 Nutzer |
Hallo, Kennt jemand ein kurzen Source damit man RAW-Samples abspielen kann (kHz etc. ist alles bekannt). Hab kein Sourcecode gefunden bzw. nur einen der 20 Unterprogramme hat und 8SVX abspielt. [ - Antworten - Zitieren - Direktlink - ] |
13.10.2004, 19:14 Uhr thomas Posts: 7718 Nutzer |
code:audio = Open("audio:b/16/c/2/f/44100",MODE_NEWFILE); Write (audio,cd_audio_sample,1000000); Close (audio); (das ist nicht ganz ernst gemeint, aber funktioniert, wenn AHI installiert ist) Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ - Antworten - Zitieren - Direktlink - ] |
13.10.2004, 22:24 Uhr bubblebobble Posts: 707 Nutzer |
Du machst folgendes, wenn die Datei komplett in den Speicher soll, also kein Streaming: - RAW Datei öffnen - Speicher allocieren so lange wie die Datei ist - Datei auf diesen Speicherbereich reinladen - RAW Datei schliessen - AHI Message vorbereiten mit Pointer auf den Speicherbereich - ahi.device öffnen - AHI Message ans ahi.device schicken ...kann man nun so oft schicken wie man will... - ahi.device schliessen - Message + Speicher freigeben Ich kann dir dazu leider nur Source in AmiBlitz geben, ist aber prinzipiell genauso wie in C. -- Thilo Köhler, Author von: HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, UDM, TKPlayer, TKUnpacker Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
14.10.2004, 08:43 Uhr MaikG Posts: 5172 Nutzer |
Ich dachte mehr an die Ausgabe unter Paula. Gestern hab ich ja noch eine weile rumprobiert, der Source ist jetzt 200 Zeilen inclusive der Kommentare. Ich würde gerne noch die länge der Datei über die dos.library abfragen, ist besser als die länge 2 mal zu definieren. Weiss jemand den Befehl dafür? [ - Antworten - Zitieren - Direktlink - ] |
14.10.2004, 09:58 Uhr thomas Posts: 7718 Nutzer |
Zwei Möglichkeiten: 1. fib = AllocDosObject(DOS_FIB,NULL); fhand = Open(filename,MODE_OLDFILE); ExamineFH(fhand,fib); size = fib->fib_Size 2. fhand = Open(filename,MODE_OLDFILE); Seek (fhand,0,OFFSET_END); size = Seek (fhand,0,OFFSET_BEGINNING); 1a. (OS1.3-Stil) fib = AllocMem(sizeof(struct FileInfoBlock),MEMF_CLEAR); lock = Lock(filename,SHARED_LOCK); Examine(fhand,fib); size = fib->fib_Size UnLock (lock); fhand = Open(filename,MODE_OLDFILE); Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ Dieser Beitrag wurde von thomas am 14.10.2004 editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
14.10.2004, 10:15 Uhr bubblebobble Posts: 707 Nutzer |
Ih würde sagen über AHI ist einfacher als direkt über Paula. Mit dem Nebeneffekt, dass es nicht nur auf Classic und WinUAE läuft. Wenns also nicht Classic Only sein soll, dann besser AHI. -- Thilo Köhler, Author von: HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, UDM, TKPlayer, TKUnpacker Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
14.10.2004, 10:50 Uhr MaikG Posts: 5172 Nutzer |
Dank! Ich nehme das 2. war seek nicht sowas wie in der Datei weiterspringen? Mit der 2. Routine springt man ja zum Ende wenn ich das richtig verstehe, also müsste ich wieder zum Anfang springen wenn ich die offene Datei weiter benutzen möchte? @bubble Ich möchte das es auch auf A500 von Diskette läuft, deshalb kein AHI. Ich habe keinen AONE, wird das audio.device da nicht emuliert? [ - Antworten - Zitieren - Direktlink - ] |
14.10.2004, 13:44 Uhr thomas Posts: 7718 Nutzer |
Seek springt zu der angegebenen Position in der Datei und liefert die Position, an der sie vorher stand, zurück. Das erste Seek springt ans Ende der Datei und das zweite springt wieder an den Anfang zurück, wobei es die vorherige Position (also das Ende der Datei) zurückliefert. Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ - Antworten - Zitieren - Direktlink - ] |
14.10.2004, 18:55 Uhr MaikG Posts: 5172 Nutzer |
Hab schon probiert, ging auf Anhieb. Danke! [ - Antworten - Zitieren - Direktlink - ] |
15.10.2004, 19:04 Uhr MaikG Posts: 5172 Nutzer |
Hätte da doch noch eine Frage. Ich habe den Ton nur auf der Rechten Seite, kann es sein das im Beispiel die channel allocation falsch ist? Ist so definiert $01020408 [ - Antworten - Zitieren - Direktlink - ] |
15.10.2004, 19:56 Uhr thomas Posts: 7718 Nutzer |
Ja. Die Bytes der Allokation werden mit "oder" verknüpft. D.h. du bekommst mit dieser Allokation immer genau einen Kanal. Mit 030c würdest du jeweils einen rechten und einen linken Kanal gleichzeitig allokieren (also 0+1 oder 2+3). Das löst aber nicht dein Problem. Denn trotz Allokation von zwei (oder mehr) Kanälen wird der Ton immer noch auf nur einem Kanal abgespielt. Um den Ton auf mehreren Kanälen gleichzeitig abzuspielen, mußt du den IORequest duplizieren, die Allokationen ändern (wenn du 03 allokiert hast, muß der eine IORequest 01 und der andere 02 bekommen, bei 0c der eine 04 und der andere 08) und die Samples jeweils mit beiden IORequests abspielen. Das ist auch in den RKRMs so beschrieben. Ob es dafür ein Beispiel gibt, weiß ich nicht. Mit AHI geht es einfacher (s.o.) Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ - Antworten - Zitieren - Direktlink - ] |
16.10.2004, 10:26 Uhr MaikG Posts: 5172 Nutzer |
030c - Die letzten Bytes? Das Beispiel hatte eine Routine doppelt, ich dachte das sei für Stereo-Samples. Jedoch war da immer nur der Rechte Kanal deshalb hab ich das 2. entfehrnt. Dann werde ich das erstmal wieder Einfügen und die Channel-Allokation ändern. [ - Antworten - Zitieren - Direktlink - ] |
16.10.2004, 13:32 Uhr thomas Posts: 7718 Nutzer |
Zitat: Nein, alle Bytes. Du gibst die Länge und eine Folge von Bytes an. Jedes Byte stellt eine Kombination von Kanälen dar, die dich zufrieden stellt. Welche du tatsächlich bekommen hast, steht anschließend im IORequest. 01 = Kanal 0 02 = Kanal 1 03 = Kanal 0 und 1 04 = Kanal 2 05 = Kanal 0 und 2 06 = Kanal 1 und 2 07 = Kanal 0, 1 und 2 08 = Kanal 3 09 = Kanal 0 und 3 0a = Kanal 1 und 3 0b = Kanal 0, 1 und 3 0c = Kanal 2 und 3 0d = Kanal 0, 2 und 3 0e = Kanal 1, 2 und 2 0f = alle vier Kanäle. Wobei jeweils Kanal 0 und 3 links und Kanal 1 und 2 rechts sind (oder umgekehrt, da streiten sich die Experten, ist auch von Modell zu Modell verschieden). Du kannst auch einfach 0f angeben, dann bekommst du alle vier Kanäle oder gar keinen. Das ist aber nicht sehr freundlich gegenüber anderen Programmen. Die korrekte Folge für Stereosound (oder ein Sample auf beiden Lautsprechern, das kommt ja auf's selbe raus) wäre also 03050a0c. Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ - Antworten - Zitieren - Direktlink - ] |
16.10.2004, 17:29 Uhr MaikG Posts: 5172 Nutzer |
Ah, jetzt gehts. Ich hab den IORequest dupliziert und mit jedem Request das audio.device geöffnet. Die Abspiel Routine dann auch jeweils für Request 0 und 1. Ist das richtig das man 2xAudio öffnen und schließen muss? Enforcer-Hits bekomme ich nicht. [ - Antworten - Zitieren - Direktlink - ] |
20.10.2004, 14:02 Uhr Holger Posts: 8116 Nutzer |
Zitat:Wobei das unter FFS mit sehr großen Dateien extrem langsam werden kann. Dafür liefert es auch dann die richtige Länge, wenn in dem Directory-Eintrag eine falscher Größe steht. mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
20.10.2004, 15:08 Uhr MaikG Posts: 5172 Nutzer |
Ist aber kein Problem sind ja nur Mono-Samples max. 25kB Ich fand es nur besser als im Programm die größe in Variablen zu haben. Falls ich den Sample ändere oder das ganze in einem anderen Programm brauche. Ist das 2x audio.device öffnen nun Richtig? [ - Antworten - Zitieren - Direktlink - ] |
20.10.2004, 15:16 Uhr gni Posts: 1106 Nutzer |
Zitat:Es ist nicht falsch. In dem Fall mußt Du es aber auch zwei mal schliessen. [ - Antworten - Zitieren - Direktlink - ] |
20.10.2004, 19:11 Uhr MaikG Posts: 5172 Nutzer |
Okay, dann wird das so müssen. Danke nochmal @all [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > RAW Soundausgabe | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |