DEUTSCHE VERSION |
|
Links | | | Forums | | | Comments | | | Report news |
Chat | | | Polls | | | Newsticker | | | Archive |
amiga-news.de Forum > Programmierung > RAW Soundausgabe | [ - Search - New posts - Register - Login - ] |
-1- | [ - Post reply - ] |
2004-10-13, 19:00 h MaikG Posts: 5172 User |
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. [ - Answer - Quote - Direct link - ] |
2004-10-13, 19:14 h thomas Posts: 7718 User |
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/ [ - Answer - Quote - Direct link - ] |
2004-10-13, 22:24 h bubblebobble Posts: 707 User |
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 [ - Answer - Quote - Direct link - ] |
2004-10-14, 08:43 h MaikG Posts: 5172 User |
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? [ - Answer - Quote - Direct link - ] |
2004-10-14, 09:58 h thomas Posts: 7718 User |
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. ] [ - Answer - Quote - Direct link - ] |
2004-10-14, 10:15 h bubblebobble Posts: 707 User |
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 [ - Answer - Quote - Direct link - ] |
2004-10-14, 10:50 h MaikG Posts: 5172 User |
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? [ - Answer - Quote - Direct link - ] |
2004-10-14, 13:44 h thomas Posts: 7718 User |
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/ [ - Answer - Quote - Direct link - ] |
2004-10-14, 18:55 h MaikG Posts: 5172 User |
Hab schon probiert, ging auf Anhieb. Danke! [ - Answer - Quote - Direct link - ] |
2004-10-15, 19:04 h MaikG Posts: 5172 User |
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 [ - Answer - Quote - Direct link - ] |
2004-10-15, 19:56 h thomas Posts: 7718 User |
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/ [ - Answer - Quote - Direct link - ] |
2004-10-16, 10:26 h MaikG Posts: 5172 User |
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. [ - Answer - Quote - Direct link - ] |
2004-10-16, 13:32 h thomas Posts: 7718 User |
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/ [ - Answer - Quote - Direct link - ] |
2004-10-16, 17:29 h MaikG Posts: 5172 User |
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. [ - Answer - Quote - Direct link - ] |
2004-10-20, 14:02 h Holger Posts: 8116 User |
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. [ - Answer - Quote - Direct link - ] |
2004-10-20, 15:08 h MaikG Posts: 5172 User |
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? [ - Answer - Quote - Direct link - ] |
2004-10-20, 15:16 h gni Posts: 1106 User |
Zitat:Es ist nicht falsch. In dem Fall mußt Du es aber auch zwei mal schliessen. [ - Answer - Quote - Direct link - ] |
2004-10-20, 19:11 h MaikG Posts: 5172 User |
Okay, dann wird das so müssen. Danke nochmal @all [ - Answer - Quote - Direct link - ] |
-1- | [ - Post reply - ] |
amiga-news.de Forum > Programmierung > RAW Soundausgabe | [ - Search - New posts - Register - Login - ] |
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved. |