Timer mit einer Frequenz von 8.000Hz?

Moderator: Rockford

Antworten
patjomki
Beiträge: 382
Registriert: 18.08.2021 23:21
Has thanked: 141 times
Been thanked: 81 times
Kontaktdaten:

Timer mit einer Frequenz von 8.000Hz?

Beitrag von patjomki »

Hallo,

ich möchte beim Ausgeben von Tönen eine ADSR-Hüllkurve per Lautstärke-Register (z.B. $d201 AUDC1 für POKEY-Kanal aka -Stimme 1) simulieren.

Dies bedeutet, dass ich das Lautstärke-Register im ungünstigsten Fall (Das "Attack" von "A"DSR mit 2 Millisekunden) mit 8.000 Herz ändern muss (16 Lautstärkeänderungen in 2 Millisekunden -> 2/1000 ÷ 16 = 1/8.000)

Ein Vertical-Blank-Interrupt (1/50 bzw. 50Hz hier bei uns mit PAL) ist also zu langsam. Nun gibt es ja die POKEY-Timer, aber damit verliert man ja auch eine Pokey-Stimme.

Gibt es irgendeine andere Möglichkeit, so eine hohe Abfragefrequenz zu erzeugen?

Benutzeravatar
pps
Beiträge: 805
Registriert: 18.06.2021 23:05
Has thanked: 199 times
Been thanked: 389 times
Kontaktdaten:

Re: Timer mit einer Frequenz von 8.000Hz?

Beitrag von pps »

Also man könnte die beiden VBI und auch alle DLI auch nutzen, um timer zu haben.
PP´s of STARSOFTBerlin__________github|meine Webseite|Demozoo

Erhard
Beiträge: 1127
Registriert: 04.11.2021 15:52
Has thanked: 134 times
Been thanked: 344 times
Kontaktdaten:

Timer mit einer Frequenz von 8.000Hz?

Beitrag von Erhard »

pps hat geschrieben:
10.09.2025 16:11
alle DLI auch nutzen, um timer
Aber "interrupten" die nicht nur während der Bilddarstellung?

Ich hatte das so verstanden, als würde der Time ohne "Pause" benötigt.
Jede Info, die zu Hause auf meinem Rechner liegt habe ich unterwegs nicht verfügbar.
Jede Info, die im Netz liegt finde ich nicht wieder, wenn ich sie benötige.

Benutzeravatar
Kveldulfur
Beiträge: 1066
Registriert: 17.08.2021 02:32
Has thanked: 515 times
Been thanked: 461 times
Kontaktdaten:

Re: Timer mit einer Frequenz von 8.000Hz?

Beitrag von Kveldulfur »

Hallo!

8000Hz? Also der VBI läuft bei PAL in 50Hz. Um 8000Hz zu erhalten, müsstest Du Deine Routine 160x während eines Bildaufbaus ausführen.
Der VCOUNT geht von 0-155 soviel ich weiß, also müsste Deine Routine bei jeder VCOUNT-Änderung aufgerufen werden, um ca. 7800Hz zu erhalten..
Du hättest auch nur wenige CPU-Zyklen, um dann überhaupt etwas zu machen und das ganze wäre zudem ungleichmäßig, da es auch einen nichtsichtbaren Bereich gibt (wo der Kathodenstrahl zurück fährt) dessen Zeit Du nicht nutzen würdest.

Gleichmäßig würde es nur der Pokey-Timer schaffen, soviel ich weiß.

Also 8000Hz ist schon heftig ;-)

Grüße
Janko
Meine Projekte findest Du hier...

patjomki
Beiträge: 382
Registriert: 18.08.2021 23:21
Has thanked: 141 times
Been thanked: 81 times
Kontaktdaten:

Re: Timer mit einer Frequenz von 8.000Hz?

Beitrag von patjomki »

pps hat geschrieben:
10.09.2025 16:11
Also man könnte die beiden VBI und auch alle DLI auch nutzen, um timer zu haben.
Nee, die gehen leider nicht, da der VBI ja nur 50Hz (PAL) hat und ich eben 8000Hz benötige. Ja, so schnell (maximal) ändert der SID die Lautstärke für seine ADSR-Hüllkurve.

Um den VBL und DLI für Grafikmanipulationen frei zu halten, würden sich ja auch die Systemtimer anbieten (cdtmv1-cdtmv5), aber die laufen eben auch maximal mit einer Geschwindigkeit von 50Hz (PAL).
Erhard hat geschrieben:
10.09.2025 16:41
pps hat geschrieben:
10.09.2025 16:11
alle DLI auch nutzen, um timer
Aber "interrupten" die nicht nur während der Bilddarstellung?

Ich hatte das so verstanden, als würde der Time ohne "Pause" benötigt.
Ganz genau. Nach 0,125 Millisekunden (=0,000125 = 1/8000 Sekunde) erhöht sich im schnellsten Fall das Lautstärkebit in der Attack-Phase des SID. Daher benötige ich eben einen Timer, der exakt nach 1/8000 Sekunde anschlägt. Mit dem VBL (50Hz) oder selbst DLI (50x155=7750Hz) bin ich einfach nicht schnell genug.
Kveldulfur hat geschrieben:
10.09.2025 16:45
Gleichmäßig würde es nur der Pokey-Timer schaffen, soviel ich weiß.

Also 8000Hz ist schon heftig ;-)
Ja, der SID ist ein Biest. Aber mit den POKEY-Timern wäre das ein Kinderspiel. Die können ja mit 15Khz, 64Khz oder 1,77Mhz betrieben werden.

Bin nur noch nicht sicher, welchen Wert ich in das AUDF-Register schreiben muss, um auf exakt 8Khz zu kommen.
Im 64Khz-Modus müsste es aber 32 sein, oder? Also 64Khz durch 256 mögliche Werte macht 250Hz pro Wert. Also 32x250=8000 also müsste der POKEY-Timmer auf 32 gesetzt werden, um nach 1/8000 Sekunde einen Interrupt auszulösen, wo ich dann in der Interrupt-Routine dann das Lautstärkebit um eins erhöhe.

Benutzeravatar
pps
Beiträge: 805
Registriert: 18.06.2021 23:05
Has thanked: 199 times
Been thanked: 389 times
Kontaktdaten:

Re: Timer mit einer Frequenz von 8.000Hz?

Beitrag von pps »

Ich meinte schon wirklich alle Interrupts nutzen... Dann hast Du 2xVBI und so bis zu 239 DLI... Aber durch die vielen Interrupts kaum Zeit, was zu tun...
PP´s of STARSOFTBerlin__________github|meine Webseite|Demozoo

patjomki
Beiträge: 382
Registriert: 18.08.2021 23:21
Has thanked: 141 times
Been thanked: 81 times
Kontaktdaten:

Re: Timer mit einer Frequenz von 8.000Hz?

Beitrag von patjomki »

Ach so. Das könnte gehen, allerdings soll das ja nur die Hüllkurve für einen einzigen SID-Kanal sein, sprich: es wird nur Musik "nebenbei" abgespielt. Da soll schon noch genug Zeit für den Rest bleiben.

Ich versuche es erstmal mit dem POKEY-Timer. Bei einer Stimme ist es ja kein Problem, da bleiben vom Pokey ja noch drei Kanäle für den eigentlichen Ton über. Selbst wenn man einen 16-Bit-Ton ausgibt (macht der SID ja nur so), kommt man bei einem SID-Kanal immer noch hin.

Für einen Test mit einer Stimme also alles ausreichend. Ich werde berichten.

Erhard
Beiträge: 1127
Registriert: 04.11.2021 15:52
Has thanked: 134 times
Been thanked: 344 times
Kontaktdaten:

Timer mit einer Frequenz von 8.000Hz?

Beitrag von Erhard »

.
patjomki hat geschrieben:
10.09.2025 21:07
Ich versuche es erstmal mit dem POKEY-Timer.
Du wirst Dich sicherlich noch mit den Prioritäten der Unterbrechungsanforderungen auseinandersetzen müssen.

Ich weiß nicht, wie das tatsächlich ist, aber es könnte ja sein, daß während Deine Routine durch den POKEY-Interrupt gestartet läuft, trotz gesetztem SEI der VBI mit höherer Prio dazwischenhaut.

Dann gibt es noch den DRAM-REFRESH, der mit 8-9 Zyklen regelmäßig dazwischenhaut sowie den DMA des ANTIC, wo für den Bildschirmaufbau tonnenweise HALT-Zyklen die CPU stoppen.
Jede Info, die zu Hause auf meinem Rechner liegt habe ich unterwegs nicht verfügbar.
Jede Info, die im Netz liegt finde ich nicht wieder, wenn ich sie benötige.

patjomki
Beiträge: 382
Registriert: 18.08.2021 23:21
Has thanked: 141 times
Been thanked: 81 times
Kontaktdaten:

Re: Timer mit einer Frequenz von 8.000Hz?

Beitrag von patjomki »

Ja, das hatte ich befürchtet. Das wird wohl auch der Grund sein, dass früher viele Programme den Bildschirm komplett ausgeschaltet haben, wenn Sie ein Sample ausgeben wollten.

Wie wir seit Bosconian wissen, wäre das gar nicht nötig. Habe hier schon bei komplett eingeschalteten Bildschirm ein Sample (4-Bit, 7.800Hz) mit der Methode von pps über das Pokey-Lautstärkebit ausgegeben, allerdings geht das bei mir nur, wenn man keine Action auf dem Bildschirm hat (möchte wissen, wie shanti77 dass ingame mit "Blast Off" macht, nicht nur am Anfang, da wird echt der Bildschirminhalt noch upgedatet).

Naja, für die Aufgabe, eine Hüllkurve zu simulieren, ist natürlich Stillstand auf dem Bildschirm sowieso tabu, möchte man den Song doch als Hintergrundsong in einem Game hören. Mal sehen, wie sehr sich die ganzen Unterbrechungen auf die Pokey-Timer auswirken.

Allerdings habe ich ab Montag keinen Urlaub mehr, ich befürchte, dann wird Zeit, die für die Programmierung übrig bleibt, wieder sehr eingeschränkt zur Verfügung stehen. :cry:

Erhard
Beiträge: 1127
Registriert: 04.11.2021 15:52
Has thanked: 134 times
Been thanked: 344 times
Kontaktdaten:

Timer mit einer Frequenz von 8.000Hz?

Beitrag von Erhard »

.
patjomki hat geschrieben:
11.09.2025 15:22
möchte wissen, wie shanti77 dass ingame mit "Blast Off" macht
Vielleicht kann man den fragen?

patjomki hat geschrieben:
11.09.2025 15:22
Allerdings habe ich ab Montag keinen Urlaub mehr
Tja, obwohl der Atari ja quasi "einfach" ist kann man daraus gut einen Vollzeit-Job machen :-)
Jede Info, die zu Hause auf meinem Rechner liegt habe ich unterwegs nicht verfügbar.
Jede Info, die im Netz liegt finde ich nicht wieder, wenn ich sie benötige.

patjomki
Beiträge: 382
Registriert: 18.08.2021 23:21
Has thanked: 141 times
Been thanked: 81 times
Kontaktdaten:

Re: Timer mit einer Frequenz von 8.000Hz?

Beitrag von patjomki »

Erhard hat geschrieben:
14.09.2025 09:50
Vielleicht kann man den fragen?
Steht auf jeden Fall auf dem Programm. Wollte aber erstmal ein bisschen weitertesten und an anderen Atari-Projekten weitermachen, sonst verzettel ich mich.
Erhard hat geschrieben:
14.09.2025 09:50
Tja, obwohl der Atari ja quasi "einfach" ist kann man daraus gut einen Vollzeit-Job machen :-)
Ja, macht auch Laune, aber leider kann man damit keine Rechnungen bezahlen. :twisted:

Ist auf dem Atari im Verhältnis zu modernen Plattformen zwar einfacher, dafür stehen mit Megabytes großen Libraries auch umfangreiche Befehlssätze zur Verfügung.

Ist schon irritierend, dass nach fast fünfzig Jahren Atari 8-Bit-Rechnern immer noch Tools fehlen. Da sieht es auf dem 64er deutlich besser aus. Zwar gab es schon früher genug Tools aber leider haben die meist nur die Standardvorgaben der Atari-Hardware leichter zugänglich gemacht. Moderne Features gibt es noch nicht soo lange.

Bin ja schon froh, dass es mit bocianus SprEd endlich einen Sprite-Editor gibt, mit dem man auch Player und Missiles so verknüpfen kann, dass ein "Sprite" auch 10 statt nur 8 Zeichen breit sein kann.

Oder mit matosimis Atari FontMaker und Jacs WUDSN zwei weitere moderne Tools existieren. Letzeres mit Altirra zum Debuggen. Ein Traum.

Beim Sound hingegen gibt es zwar den RasterMusikTracker, aber man merkt, dass raster und analmux leider viel zu früh von uns gegangen sind. Man möge sich vorstellen, wo wir heute beim RMT wären, wenn es diese Tragödien nicht gegeben hätte...

Benutzeravatar
JAC!
Beiträge: 186
Registriert: 18.06.2021 23:13
Has thanked: 157 times
Been thanked: 177 times
Kontaktdaten:

Re: Timer mit einer Frequenz von 8.000Hz?

Beitrag von JAC! »

Die Frage ist, ob man wirklich die 8000 Hz braucht. Beim Pokey klingen RMT Files mit 200 Hz Instrumenten schon verdammt nach an “top”.
Visit https://www.wudsn.com the home of WUDSN IDE.

patjomki
Beiträge: 382
Registriert: 18.08.2021 23:21
Has thanked: 141 times
Been thanked: 81 times
Kontaktdaten:

Re: Timer mit einer Frequenz von 8.000Hz?

Beitrag von patjomki »

Das mit den 200hz-Instrumenten habe ich noch nicht so richtig verstanden. Hast Du da mehr Infos?

Der SID schafft jedenfalls bei ADSR-Lautstärkebitänderungen bis 8000Hz.

Benutzeravatar
pps
Beiträge: 805
Registriert: 18.06.2021 23:05
Has thanked: 199 times
Been thanked: 389 times
Kontaktdaten:

