Soundeffekt in Assembler

Es gibt 30 Antworten in diesem Thema, welches 5.735 mal aufgerufen wurde. Der letzte Beitrag (15. Februar 2024 um 22:24) ist von 8R0TK4$T3N.

  • Da ich ernsthaft überlege mich an der folgenden Bitte melde dich an, um diesen Link zu sehen. zu beteiligen, habe ich mal wieder den Relaunch64 angeschmissen. Ich habe eine kleine Idee vor Augen und habe eine Frage:

    Ich suche Infos oder sogar Beispiele zur Soundeffektprogrammierung. Es soll halt ein Schuss oder Explosion zu hören sein. Ein Kanal, keine Hintergrundmusik. Es ist malwieder eure Weisheit gefragt.

    Über Google und Boardsuche habe ich nicht wirklich was gefunden.

    64er-Zeitschriften gesucht:
    1984: 9 in gutem Zustand

    Ansonsten 64er 1984-1994 sind komplett wieder da. :D

  • Ist eigentlich nichts dahinter. Genauso wie unter Basic die entsprechenden SID-Register setzen, und evtl. über die Zeit ändern.

    Da sollte sich sogar eins der Basic-Beispiele umsetzen lassen, da gab es ein paar Effekte.

    C64Studio: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- C64Studio WIP: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.

  • guck ins c64 handbuch. sowohl "schuss" als auch "explosion" sind da zu finden - in basic halt, sollte sich aber leicht umsetzen lassen.

  • Ja, danke! Ins Handbuch habe ich auch schon reingeschaut. Aber mir machen die FOR-Schleifen Probleme. Während die Explosion ertönt soll ja vielleicht noch ein Sprite bewegt werden. Und die Beispiele sind ja so aufgebaut, dass neben dem Ton nichts anderes geschieht - halt durch die For-Schleife blockiert ist..
    Ich werde also IRQs benuzten müssen. Und wie man das genau mit einem Sound macht, wäre mit einem Beispeil toll.

    Also zähle ich in der Interrupt Routine einen Zähler hoch oder wie auch immer?

    64er-Zeitschriften gesucht:
    1984: 9 in gutem Zustand

    Ansonsten 64er 1984-1994 sind komplett wieder da. :D

  • Zitat

    guck ins c64 handbuch. sowohl "schuss" als auch "explosion" sind da zu finden - in basic halt, sollte sich aber leicht umsetzen lassen.

    Unbedingt mal auf die C64 Demo Disk schauen, die bei der 1541 dabei waren. Dort sind in ein paar nette BASIC-Beispiele, die sich leicht in HEX/Assembler umrechnen lassen. Die habe ich damals hierfür umgemodelt /o\ (damals zwar in compiliertem BASIC, aber egal)
    Bitte melde dich an, um diesen Link zu sehen.

  • Auf Domspitzes Fragen würd ich auch gern mal die Antworten hören. Es geht wohl nicht um das Geräusch, sondern wie es (neben dem laufenden Spiel) einmalig getriggert wird und dann von alleine abspielt/ausklingt.

    Nach Jahren des Nicht-Assemblern häng ich auch gerade bei diesen "Kleinigkeiten", die man erst als Problem erkennt, wenn man vor ihnen steht. Man kann alles mit Assembler lösen, aber meine Workarounds sind mit Sicherheit nicht das optimale (eventl. SID Subtune - wäre bei Domspitzes Problem i.O., aber leider nix für gleichzeitige Musikuntermalung :( )...

  • Ich vermute mal über Interrupt, entweder Timer oder Rasterzeile.

  • Squidward: Der Mann hat mein Problem erkannt! :)

    Zitat

    (eventl. SID Subtune - wäre bei Domspitzes Problem i.O., aber leider nix für gleichzeitige Musikuntermalung )...


    Verstehe! Für jeden Soundeffekt einen eigenen Song im Sid und dann bei Bedarf anspringen. Charmant. Hätte den Vorteil, dass die Effekt sehr komplex sein können und einem der ganze Koordinierungsdreck 1) abgenommen wird. Hintergrundmusik brauch ich nicht. Wäre also ne Option. Dumm, ich hab bisher keine Ahnung von Trackern...

    1) Geht ja nicht nur um die Länge des abzuspielenden Sounds, sondern es müssen bei bestimmten Effekten auch noch zeitrelevant Parameter geändert werden. Siehe Klangeffekte im Handbuch S.91.

    64er-Zeitschriften gesucht:
    1984: 9 in gutem Zustand

    Ansonsten 64er 1984-1994 sind komplett wieder da. :D

  • Mit Goattracker kann man sogar Soundeffekte definieren und gleichzeitig noch Musik abspielen. Hat ganz gut funktioniert.
    Siehe Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen. und Bitte melde dich an, um diesen Link zu sehen..

  • Wenn man es trotzdem in Assembler machen will wieso dann nicht gleich einen extra SFX-Player coden der einmal pro Frame aufgerufen wird?

  • Zitat

    Auf Domspitzes Fragen würd ich auch gern mal die Antworten hören. Es geht wohl nicht um das Geräusch, sondern wie es (neben dem laufenden Spiel) einmalig getriggert wird und dann von alleine abspielt/ausklingt.


    rayne gab schon die antwort.... man baut sich natürlich idr einen player dafür, im einfachsten fall zählt der wirklich nur einen zähler hoch und liesst dann aus tabellen die jeweiligen werte die in den sid gestopft werden für jeden frame.

  • Liebe Leute, ich danke euch für eure Hilfe. Mir qualmt der Kopf.

    1) Mit Goattracker kriege ich mittlerweile das Abspielen von Subtunes hin. Wunderbar, ABER ich kriege nicht raus, dass er den Subtune immer wieder von vorne spielt. Lässt sich das abschalten - in Goattracker hab ich nichts gefunden - diese TXT-Anleitungen sind eine Qual!?

    2) Dann habe ich versucht mit Soundeffect vom Goattracker zu arbeiten. Hab mir die Beispielcodes angesehen, aber ich kapiers einfach nicht.

    3) Vieleicht probier ich den Ansatz von Sauhund und Rayne später aus. Aber jetzt gibts erstmal nen Kaffee.

    Wenn einem zu 1, 2 oder 3 noch ne Hilfestellung, Beispielcode (arbeite mit dem C64Studie - Endurion sei Dank!) oder sonst was einfällt, sage ich schon jetzt Danke!

    64er-Zeitschriften gesucht:
    1984: 9 in gutem Zustand

    Ansonsten 64er 1984-1994 sind komplett wieder da. :D

  • du könntest auch mal den maniacs of noise sound effect editor probieren (sollte sich auf csdb finden lassen)

  • Die Ugly-Lösung

    Ich habe ne echt dreckige Lösung gefunden :whistling:
    Ich lege für jeden Soundeffekt einen subtune an mit 2 Pattern. Im ersten ertönt sofort der Effekt. Der zweite ist leer. Am Ende des Subtunes lasse ich den Song einfach auf das leere Pattern restarten. So wird der Effekt nur einmal gespielt!

    Ich weiß dreckiger gehts nicht. Aber es ist eine Lösung. Ob ich dabei bleibe weiß ich noch nicht.

    @sauhund: Habe mir den Editor mal angesehen. Aber leider ist da keine Abspielroutine bei. Speichert ja auch nicht als SID oder so. Vielleicht ist mir auch was entgangen.

    Euch allen wie immer Danke!

    64er-Zeitschriften gesucht:
    1984: 9 in gutem Zustand

    Ansonsten 64er 1984-1994 sind komplett wieder da. :D

  • Vielleicht hat die SID-Wizard was in der Richtung zu bieten? *grins

  • Der SID Wizard bietet bestimmt knackige Sounds :bgdev

  • Also bei GoatTracker ist ein Ordner examples/src dabei (hier zumindest). Da ist ein Beispiel drin für eine Gamemusic+SFXPlayer (hier example2.s).
    Kann ich notfalls auch hochladen, sollte aber wie gesagt offiziell bei GoatTracker dabei sein. Einfach mal Suchfunktion des Dateimanagers nach o.g. Datei benutzen.

  • @ internium, Rayne, sauhund: SID Wizard???

    @spider: Danke. Die Examples habe ich schon gefunden. Nur leider a) sind die Programm für nen anderen Assembler (nicht ACME) und b) macht er da ne Menge an Dingen, die ich noch nicht so recht blicke.

    Ich kenne das example2. Da lädt er nen bin-goattrack ein und (wenn ich das richtig verstehe) 4 einzelne Soundeffekte als s-file. Die SFX werden auf Tastendruck eingespielt. Ich schaffe aber nicht den programmiertechnischen Aufwand, das auf ACME umzustricken.

    64er-Zeitschriften gesucht:
    1984: 9 in gutem Zustand

    Ansonsten 64er 1984-1994 sind komplett wieder da. :D