Dragon 32 Homecomputer Kassetten in ASCII umwandeln...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

jens hat geschrieben:So... um es nochmal klar zu machen, was da überhaupt passiert:

1. WAV Sinus-Kurvenlänge -> Bitstream aus Nullen und Einsen
2. suche nach Muster "10101010" (0x55) Zeichenweise
3. in 8-Bit-Schritten weiter Springen, bis das Muster "10101010" nicht mehr vorkommt.
4. Suchen des Sync-Bits "00111100" (0x3C) Zeichenweise
Hier mal eine Hilfsklasse zum Umwandeln von Bits in Integern, falls du es gebrauchen kannst:

Code: Alles auswählen

import collections

class BitContainer(object):
    def __init__(self, bits=[], max_size=8):
        self._bits = collections.deque(maxlen=max_size)
        self.feed_iterable(bits)

    def __repr__(self):
        return '{}({})'.format(type(self).__name__, self.to_string())

    def __str__(self):
        return self.to_string()

    def __len__(self):
        return len(self._bits)

    def __int__(self):
        return self.to_integer()

    def __iter__(self):
        return iter(self._bits)

    @property
    def bits(self):
        return list(self._bits)

    def feed(self, bit):
        bit = int(bit)
        if not bit in (0, 1):
            raise ValueError('bit must be 0 or 1')
        self._bits.append(bit)

    def feed_iterable(self, bits):
        for bit in bits:
            self.feed(bit)

    def to_integer(self):
        return sum(
            bit << i for i, bit in enumerate(reversed(self._bits))
        )

    def to_string(self):
        return ''.join(map(str, self._bits))
Gedachte Anwendung:

Code: Alles auswählen

bc = BitContainer()
for bit in bitstream:
    bc.feed(bit)
    if int(bc) == 0x55:
        break
Das Ding ist allerdings nicht auf Geschwindigkeit optimiert und ich habe mir erlaubt, nützliche Zusatzfunktionalität mit einzubauen. :)
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

BlackJack hat geschrieben:@jens: Ähm, der Start dieser (Teil)Diskussion war, dass Du gesagt hast man könnte das Ende eines BASIC-Programms an den drei Nullbytes erkennen und darum wäre die Längenangabe überflüssig. Das Stand mal in diesem Beitrag: http://www.python-forum.de/viewtopic.ph ... 70#p244470
ja, anders herum: Die beiden 0x00 Bytes am Ende sind eigentlich Überflüssig. Denn wenn Block zu Ende, dann BASIC code zuende...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

So, hab den ASCII BASIC Parser fertig mit: https://github.com/jedie/PyDragon32/com ... 8130d21cfb

Dann noch die Block-Längenangabe geprüft: https://github.com/jedie/PyDragon32/com ... a821917447

Wobei das ein wenig Witzlos ist, denn ich schneide ja anhand der Block Länge auch wirklich den Code raus. Von daher kann die Länge ja beim parsen nicht anders sein...

@snafu: Deinen Code muß ich mir später ansehen.

Generell weiß ich nicht, wie früh man die Bits in Bytes umformen kann/sollte.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

jens hat geschrieben:Generell weiß ich nicht, wie früh man die Bits in Bytes umformen kann/sollte.
In welchem Zusammenhang meinst du das? Wegen möglichen Fehlinterpretationen, wenn man zu früh umwandelt, oder warum? Falls die Spec nichts anderes vorgibt, dann würde ich doch mal davon ausgehen, dass 1 Byte = 8 Bit.

Falls man sich eh immer solche Päckchen holt, dann braucht man natürlich keinen BitContainer mehr, sondern wirft die Päckchen einfach in eine Funktion ähnlich zu der `.to_integer()`-Methode in meinem Code.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

@snafu: Warum der Umweg über deque?

Code: Alles auswählen

class BitContainer(object):
    def __init__(self, bits=[], max_size=8):
        self.bits = 0
        self._mask = (1 << max_size) - 1
        
        self.feed_iterable(bits)
    
    def feed(self, bit):
        bit = int(bit)
        
        if not bit in (0, 1):
            raise ValueError('bit must be 0 or 1')
        
        self.bits = ((self.bits << 1) | bit) & self._mask
    
    def feed_iterable(self, bits):
        for bit in bits:
            self.feed(bit)