Re: Timer mit einer Frequenz von 8.000Hz?

Beitrag von pps »

patjomki hat geschrieben:
16.09.2025 08:32
Das mit den 200hz-Instrumenten habe ich noch nicht so richtig verstanden. Hast Du da mehr Infos?

Der SID schafft jedenfalls bei ADSR-Lautstärkebitänderungen bis 8000Hz.
200 Hz bedeutet, dass man die Abspielroutine des RMT innerhalb eines "Bildschirmzyklus" 4 mal ausführt, also 4*50Hz=200Hz. Der RMT unterstüzt sowas auch direkt im Editor, so dass man den Song direkt im RMT so erstellen kann.
PP´s of STARSOFTBerlin__________github|meine Webseite|Demozoo

patjomki
Beiträge: 382
Registriert: 18.08.2021 23:21
Has thanked: 141 times
Been thanked: 81 times
Kontaktdaten:

Re: Timer mit einer Frequenz von 8.000Hz?

Beitrag von patjomki »

Vielen Dank für die Antwort. Daumen hoch.

Das hatte ich schon vermutet.

Was ich nur nicht verstehe, wie diese höhere Frequenz sich auf den Ton auswirkt. Wird innerhalb des 200-Hz-Zyklus auch die Lautstärke des Tons geändert?

Das ist ja im Prinzip das, was ADSR macht. Nur eben max. mit 8.000Hz (wobei ich mich wiederum frage, ob man das überhaupt wahrnimmt, die Membran des Lautsprechers hat ja auch eine gewisse Trägheit). Ein so steiler Anstieg kommt damit dem Pokey-Rechteck bestimmt recht nahe, wüsste nur leider keine Vergleichswerte von der Anstieg der Rechteflanke im Pokey gemessen wurde.

Benutzeravatar
pps
Beiträge: 805
Registriert: 18.06.2021 23:05
Has thanked: 199 times
Been thanked: 389 times
Kontaktdaten:

Re: Timer mit einer Frequenz von 8.000Hz?

Beitrag von pps »

Es ist einfach so, dass die Instrumente eben dann 4 mal in der Sekunde aktualisiert werden, statt nur ein Mal. Durch die höhere Aktualisierungsrate, hat man dann durchaus deutlich bessere Instrumente. Ist ja quasi dann ein 200Hz Sample jeweils.
Vorteil gerade zusammen mit LZSS: man kann noch deutlich mehr andere Sachen machen, als bei einem Sample mit 8000Hz. Es eignet sich sogar durchaus für Demos und Spiele.
PP´s of STARSOFTBerlin__________github|meine Webseite|Demozoo

patjomki
Beiträge: 382
Registriert: 18.08.2021 23:21
Has thanked: 141 times
Been thanked: 81 times
Kontaktdaten:

Re: Timer mit einer Frequenz von 8.000Hz?

Beitrag von patjomki »

Ein 200Hz-Sample würde aber deutlich schlechter klingen. Insbesondere durch die 4-Bit-Auflösung wäre das quasi nicht zu ertragen. Also bei 7.800Hz (also noch ohne Pokey-Timer) ist es erträglich.

Das muss noch was anderes bedeuten. Wahrscheinlich verstehe ich es einfach nicht richtig. Im Moment deute ich es so, dass man quasi 200Mal pro Sekunde die Note ändern kann . Natürlich kann man von der selben Note auch nur 200mal die Lautstärke ändern, der SID schafft es aber halt mit 8Khz.

Und lzss ist doch nur ein Kompressionsalgorithmus, d.h. ich kann längere Songs abspielen, oder?

Benutzeravatar
pps
Beiträge: 805
Registriert: 18.06.2021 23:05
Has thanked: 199 times
Been thanked: 389 times
Kontaktdaten:

Re: Timer mit einer Frequenz von 8.000Hz?

Beitrag von pps »

Es sind ja keine Samples, sondern Instrumente, die man selbst erstellt. Dennoch ist es ähnlich den Samples. Jedes Instrument hat eine eigene Länge, wo Lautstärke, Modulation etc. in einzelnen Schritten angepasst werden. Wenn man nun 4 mal je Sekunde, statt nur 1 mal je Sekunde da was ändern kann, klingt es dann deutlich besser. Die Instrumente werden vom Musiker selbst erstellt und an das Lied angepasst. Das kann man in jedem Tracker machen. Die MOD Tracker boten am Amiga damals natürlich anfangs einfach nur an, kurze Samples als Instrumente zu nutzen. Heutzutage gibt es aber eben genug dieser Chip Tune Tracker, wo man statt Samples selbst Instrumente baut. Auch hier ist immer, je schneller, desto besser. Aber eben auch weniger Rechenzeit. Aber man kann schön dosieren, wie weit man gehen möchte und so immer an das Programm anpassen. Je track / Tonspur spielt man gezielt eines der Instrumente / Sampleschnipsel in einer bestimmten Note ab. Das spart Speicherplatz und Rechenzeit. Ich glaube der CMC bietet am ATARI sogar eine Samplespur an. Diese wurde oft für Drums genutzt.

Samples sind gerade, weil es ja aufgenommene Daten der gesamten Soundquelle sind am Ende immer auf eine möglichst hohe Datenrate angewiesen, was Speicher kostet und auch die Rechenzeit deutlich reduziert.

Ich bin kein Musiker, aber soweit habe ich das verstanden. Gerne lese ich auch eine genauere Erklärung von einem Musikguru :D
PP´s of STARSOFTBerlin__________github|meine Webseite|Demozoo

Benutzeravatar
Irgendwer
Beiträge: 146
Registriert: 25.08.2021 19:05
Has thanked: 27 times
Been thanked: 77 times
Kontaktdaten:

Re: Timer mit einer Frequenz von 8.000Hz?

Beitrag von Irgendwer »

patjomki hat geschrieben:
11.09.2025 15:22
Wie wir seit Bosconian wissen, wäre das gar nicht nötig. Habe hier schon bei komplett eingeschalteten Bildschirm ein Sample (4-Bit, 7.800Hz) mit der Methode von pps über das Pokey-Lautstärkebit ausgegeben, allerdings geht das bei mir nur, wenn man keine Action auf dem Bildschirm hat (möchte wissen, wie shanti77 dass ingame mit "Blast Off" macht, nicht nur am Anfang, da wird echt der Bildschirminhalt noch upgedatet).
Bist Du sicher, dass bei Bosconian 7800(+) Hz verwendet werden?
Ich verwende bei "Disc o' Pop" auch nur 4kHz (und die Berechnungen für Kollisionen & Bildschirmupdate laufen damit weiter).

Zu den 200Hz RMT Updates: Zerlege einmal gedanklich ein qualitativ besseres Sample in 200Hz Schnippsel und versuche nun die Schnippsel mit ganz "normalen" Pokey-Outputs (auch höherer Frequenzen) nachzubilden/auszuformen.

Edit: Bei der Musik von "Perplexity" habe ich z.B. 100Hz-Updates genommen, weil schon das realistischere Drum-Sounds ermöglicht:

https://youtu.be/cdRQcxVtR7g?si=Khks8mGpFE6MTP0K&t=11

patjomki
Beiträge: 382
Registriert: 18.08.2021 23:21
Has thanked: 141 times
Been thanked: 81 times
Kontaktdaten:

Re: Timer mit einer Frequenz von 8.000Hz?

Beitrag von patjomki »

Also ich versuche mal, es aus meiner Nichtmusikersicht zu erläutern, was ich aus Programmiersicht verstanden habe.

Der Atari spielt reine Töne/Noten grundsätzlich in einer Rechteckwelle ab (Geräusche, d.h. eine Polygonwelle oder Programmiertricks mit denen der Atari auch andere Wellenformen generiert, wie z.B. Sägezahn lasse ich der Einfachheit halber jetzt mal weg).

Will man also einen Kammerton A4 mit z.B. 440Hz erzeugen, schreibt man in Audf1 einen definierten Wert und der Atari gibt am Ausgang einen Rechteckton aus, der 440mal pro Sekunde zwischen dem Lautstärkemaximum und Null oszilliert, also Ton an, Ton aus (genao so lang wie an, Pulsweite also gleich lang) wieder aus etc. eben 440 mal pro Sekunde.

Ein Ton/eine Note ist aber nicht sofort an oder sofort aus sondern hat eine Hüllkurve aus Attack, Decay , Sustain und Release. Der Ton steigt also zunachst linear (Steigungsdreieck) innerhalb einer vorgegebenen Zeit (Attack) relativ schnell auf seinen Maximalwert, z.B. 15 an (auf dem SID innerhalb von zwei Millisekunden um 16 Laustärkewerte, daher die 8.000Hz), fällt daher umgekehrt exponentiell (also erst schnell, dann langsam auf einen vorgegebenen Haltewert), z.B. 12 um dann auf diesem Wert gehalten zu werden (Sustain) und dann zu guter Letzt auf Null umgekehrt exponentiell zu fallen (Release).

Die Hüllkurve überlagert dabei den in unserem Beispiel angespielten 440Hz-Dauerton. Dann geht es mit dem nächsten Ton/Note weiter.

In diesem Zusammenhang verstehe ich den 200Hz-Modus einfach nicht. Wie erhält man dadurch ADSR? Hilfe! Ich raffe es einfach nicht. :(

Bei MODfiles ist es wieder ganz anders. Echte Instrumente wie ein Klavier oder eine Gitarre spielen keine reinen Sinuswellen ab (kleiner Exkurs, alle Wellenformen also auch Rechteck lassen sich auf überlagerte Sinuswellen zurückführen, s. https://de.m.wikipedia.org/wiki/Fourierreihe unter Verallgemeinerungen) sondern sind überlagerte Wellen. Daher ist es einfacher diese Wellen zu sampeln, d.h. die Lautstärkeveränderungen über die Zeit zu speichern und dann wieder mit der gleichen Geschwindigkeit abzuspielen. Spielt man sie schneller ab, erscheint der Ton höher, spielt man langsamer, erscheint der Ton tiefer.

Für ein einigermaßen brauchbares Ergebnis sollte man mit 8Khz und 4-Bit speichern (wegen des Lautstärkebits von 4Bit = 1 Nibble). Für ein 8Khz-Sample von 1 Sekunde benötigt man also unkomprimiert 4.000 Bytes (8000 Werte a zwei Nibbles = 4000 Bytes). Kein Wunder, dass der Atari für MOD-Player viel Speicher und eine hohe Geschwindigkeit (8000 Wertänderungen pro Sekunde) benötigt, so dass einige Player den Bildschirm abstellen.
Zuletzt geändert von patjomki am 17.09.2025 00:08, insgesamt 1-mal geändert.

patjomki
Beiträge: 382
Registriert: 18.08.2021 23:21
Has thanked: 141 times
Been thanked: 81 times
Kontaktdaten:

Re: Timer mit einer Frequenz von 8.000Hz?

Beitrag von patjomki »

Irgendwer hat geschrieben:
16.09.2025 23:39
Bist Du sicher, dass bei Bosconian 7800(+) Hz verwendet werden?
Nee, bin tatsächlich nicht sicher. Habe nur ein eigenes Sample mit 7800Hz abgespielt, aber klar, 4Khz wäre natürlich eine Lösung.

Das mit dem Zerschneiden habe ich noch nicht verstanden. Ist schon spät, muss ich ne Nacht drüber schlafen, wie mir das bei meinem ADSR-Problem helfen könnte.

Benutzeravatar
Irgendwer
Beiträge: 146
Registriert: 25.08.2021 19:05
Has thanked: 27 times
Been thanked: 77 times
Kontaktdaten:

Re: Timer mit einer Frequenz von 8.000Hz?

Beitrag von Irgendwer »

patjomki hat geschrieben:
16.09.2025 23:59
In diesem Zusammenhang verstehe ich den 200Hz-Modus einfach nicht. Wie erhält man dadurch ADSR? Hilfe! Ich raffe es einfach nicht. :(
Die schlechte Nachricht ist, Du verstehst es schon, weil man dadurch kein ADSR bekommt.
ADSR wird vom Pokey nicht unterstützt und muss halt in Software nachgebildet werden - ob nun 50x oder 200x pro Sekunde in den 16 Lautstärke-Stufen die der Chip pro Kanal anbietet.

Bei einem 200 Hz-Update kannst Du halt feiner (weil öfter) den Ausgang steuern (Lautstärke & Frequenz) und damit bestimmte Klänge überzeugender nachbilden - aber eben auch mit höheren "CPU-Kosten".

Erhard
Beiträge: 1127
Registriert: 04.11.2021 15:52
Has thanked: 134 times
Been thanked: 344 times
Kontaktdaten:

Timer mit einer Frequenz von 8.000Hz?

Beitrag von Erhard »

Irgendwie tauchen hier ein wenig vermischt die Tonerzeugung durch den POKEY (Frequenzregister), Tonerzeugung durch den POKEY via Volume-Only und das Abspielen von Samples auf.

Ich würde meinen, daß die beiden Vorgänge unterschiedliche Ansätze in der Handhabung erfordern.

Bei einer Tonerzeugung durch den POKEY via Frequenzregister dürfte eine Lautstärkeänderng mit 200 Hz oder mehr ziemlich sinnlos sein, da hier die 16 Lautstärkewerte eines POKEY-Kanals eine viel zu geringe Auflösung sind.

Bei Volume-Only und Samples (und Samples nutzen ja Volume-Only) erfordern höhere Töne entsprechend höhere Raten beim Schreiben der Werte in den POKEY.

Wie solche Programme wie der RMT in das Schema passen ist mir völlig schleierhaft. Es gibt hier ja mega-gut-klingende Musikstücke, aber wie die Wiedergabe eines Instrument mit Klangfarbe und Hüllkurve programmiertechnisch mit dem POKEY gelöst ist (und das in vielen Fällen bei eingeschaltetem Bildschirm, sprich im Interrupt und nicht unter voller Nutzung der CPU-Zeit bei ausgeschaltetem Bildschirm) erschließt sich mir nicht.

Natürlich könnte ich den Programmcode der RMT-Abspielroutine für den A8 durchlesen, damit verstehe ich aber immer noch nicht das zugrundelegende Konzept.

Ich hab mich auch irgendwann selber einmal daran versucht, ein Musikstück im RMT abzubilden. Allein zum Abspieln von Viertelnoten habe ich die obere Geschwindigkeit des RMT auswählen müssen, Leute die den RMT können haben das nicht nötig. (Triolen hab ich garnicht hinbekommen). Für mich bräuchte es hier Lehrer und Live-Kurse über mindestens 20 Doppelstunden, und das nur für eine erste grobe Einarbeitung.
Jede Info, die zu Hause auf meinem Rechner liegt habe ich unterwegs nicht verfügbar.
Jede Info, die im Netz liegt finde ich nicht wieder, wenn ich sie benötige.

Benutzeravatar
Irgendwer
Beiträge: 146
Registriert: 25.08.2021 19:05
Has thanked: 27 times
Been thanked: 77 times
Kontaktdaten:

Re: Timer mit einer Frequenz von 8.000Hz?

Beitrag von Irgendwer »

Erhard hat geschrieben:
Gestern 09:05
Irgendwie tauchen hier ein wenig vermischt die Tonerzeugung durch den POKEY (Frequenzregister), Tonerzeugung durch den POKEY via Volume-Only und das Abspielen von Samples auf.
Ja, den Eindruck kann man gewinnen.
Der Punkt ist, dass bei einer bestimmten Updatehäufigkeit (ich vermeide jetzt bewusst das Wort Frequenz) Volume-Only in Frequenzregister mehr oder weniger gut (eher schlecht) überführbar ist.
Erhard hat geschrieben:
Gestern 09:05
Bei einer Tonerzeugung durch den POKEY via Frequenzregister dürfte eine Lautstärkeänderng mit 200 Hz oder mehr ziemlich sinnlos sein, da hier die 16 Lautstärkewerte eines POKEY-Kanals eine viel zu geringe Auflösung sind.
Das Gegenteil ist der Fall. Je schneller man aktualisiert, desto weniger spielt die Feinheit der Laustärkewerte eine Rolle.
Noch ein Gedankenexperiment (das man auch gut in RMT nachvollziehen kann):
Lass POKEY einen 500Hz Ton spielen und schalte die Lautstärke des Kanals mit 200Hz laut und leise. Dann überlagern diese 200Hz den Ton.
Erhard hat geschrieben:
Gestern 09:05
Bei Volume-Only und Samples (und Samples nutzen ja Volume-Only) erfordern höhere Töne entsprechend höhere Raten beim Schreiben der Werte in den POKEY.
Richtig, deswegen kann man "versuchen" den Teil über Frequenzregister zu modellieren, wobei einem ein 200Hz Update helfen sollte. Die Diskussion ist trotzdem ziemlich theoretisch - mir sind erfolgreiche Anwendungen, wo das jemand wirklich ernsthaft/sehr erfolgreich versucht hat, nicht bekannt. (Für den C64 kenne ich Beispiele.)
Dennoch gilt: Je häufiger ich die Frequenz-/Lautstärkeregister (auch ohne Volume-Only) aktualisiere, desto besser kann ich mich einem "Wunschton" annähern. Wie z.B. bei den 100Hz Schlagzeug-Tönen oben im Beispiel.
Erhard hat geschrieben:
Gestern 09:05
Wie solche Programme wie der RMT in das Schema passen ist mir völlig schleierhaft. Es gibt hier ja mega-gut-klingende Musikstücke, aber wie die Wiedergabe eines Instrument mit Klangfarbe und Hüllkurve programmiertechnisch mit dem POKEY gelöst ist (und das in vielen Fällen bei eingeschaltetem Bildschirm, sprich im Interrupt und nicht unter voller Nutzung der CPU-Zeit bei ausgeschaltetem Bildschirm) erschließt sich mir nicht.

Natürlich könnte ich den Programmcode der RMT-Abspielroutine für den A8 durchlesen, damit verstehe ich aber immer noch nicht das zugrundelegende Konzept.
RMT macht nichts anderes als (unter PAL) alle 50Hz/100Hz/150Hz oder 200Hz (je nach Wahl) Pokey-Register mit vom Benutzer "konfigurierten" Werten zu beschicken.
Die "Konfiguration" erfolgt über "Instrumente" und "Abspiellisten".
Erhard hat geschrieben:
Gestern 09:05
Ich hab mich auch irgendwann selber einmal daran versucht, ein Musikstück im RMT abzubilden. Allein zum Abspieln von Viertelnoten habe ich die obere Geschwindigkeit des RMT auswählen müssen, Leute die den RMT können haben das nicht nötig. (Triolen hab ich garnicht hinbekommen). Für mich bräuchte es hier Lehrer und Live-Kurse über mindestens 20 Doppelstunden, und das nur für eine erste grobe Einarbeitung.
Och - ich habe mal eine 3-4 Stunden Einführung in den RMT gegeben und die Konzepte wurden recht schnell verstanden (Danke nochmal an @pps für die Unterstützung beim Erklären der Anbindung des Players in eigene Programme - das war dann etwas komplizierter, aber auch erfolgreich).

Erhard
Beiträge: 1127
Registriert: 04.11.2021 15:52
Has thanked: 134 times
Been thanked: 344 times
Kontaktdaten:

Timer mit einer Frequenz von 8.000Hz?

Beitrag von Erhard »

.
Irgendwer hat geschrieben:
Gestern 12:12
Das Gegenteil ist der Fall. Je schneller man aktualisiert, desto weniger spielt die Feinheit der Laustärkewerte eine Rolle.
An die Überlagerung der Änderung mit einer bestehenden Frequenz hab ich nicht gedacht.

Irgendwer hat geschrieben:
Gestern 12:12
RMT macht nichts anderes als (unter PAL) alle 50Hz/100Hz/150Hz oder 200Hz (je nach Wahl) Pokey-Register mit vom Benutzer "konfigurierten" Werten zu beschicken.
Das ist halt sehr global. Eigentlich müßten da tonnenweise Frequenz-, Verzerrrungs- und Lautstärke-Daten anfallen, die immer schön zeitgemäß in den POKEY rein müssen und das für im Fall von Stereo 8 Kanäle. Aber das weicht jetzt ziemlich vom Thema ab ...

Irgendwer hat geschrieben:
Gestern 12:12
Och - ich habe mal eine 3-4 Stunden Einführung in den RMT gegeben
Da war ich wohl leider nicht dabei. Einer der für mich undurchschaubarsten Teile ist die Erstellung eines Instruments, ein Kapitel, welches in dem von mir erstellten Handbuch zum RMT komplett fehlt.
Jede Info, die zu Hause auf meinem Rechner liegt habe ich unterwegs nicht verfügbar.
Jede Info, die im Netz liegt finde ich nicht wieder, wenn ich sie benötige.

Benutzeravatar
skr
Beiträge: 299
Registriert: 07.06.2021 00:25
Wohnort: Seeshaupt, Germany
Has thanked: 167 times
Been thanked: 162 times
Kontaktdaten:

Re: Timer mit einer Frequenz von 8.000Hz?

Beitrag von skr »

Irgendwer hat geschrieben:
Gestern 12:12
Och - ich habe mal eine 3-4 Stunden Einführung in den RMT gegeben
War das damals(tm) im Planetarium am Insulaner? Ist schon wieder viel zu lange her...
/|\ ...*** loading *** .... /|\

patjomki
Beiträge: 382
Registriert: 18.08.2021 23:21
Has thanked: 141 times
Been thanked: 81 times
Kontaktdaten:

Re: Timer mit einer Frequenz von 8.000Hz?

Beitrag von patjomki »

Irgendwer hat geschrieben:
Gestern 01:14
Die schlechte Nachricht ist, Du verstehst es schon, weil man dadurch kein ADSR bekommt.
ADSR wird vom Pokey nicht unterstützt und muss halt in Software nachgebildet werden - ob nun 50x oder 200x pro Sekunde in den 16 Lautstärke-Stufen die der Chip pro Kanal anbietet.
Schade, dann hat mich das Posting von Jac! auf eine falsche Fährte gelockt.
Also vielleicht muss ich noch mal konkretisieren, woher die Anforderung im Ursprungsposting kommt.

Also, ein Freund von mir ist ein sehr talentierter C64-Chipmusiker. Für gemeinsame Projekte erzeugt er halt ein SID-File, das ich, da ich musikalisch untalentiert bin, für den ATARI nur konvertieren kann. Da es weder einen direkten Konverter .sid nach .rmt gibt noch einen vom Goat-Tracker-Fileformat nach RMT, muss der Song halt auf anderem Wege zum ATARI gebracht werden.

Die Noten liegen im Goat-Tracker nativ vor, aber dann muss ich sie immer noch händisch zum RMT transportieren und die Instrumente fehlen auch noch.

Das .sid-file ist ja ein ausführbares Maschinenprogramm, der Gedanke war daher, die auf den SID-Chip ausgegebenen Befehle zur Ausgabe von Tönen in einer bestimmten Frequenz umzumünzen auf die entsprechenden Befehle für den POKEY, also eine Art von SID-Emulation.

Das funktioniert auch ganz gut, ein wesentliches Soundfeature, nämlich ADSR fehlt aber, da es, wie Du ja schriebst, keine Hardwareunterstützung für ADSR im POKEY gibt, müsste man die Funktionalität über das Lautstärkebit emulieren (ADSR ist ja im Prinzip nur eine definierte Lautstärkeänderung über die Zeit) und das war dann der Anlass für das Ausgangsposting.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast