Geschichte

sDRUM

1997 begann die Entwicklung des modular aufgebauten „Sample-Drummers“.


In unglaublicher, mühseliger Kleinarbeit, unvorstellbarem Enthusiasmus und Erfinder-Reichtum wurde ein System entwickelt, welches zur Fertigung einer Kleinserie nötig war.

  • Assembler (in Turbo Pascal, siehe am Ende der Beschreibung)
  • EPROM-Simulator („RAM-Programmer“, am PC-LPT-Port)
  • erste Testprogramme, - zuerst völlig abstrakt im Urlaub auf Papier gekritzelt, "wie es gehen könnte" -
  •  8031 und 8051 Testplatinen
  • Spannrahmen für Siebdruck,
    Hilfskonstruktionen
    zur Montage
  • Layouts für Frontplatten, Gerätebeschriftung
  • Designer „Typen-Schild“ aus CD's!
  • Stromlaufpläne, Testschaltungen, Versuchsanordnungen
  • Platinen-Layouts
  •  komfortable Sample-Transfer-Software für PC in DOS „TransX“ und für Windows "Wtrans"

EPROM-Simulator(en) und Test-Boards
Für die Programmier- ungebung war unbedingt ein EPROM-Simulator nötig. Dieser wurde in verschiedenen Versionen mit batteriegepufferten RAM's aufgebaut.

Die Transfer-Software vom PC zum RAM-Simulator wurde unter Pascal entwickelt. Einige Editor-Funktionen konnten hervorragend genutzt werden. "F9" startete im Hintergrund die Übersetzung und Ausführung eines weiteren Pascal-Programmes, welches den zuvor gespeicherten Quelltext als Parameter an das Assemblerprogramm übergab und dieses aufruf. Der vom Assembler ausgegebene Binärcode wurde dann über LPT auf den Eprom-Simulator gesendet. Über einen weiteren LPT-Port wurde der 8051 resettet und das Programm auf dem 8051 mit den zuvor im Eprom-Simulator erhaltenen Daten gestartet.
Zu sehen: Registerplatine, Versuchs-Tastatur-Platine, RAM-Programmer, EPROM-Simulator, CPU-Testplatine.

8031-Testboard:

Die ersten Versuche liefen auf einer kleinen 8031-Testplatine. Kurz darauf wurde „der große Bruder“ 80535 bestellt und unter die Lupe genommen: Register, Interrupts, Ports, AD-Wandler - alles optimal vorhanden. (Heute 2009 bedauere ich, dass es zu der Zeit weder USB noch ausreichend Speicher gab... Die eingesetzten 1 Megabit-sRAMs waren damals die größten Speicher, die im Handel erschwinglich waren).

 

Die ersten Testprogramme:

  • „Setze eine LED am Ausgang nach Reset“ ! Hurra! Geht! Dann:
  • „lasse eine LED blinken“, danach:
  • „Setze eine LED, wenn ein Eingang gesetzt wird“ ... bis hin zu
  • „Starte das Abspielen eines Pattern bei Eintreffen eines MIDI-Start-Command per Interrupt“... krass.

Dazwischen lagen viele lange Nächte: AD-Wandlung, Aussteuerungsanzeige, Kommunikation über den LPT-Port, DIN-Sync-Interface... jeden Tag ein neues Ziel.

vom Allerersten Sdrum
bis zur Kleinserie, die
Unikate darstellen

Bestückung der Platinen:
In geduldiger Handarbeit wurden über 30.000 Anschlussdrähtchen abgekantet, geschnitten, eingefädelt, verlötet, gerade gebogen, kontrolliert....

 

 

Handbestückung: 80 Sample-Module, 80 Analog-Filter-Module

  • Prozessor-Platine
  • Grundplatine (Bus-Register und Analogteil)
  • Netzteil
  • Tatstatur-Platine
  • Taktgenerator VCO - Platine

Bilder-Serie: Bestückung, Module, Aufbau, Tests

Prototyp
noch völlig handmade

Prototyp
mit handgefertigten, durchkontaktierten Platinen, per Spraydose und Abklebeband lackiertem Gehäuse...

danach die "Kleinserie" mit schwarz-matter Einbrenn-Lackierung, eloxierten Modulblechen, UV-Siebdruck-Beschriftung

Die ersten Platinen wurden manuell hergestellt – „Layout-Film“ mit Laser-Drucker gedruckt, belichtet, geätzt, gebohrt, Durchkontaktierungen per Hand gesetzt, bestückt, … korrigiert.
Für die Serien-Produktion wurden durchkontaktierte Platinen in Auftrag gegeben und per Hand bestückt. Die Platinen verfügten über keine Lötstopp-Maske und hatten überall versteckte Brücken durch Zinnspritzer der Hot-Air-Verzinnung. Die Suche kostete viel Zeit und Mühe. Kurzschlüsse zwischen Daten- und Adressleitungen lassen sich schwer analysieren.

Die Frontplatten-Beschriftung erfolgte über ein abenteuerliches Siebdruck-Verfahren mit UV-härtender Farbe. Gerakelt wurde per Hand, gehärtet in einer CD-Siebdruckmaschine.

Die ersten 3 Geräte besaßen eloxierte Modulbleche, die folgenden Geräte tragen eine Mercedes-Benz-Metallic-Autolackierung.

(Fotos: Schablonen, Siebrahmen, Justagehilfen)

 

 

 

Ein besonderes HighLight sind die Typenschilder -

Diese dürften in ihrer Herstellung einmalig sein!

Auf jeden Fall ist jedes einzelne ein Unikat, herausgeschnitten aus einer CD. - aus einer Compact Disc, die während ihrer Fertigung in den Prozeßschritten manipuliert wurde.

Auf diese Weise entstanden bunt schillernde Schildchen, die ein zusätzlicher „Hingucker“ sind, jedes mit einer eigenen Seriennummer.

Rückwand mit Power, DIN-SYNC: 1xIN, 2x out, MIDI: IN/OUT/TRHU,  Analog-In, Audio Out, LPT-Connector für PC

Ausschnitt Bedienfront

Ausschnitt
Keyboard
Tastatur-Platine

Infos zur Layout - Gestaltung und Frontplatten - Beschriftung

  • Siebdruckrahmen geschraubt, Justage-Vorrichtung zum Positionieren und Fixieren der Druckstücke gebaut
  • Hand-gerakelt, UV-Trocknung in Druckmaschine
  • Adapterrahmen für Tastatur - Platinenbefestigung mit
    Laubsäge und Fräsmaschine gefertigt (Konturen fräsen in 5mm Plexigals)
  • Etiketten-Druck mit Laser HP4L für Sticker
    (Gehäuse-Beschriftung an Rückwand)
  • mehrfach aufgetragene Fluoreszenz-Farbkennzeichnungen in den Kerben der Poti-Wellen!
  • erste „blaue LED's“ ! die im Handel verfügbar waren - novum

Modulbank

Modulbank

Tastatur-Front

Tastatur-Front

Register-Platine, Prozessor-Board, Netzteil:

im „Rohbau“

im „Rohbau“

Bestückung PLC

TechDoc:

Schema Sample-Modul:

Tastatur-Belegung

Stromlaufpläne

  • Samplingmodul, Filtermodul, Prozessorplatine, Registerplatine,
    Tastaturplatine, Netzteilplatine, VCF-Ergänzung, …
    EPROMMer, RAM-Programmer, Testschaltungen

    (veröffentlichen?)

 

Layouts

  • Platinen, Fräskonturen, Gehäuseteile, Hilfskonstruktionen

     

Software

  • TRANSX, wtrans, ass13, ram_prg,
    Beschreibung

    Screenshots
    Download


Assembler:

  • eigener Kommandozeilen-Assembler
    Der Assembler nutzte den Text-Editor der Turbo-Pascal-Oberfläche, in dem Prozessor-Befehl für Prozessor-Befehl per Hand definiert wurde
    (absolute Speicher- und Laufzeit-Optimierung!)

    Er umfasste Variablen, Konstanten, Sprungbefehle, Fehler-Tests (Sprungweiten etc).
    Mit Übersetzung des „Pascal-Textes“, der eigentlich der Assembler-Code war, wurde per F9 ein anderes Pascal-Programm im Hintergrund übersetzt und gestartet, welches eine Routine aufrief, die den fertigen Binärcode des Assembler-Ergebnisses über den Parallel-Port auf einen selbst entwickelten EPROM-Simulator schickte. Über eine extra-LPT-Leitung wurde ein Rest-Befehl am 8031/80535 ausgelöst und das neue Programm gestartet. Damit war eine perfekte Testumgebung gewährleistet: Programm schreiben, F2 speichern, mit F9 in den EPROM-Simulator schicken und das Programm im EMR starten!

  • ASS13.EXE, (→ Beschreibung, download)

    Auszug aus dem Listing siehe unten

Anwender
Die glücklichen Dresdner Musiker
u.a. AAA Placid Records

Anwendung
Cover einer Schallplatte,
auf der sDRUM zu hören ist.


www.placid-records.de

Der Programmierer,

Layouter, Entwickler,

... (iche)

http://ssander.jimdo.com/

weitere Doku-Fotos:

 

Assembler-Beispiel:

Das ist etwa 1% des Gesamtprogrammes.

Hier habe ich damals jede Zeile im Kopf gehabt! … heute staune ich selber ;-)


Quelltext-Auszug für meinen selbst geschriebenen Assembler im Turbo-Pascal-Editor:

 

{ Clear-Taste #22 in Pattern-Mode löscht alle Steps

in Kombination mit ta015 }

 

 

{ PatternInhalt löschen }

PedClrS: lCall :ta015

jnz :PedS

ret

 

PedS: mov A Pn ; Patternnummer

anl a b11110000

orl a r2

mov r2 a

 

mov B #64 ; Umrechnungsfaktor für dph, dpl

mul AB

mov dpth b ; DataPointer-High

mov dptl a ; DP low (Patternanfang)

 

mov i #64

mov a #0

PCLSt: movx @dptr a

inc dptr

djnz i :PCLSt

 

{ PatternInfoTabelle rücksetzen }

mov a r2 ; Tastennummer (zu löschendes Pattern der akt. Grp)

mov b #4

mul AB

mov dpth #16 ; 0001.0000:0000.0000 = 4096

mov dptl a

 

movx a @dptr ; xStep = 16 Schritte

anl a b10000000 ; MacroEnable nicht ändern

orl a #15

movx @dptr a

inc dptr

 

mov a b00000010

movx @dptr a ; Shuffle-Stärke 0, Roll/Flam-Stärke 2

inc dptr

 

mov a #0 ; SclPointer auf 4/4

movx @dptr a

inc dptr

 

{ alte Werte nicht ändern! Sonst Problem bei Macro

mov a Pn ; eigene Patternnummer für First/LastMacPn speichern

anl a b00001111

mov r2 a

swap a

orl a r2

movx @dptr a}

 

ret