Das Leben ist wie ein Tennisball.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

snafu hat geschrieben:
jens hat geschrieben:Generell weiß ich nicht, wie früh man die Bits in Bytes umformen kann/sollte.
In welchem Zusammenhang meinst du das? Wegen möglichen Fehlinterpretationen, wenn man zu früh umwandelt, oder warum? Falls die Spec nichts anderes vorgibt, dann würde ich doch mal davon ausgehen, dass 1 Byte = 8 Bit.
Ich z.B. nicht direkt nach dem Sync-Bit los legen: Zumindest nicht direkt von 8-Bits in Zeichen wandeln. Also quasi: chr(int([0,0,1,1,0,0,1,0], 2))

Denn es gibt, auch wenn es eine 8-Bit-Rechner ist, dennoch einige 16-Bit Werte:
Trotz des 8 Bit breiten Datenbusses konnten intern zwei 8-Bit-Register zu einem 16-Bit-Register zusammengefasst werden.
Siehe: http://de.wikipedia.org/wiki/Motorola_6809

Was ich machen könnte: Nach dem Sync-Bit nur das machen: int([0,0,1,1,0,0,1,0], 2) (btw. wie nennt man am Besten das was da raus kommt? Ich habs bisher meist byte_no genannt. Trifft es aber IMHO nicht ganz.)

@EyDu: Danke für den Code. Werde ich mir auch noch anschauen müßen...

Ich will aber als erstes nochmal an den WAVE->Bits Algorithmus ran. Ich will das doofe even_odd loswerden.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

@jens: Die 8 Bits zu einem `int` umgewandelt würde ich ja einfach `byte` oder `byte_value` nennen. Denn das ist es ja. :-)

Das es auch 16-Bit-Werte geben kann hat nichts mit dem Prozessor zu tun. Das die falsche Ebene. Der C64 hat keine 16-Bit-Register (aus dem PC, aber den benutzt man ja nicht direkt) und das BASIC-Format sieht grundsätzlich genau so aus. Die 16-Bit-Werte sind in Anwendungsdaten. Wobei die Anwendung hier der BASIC-Interpreter ist. Man kann auch auf Prozessoren mit 8- oder 16-Bit-Registern Werte in den Daten haben die 24 oder 32 Bits haben. Oder noch mehr.

Ich würde die Pulse ja direkt in einen Bytewert umwandeln sowie ein Bit erkannt wurde. Da man die von links in den Bytewert hineinschiebt, braucht man sich nicht einmal um die überzähligen Bits zu kümmern, die fallen automatisch weg. Erscheint mir am einfachsten und direktesten.

Wenn man das in eine eigene Klasse verpacken möchte (ungetestet):

Code: Alles auswählen

class ShiftRegister(object):
    def __init__(self, length=8, start_value=0):
        self.value = start_value
        self.mask = 1 << length

    def __int__(self):
        return self.value

    def __cmp__(self, other):
        return cmp(int(self), int(other))

    def add_bit(self, bit_value):
        self.value = (self.value >> 1) | (self.mask if bit_value else 0)
Dann kann man zum Syncbyte finden zum Beispiel so etwas schreiben:

Code: Alles auswählen

        while self.shift_register != 0x3c:
            self.shift_register.add_bit(next(bits))
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

EyDu hat geschrieben:@snafu: Warum der Umweg über deque?
Weil ich offen gestanden bloß Grundkenntnisse zur sinnvollen Anwendung von Bit-Operationen habe und mir schlichtweg nichts besseres eingefallen ist. ;)
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich brauche nochmal hilfe.

Ich hab nochmal neu ein wave2bitstream implementiert. Nun nach dem Schmitt-trigger prinzip. Ziel ist es, von dem even_odd weg zu kommen und automatisch zu synchronisieren.

Aktueller Stand hier: https://github.com/jedie/PyDragon32/blo ... tstream.py

Diesmal sind es mehrmals hintereinander geschaltete Interatoren:
1. iter_wave_values() - yield Frame Nummer und Amplituden-Wert (alter code) -> https://github.com/jedie/PyDragon32/blo ... am.py#L194

2. iter_trigger() - yield Frame Nummer nach dem Schmitt Trigger Prinzip:

Code: Alles auswählen

    def iter_trigger(self, iter_wave_values, half_sinus):
        """
yield only the triggered frame numbers
simmilar to a Schmitt trigger
"""
        last_state = False
        for frame_no, value in iter_wave_values:
            if last_state == False and value > self.trigger_value:
                yield frame_no
                last_state = True
            elif last_state == True and value < -self.trigger_value:
                if half_sinus:
                    yield frame_no
                last_state = False
-> https://github.com/jedie/PyDragon32/blo ... am.py#L179

3. iter_duration() - Berechnet die Zweiten zwischen den getriggerten Frames:

Code: Alles auswählen

    def iter_duration(self, iter_trigger):
        """
yield the duration of two frames in a row.
"""
        old_frame_no = next(iter_trigger)
        for frame_no in iter_trigger:
            duration = frame_no - old_frame_no
            yield (frame_no, duration)
            old_frame_no = frame_no
-> https://github.com/jedie/PyDragon32/blo ... am.py#L169

4. iter_bitstream() - Aus den Zeiten werden einsen und nullen (alter code) -> https://github.com/jedie/PyDragon32/blo ... am.py#L106


Nun fehlt noch das synchronisieren zwischen den Halb-Sinus-Wellen... Dazu hatte ich zwei Ideen:
1. Man nimmt einen Teil des Bitstream und schaut nach dem Leading-Byte Muste wie 0101010...
2. Man schaut sich die Zeiten der Halbwellen an und überlegt ob die Zusammen passen.

Hab mich für die zweite Lösung entschieden, weil sie unabhängig vom verwendeten Leading-Byte Muster ist (Das kann man dann später suchen)...

Dazu habe ich eine, nicht so besonders optimierte Lösung:

Code: Alles auswählen

def diff_info(data):
    """
>>> diff_info([5,5,10,10,5,5,10,10])
(0, 15)
>>> diff_info([5,10,10,5,5,10,10,5])
(15, 0)
"""
    def get_diff(l):
        diff = 0
        for no1, no2 in iter_steps(l, steps=2):
            diff += abs(no1 - no2)
        return diff

    data1 = data[2:]
    diff1 = get_diff(data1)

    data2 = data[1:-1]
    diff2 = get_diff(data2)

    return diff1, diff2
-> https://github.com/jedie/PyDragon32/blo ... ls.py#L246

Also die Idee, ist, das im Bitstrom die Halb-Sinus-Wellen-Dauer immer die selbe Zeit haben (mit Toleranzen natürlich).
Ein Beispiel:
Beim Dragon ist eine 1 ~ 2400Hz und 2 ~ 1200Hz
Die Dauer wäre dann, weil es einfach ist: 1==10 und 0==20
Die Halbwelle ist halt die hälfte also nehmen wir mal die Beispielwerte 1/2 1==5 und 1/2 0==10 an...

Der Bitstrom ...,1,0,1,0,... wäre dann also diese Zeiten der Halbwellen:

...,5,5,10,10,5,5,10,10,...

Wenn es nicht synchron ist, dann sind die Werte um eine Halbwelle verschoben, also beispielsweise:

...,5,10,10,5,5,10,10,5,...

Mit diff_info() kann man das dann feststellen. Sie DocTest darin...

Die Idee war nun, das man vor dem eigentlichen Auslesen einen Test machen sync() und dann evtl. eine Halbwelle weiterspringt.
Genau das klappt aber z.Z. nicht, siehe: https://github.com/jedie/PyDragon32/blo ... eam.py#L73

Für das "Weiterspringen" dache ich mir, lese ich einfach einen Wert aus und gut -> https://github.com/jedie/PyDragon32/blo ... eam.py#L89

Tut es aber nicht.

Warum?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Hm. Ich glaube ich habe Fehler weil ich u.a. Iterator und Generator durcheinander würfle :oops: ):

So, mit https://github.com/jedie/PyDragon32/com ... 96e7a22d9c kann man .sync() innerhalb des Interatiors aufrufen.

Aber irgendwie scheint es egal zu sein, ob ich eine halbwelle weiter springe oder nicht?!?!

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:


GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

So, mit https://github.com/jedie/PyDragon32/com ... 1c84c3b0a7 nutzte ich den "TextLeveMeter" vorgestellt hier: http://www.python-forum.de/viewtopic.php?f=11&t=32150

Damit kann man jetzt besser "sehen" was passiert. Dabei ist die Verkettung der Generatoren nun vom vorteil...

Sehen kann man dann sowas hier:

Code: Alles auswählen

|                                      |            *                         |
|                                      |             *                        |
|                                      |             *                        |
|                                      |             *                        |
|                                      |          *                           |
|                                      |       *                              |
|                                      |    *                                 |
|                                 *    |                                      |
|                              *       |                                      |
|                             *        |                                      |
|                             *        |                                      |
|                            *         |                                      |
|                               *      |                                      |
|                                *     |                                      |
|                                 *    |                                      |
|                                      |    *                                 |
|                                      |      *                               |
|                                      |       *                              |
|                                      |         *                            |
bit 1 at 1868 in 19Samples = 2321Hz
|                                      |          *                           |
|                                      |            *                         |
|                                      |             *                        |
|                                      |            *                         |
|                                      |             *                        |
|                                      |             *                        |
|                                      |            *                         |
|                                      |            *                         |
|                                      |          *                           |
|                                      |        *                             |
|                                      |       *                              |
|                                      |     *                                |
|                                      |    *                                 |
|                                 *    |                                      |
|                                 *    |                                      |
|                               *      |                                      |
|                             *        |                                      |
|                             *        |                                      |
|                            *         |                                      |
|                            *         |                                      |
|                            *         |                                      |
|                            *         |                                      |
|                             *        |                                      |
|                              *       |                                      |
|                               *      |                                      |
|                                *     |                                      |
|                                  *   |                                      |
|                                      |      *                               |
|                                      |        *                             |
bit 0 at 1897 in 29Samples = 1520Hz
|                                      |           *                          |
|                                      |            *                         |
|                                      |            *                         |
|                                      |            *                         |
|                                      |         *                            |
|                                      |      *                               |
|                                      |   *                                  |
|                                 *    |                                      |
|                              *       |                                      |
|                            *         |                                      |
|                            *         |                                      |
|                            *         |                                      |
|                               *      |                                      |
|                                *     |                                      |
|                                 *    |                                      |
|                                      |    *                                 |
|                                      |     *                                |
|                                      |      *                               |
|                                      |         *                            |
bit 1 at 1916 in 19Samples = 2321Hz
:D

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Komisch, bei manchen Dateien habe ich offensichtlich verkehre Vorzeichen aus den WAVE Daten. Das sieht dann z.B. so aus:

Code: Alles auswählen

 ==== go into positive sinus cycle ===============
bit 0 at 4432 in 33Samples = 1336Hz
|                                      |          *                           | value: 76 (3.0%)
|                                      |      *                               | value: 49 (5.0%)
|                                      |  *                                   | value: 21 (12.0%)
|                                      |*                                     | value: 6 (42.0%)
|                                      *                                      | value: 3 (85.0%)
|                                      | *                                    | value: 11 (23.0%)
|                                      |   *                                  | value: 29 (8.0%)
|                                      |       *                              | value: 57 (4.0%)
|                                      |            *                         | value: 85 (3.0%)
|                                      |            *                         | value: 85 (3.0%)
|                   *                  |                                      | value: -125 (3.0%)
|                     *                |                                      | value: -113 (3.0%)
|                        *             |                                      | value: -94 (3.0%)
|                           *          |                                      | value: -77 (4.0%)
|                             *        |                                      | value: -63 (5.0%)
|                               *      |                                      | value: -49 (6.0%)
|                                 *    |                                      | value: -36 (8.0%)
|                                   *  |                                      | value: -22 (12.0%)
|                                    * |                                      | value: -14 (19.0%)
|                                     *|                                      | value: -7 (37.0%)
|                                     *|                                      | value: -5 (51.0%)
|                                     *|                                      | value: -5 (51.0%)
|                                     *|                                      | value: -7 (37.0%)
|                                    * |                                      | value: -14 (19.0%)
|                                   *  |                                      | value: -21 (13.0%)
|                                 *    |                                      | value: -34 (8.0%)
|                               *      |                                      | value: -46 (6.0%)
|                             *        |                                      | value: -60 (5.0%)
|                           *          |                                      | value: -74 (4.0%)
|                         *            |                                      | value: -90 (3.0%)
|                      *               |                                      | value: -110 (3.0%)
|                                      |                  *                   | value: 126 (2.0%)
 ==== go into positive sinus cycle ===============
bit 0 at 4464 in 32Samples = 1378Hz
|                                      |                *                     | value: 112 (2.0%)
|                                      |             *                        | value: 93 (2.0%)
|                                      |          *                           | value: 76 (3.0%)
|                                      |        *                             | value: 62 (4.0%)
|                                      |      *                               | value: 49 (5.0%)
|                                      |    *                                 | value: 35 (7.0%)
|                                      |  *                                   | value: 21 (12.0%)
|                                      | *                                    | value: 13 (19.0%)
|                                      |*                                     | value: 6 (42.0%)
|                                      *                                      | value: 3 (85.0%)
|                                      *                                      | value: 3 (85.0%)
|                                      |*                                     | value: 4 (63.0%)
|                                      | *                                    | value: 11 (23.0%)
|                                      |  *                                   | value: 18 (14.0%)
|                                      |   *                                  | value: 29 (8.0%)
|                                      |     *                                | value: 43 (5.0%)
|                                      |       *                              | value: 57 (4.0%)
|                                      |          *                           | value: 71 (3.0%)
|                                      |            *                         | value: 85 (3.0%)
|                                      |               *                      | value: 105 (2.0%)
|                                      |               *                      | value: 105 (2.0%)
|                   *                  |                                      | value: -125 (3.0%)
|                        *             |                                      | value: -94 (3.0%)
|                             *        |                                      | value: -63 (5.0%)
|                                 *    |                                      | value: -36 (8.0%)
|                                    * |                                      | value: -14 (19.0%)
|                                     *|                                      | value: -5 (51.0%)
|                                     *|                                      | value: -7 (37.0%)
|                                   *  |                                      | value: -21 (13.0%)
|                               *      |                                      | value: -46 (6.0%)
|                           *          |                                      | value: -74 (4.0%)
|                      *               |                                      | value: -110 (3.0%)
|                                      |                *                     | value: 112 (2.0%)
 ==== go into positive sinus cycle ===============
bit 0 at 4497 in 33Samples = 1336Hz

:shock:

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Neben 8, 16, 32bit gibt es eben noch signed und unsigned-Datentypen in WAVE-Files.
BlackJack

@jens: Das war ja genau der Grund warum Deine original aufgenommene WAV bei einem ersten Versuch funktioniert hat, die von xroar aber nicht. Ich habe mir dann mit der `audioop.bias()`-Funktion beholfen um das zu korrigieren. Sollte irgendwo in diesem mittlerweile ziemlich langen Thema stehen. :-)
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Sirius3 hat geschrieben:Neben 8, 16, 32bit gibt es eben noch signed und unsigned-Datentypen in WAVE-Files.
Die Information bekommt man allerdings aus dem WAVE modul nicht raus, oder? Zumindest finde ich nichts dazu bei http://docs.python.org/2/library/wave.html

Ich mein wäre ja ein leichtes, das Vorzeichen umzudrehen, wenn man wüßte ob das nötig ist.
BlackJack hat geschrieben:Ich habe mir dann mit der `audioop.bias()`-Funktion beholfen um das zu korrigieren.
Stimmt. Allerdings würde ich gern auf audioop verzichten, wenn's geht.

audioop ist ein binär modul, oder?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

@jens: Wenn es kein Binärmodul wäre, dann wäre es wohl zu langsam. Zumindest in CPython.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Hab bei http://docs.python.org/2/library/audioo ... op.lin2lin was interessantes gefunden:
In some audio formats, such as .WAV files, 16 and 32 bit samples are signed, but 8 bit samples are unsigned. So when converting to 8 bit wide samples for these formats, you need to also add 128 to the result:

new_frames = audioop.lin2lin(frames, old_width, 1)
new_frames = audioop.bias(new_frames, 1, 128)

The same, in reverse, has to be applied when converting from 8 to 16 or 32 bit width samples.
Das heißt doch aber auch, das ich einfach pauschal bei 8-bit waves 128 addieren kann.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

@jens: Genau das habe ich in meine Code der hier irgendwo im Thema steht gemacht. Wenn Samplebreite 1 Byte dann mit `bias()` drauf addieren.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

done: https://github.com/jedie/PyDragon32/com ... b3c4ee065f

ohne:

Code: Alles auswählen

|                                      |         *                            | value: 64 (3.0%)
|                                      |         *                            | value: 65 (3.0%)
|                                      |         *                            | value: 64 (3.0%)
|                                      |         *                            | value: 65 (3.0%)
|                                      |         *                            | value: 64 (3.0%)
|                                      |         *                            | value: 64 (3.0%)
|                                      |         *                            | value: 65 (3.0%)
|                                      |         *                            | value: 65 (3.0%)
|                                      |         *                            | value: 65 (3.0%)
|                   *                  |                                      | value: -128 (2.0%)
|                        *             |                                      | value: -92 (3.0%)
|                            *         |                                      | value: -69 (4.0%)
|                           *          |                                      | value: -76 (4.0%)
|                        *             |                                      | value: -92 (3.0%)
|                                      |                 *                    | value: 124 (2.0%)
 ==== go into positive sinus cycle ===============
|                                      |            *                         | value: 88 (2.0%)
|                                      |         *                            | value: 64 (3.0%)
|                                      |         *                            | value: 65 (3.0%)
|                                      |            *                         | value: 88 (2.0%)
|                                      |              *                       | value: 104 (2.0%)
|                    *                 |                                      | value: -120 (3.0%)
|                       *              |                                      | value: -100 (3.0%)
|                         *            |                                      | value: -84 (4.0%)
|                           *          |                                      | value: -77 (4.0%)
|                            *         |                                      | value: -68 (4.0%)
|                            *         |                                      | value: -69 (4.0%)
|                           *          |                                      | value: -76 (4.0%)
|                        *             |                                      | value: -92 (3.0%)
|                      *               |                                      | value: -108 (3.0%)
|                    *                 |                                      | value: -121 (3.0%)
|                                      |                *                     | value: 116 (2.0%)
und mit:

Code: Alles auswählen

|                            *         |                                      | value: -64 (4.0%)
|                             *        |                                      | value: -63 (5.0%)
|                            *         |                                      | value: -64 (4.0%)
|                             *        |                                      | value: -63 (5.0%)
|                            *         |                                      | value: -64 (4.0%)
|                            *         |                                      | value: -64 (4.0%)
|                             *        |                                      | value: -63 (5.0%)
|                             *        |                                      | value: -63 (5.0%)
|                             *        |                                      | value: -63 (5.0%)
 *** Have 1 samples skipped, because to lower amplitude.
|                                      |    *                                 | value: 36 (7.0%)
 ==== go into positive sinus cycle ===============
|                                      |        *                             | value: 59 (4.0%)
|                                      |       *                              | value: 52 (4.0%)
|                                      |    *                                 | value: 36 (7.0%)
|                                     *|                                      | value: -4 (64.0%)
|                                *     |                                      | value: -40 (7.0%)
|                            *         |                                      | value: -64 (4.0%)
|                             *        |                                      | value: -63 (5.0%)
|                                *     |                                      | value: -40 (7.0%)
|                                  *   |                                      | value: -24 (11.0%)
|                                      |*                                     | value: 8 (31.0%)
|                                      |   *                                  | value: 28 (9.0%)
 ==== go into positive sinus cycle ===============
bit 1 at 21 in 11Samples = 2004Hz
First bit is at: 21
enable half sinus scan
|                                      |      *                               | value: 44 (5.0%)
|                                      |       *                              | value: 51 (5.0%)
|                                      |        *                             | value: 60 (4.0%)
|                                      |        *                             | value: 59 (4.0%)
|                                      |       *                              | value: 52 (4.0%)
|                                      |    *                                 | value: 36 (7.0%)
|                                      |  *                                   | value: 20 (12.0%)
|                                      |*                                     | value: 7 (36.0%)
|                                    * |                                      | value: -12 (22.0%)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten