P L A T I N U M Coders Corner - Der Inhalt QBasic . . . . . . . . . . . Seite 2 . . . . . Speedy Ein Pascal-Rtsel. . . . . . . . Seite 3 . l'Original du PTPT The Art of Composing. . . . . . . Seite 4 . l'Original du PTPT The Art of Coding. . . . . . . . Seite 20 . . . Master Yoda Part VII des ASM-Kurses. . . . . . Seite 24 . . . Master Yoda QBASIC [ Speedy / TalkTime ] Probiert mal folgendes Listing in QBASIC aus ! CLS SCREEN 13 FOR a = 1 TO 255: FOR b = 1 TO 10 CIRCLE (160, 100), a,a NEXT b NEXT a FOR c = 255 TO 1 STEP -1: FOR d = 1 TO 10 CIRCLE (160, 100), c,0 NEXT d NEXT c END Geil, oder ? Ein Pascal Rtsel [ l'Original du PTPT ] Ein kleines Rtsel! Schaut euch mal folgendes Programm an: uses GRMPFGAGGAWAGGONG; var a,b,c,d:word; begin HOLTERDIPOLTER(a,b,c,d); d:=54*ord(b=11)+85*ord(b=10)+115*ord(b=9)+146*ord(b=8)+177*ord(b=7) +207*ord(b=6)+238*ord(b=5)+268*ord(b=4)+299*ord(b=3)+327*ord(b=2) +358*ord(b=1)+389*ord((b=12)and(c>24))+24*ord((b=12)and(c<25))-c +ord((b<3)and(a mod 4=0))-ord((b<3)and(a mod 100=0)) +ord((b<3)and(a mod 400=0)); writeln(d); end. Jetzt die groe Preisfrage: Wodurch sind die Platzhalter GRMPFGAGGAWAGGONG und HOLTERDIPOLTER zu ersetzen, damit das Programm seinen Sinn erfllt und was macht das Programm dann? Ich mchte wetten, da da keiner drauf kommt! Cheers, l'Original du PTPT THE ART OF COMPOSING [ l'Original du PTPT ] #Papst! Nun ja, so umfangreich, da dafr eine eigene Rubrik einge- richtet werden knnte, wird mein MOD-Kurs garantiert nicht; da ich mittlerweile ein wenig fr die Schule tun mu (ich mach' jetzt Abi), habe ich nicht mehr allzuviel Zeit. Diesmal sieht's so aus: In der Woche zwischen dem Erhalt des PLT#15 und dem Anzeigenschlu habe ich nur heute nach- mittag Zeit... Dementsprechend wird der erste Teil recht kurz. Also, los geht's: RACKE RACKE RACKE BAIBEE GATTA GATTA GATTA FEELIN - the art of composing - - Part 1 - -- Vorwort: ######## Viele wissen, da jeder MODs schreiben kann, der einen PC hat. Alles, was man braucht, ist ein Tracker und ein paar Samples, die man aber auch aus jedem MOD klauen kann. Was viele nicht wissen: Das Composen, das Schreiben eines MODs, ist mehr als nur simples musizieren. Es ist ein Weg, seiner Kreativitt freien Lauf zu lassen, ohne enge Grenzen zu haben. Es bietet die Mglichkeit, Emotionen auszudrcken und auch loszuwerden. Bei vielen Leuten scheitert's beim Composen an zwei Dingen: Entweder fehlt jegliche musikalische Begabung bzw. Kreativitt. Da kann man nichts machen. Oder es fehlt das Grundwissen, das ntig ist, um einem Tracker schne Tne zu entlocken. Da schon eher. Und genau dies versuche ich jetzt. Ich mu allerdings sagen, da ich selbst nicht die allergrte musikalische Grundausbildung gehabt habe. Im Kindergarten die Musikschule (das einzige, das davon blieb, ist ein Glockenspiel), dann bis zur neunten Klasse der Musikunterricht, in dem blicher- weise Hausaufgaben gemacht wurden. Und dann habe ich mal ein- einhalb Jahre lang Schlagzeugunterricht genommen. Da habe ich am meisten gelernt. Den Rest habe ich auf zwei Wegen gelernt: erstens durch's Composen selbst, zweitens durch das Auseinander- pflcken von Liedern, die man berall hrt - im Radio, in Discos usw. Puh, eigentlich wollte ich gar kein Vorwort schreiben! Ausrstung: ########### Was braucht man zum Composen? 1. Einen Tracker. Ich selbst arbeite mit MODEdit 2.0, ist aber Geschmackssache. Nachteil von MODEdit: Er hat nur vier Stimmen. Empfehlenswert sind auch der Scream Tracker 3 mit 16 Stimmen ( Wenn die nicht reichen... ) und sehr komfortablen Funktionen, sowie der Multitrack Module Editor mit 32 Stimmen und ebenfalls viel Komfort. Die verwende ich nicht, weil die sich mit irgendetwas in dem Computer, den ich nutze, nicht vertragen (Wei der Geier, womit, jedenfalls scheine ich der einzige zu sein, bei dem der Scream Tracker 3.0 mit 95%iger Sicherheit in den ersten 10 Minuten abstrzt). Auch MODEdit ist mir schon abgestrzt. Neulich zweimal innerhalb von hchstens 20 Stunden. Das war dann auch ein Ereignis, das ich rot im Kalender anstreichen konnte. Was braucht der Composer noch? Auch recht wichtig: Ein Programm zum Bearbeiten von Samples. Der Advanced Digiplayer hat sich hier als extrem gltig erwiesen. Und - das wird aber jeder Composer wohl haben - natrlich reine MOD-Abspiel-Programme, die zum Teil besseren Klang oder interessante Funktionen bieten. Als Beispiel sei hier MODPlay Pro 2.19 angefhrt, der zusammen mit dem DSMI (Soundroutine von PMP / DMP) die einzigen Routinen bieten, die bis jetzt auf meiner Sound Galaxy BX 2 (SB 2.0-kompatibel) jedes Sample richtig abgespielt haben, was nicht mal der vielgerhmte Inertia Player geschafft hat. Zudem kann man mit MP Pro sehr komfortabel MODs laden und Samples daraus abspeichern. Theorie: (Ja, das mu sein!) ######## Tracker arbeiten mit festen Notenblttern, 'Pattern' genannt. Whrend normale Notenbltter von links nach rechts gelesen werden, werden Patterns von oben nach unten gelesen. Die Breite eines Patterns ist von der Anzahl der Stimmen abhngig; bei MODEdit zum Beispiel sind sie vier Spalten Breit - fr jede Stimme eine. Jede Zeile enthlt 64 Zeilen, in die Standardmig vier Takte gesetzt werden, jede Zeile enthlt also eine 16tel Note. In einer Zeile einer Spalte steht jedoch nicht nur die Note selbst, sondern auch, von welchem Instrument sie gespielt werden soll und eventuell der Effekt. Praktisch sieht das so aus: C-3 01 000 Hier wird auf dem Instrument der Nummer 1 ein C der dritten Oktave ohne jeden Effekt gespielt. Wie oben zu sehen, sind die Effekte drei Zeichen lang. Davon ist das erste Zeichen der 'Name' des Effekts und der Rest das 'Argument', die Parameter sozusagen, blicherweise in hexadezimaler Form. Hier ganz kurz die zwei wichtigsten Effekte: Speed/Tempo - gibt die Geschwindigkeit an. Bei MODEdit heit dieser Effekt F. Das Argument kann auf zwei Weisen ausgewertet werden, je nachdem, wie gro es ist. Ist der Wert des Argumentes kleiner als $20, so gibt es die Lnge einer 16tel Note in 50stel Sekunden an, ist er grer als $1F, so gibt er die Geschwindigkeit in Beats per minute an. Mit letzterem habe ich noch nicht experimentiert, kann dazu also nichts sagen. Ich habe bis jetzt hauptschlich die Werte F04 und F06 verwendet. Sehr vielsagend, nicht wahr? Ich rechne mal vor: F06 bedeutet, eine 16tel Note ist 6/50 sec lang, eine 4tel also 12/25, ent- spricht 25/12 4tel pro sec oder 25*60/12 4tel pro min oder 125 4tel pro min, also 125 BPM oder 31 1/4Takte pro Minute. Normales Cha-Cha-Cha-Tempo. Volume - wirkt wie ein Lautstrkeregler. Bei MODEdit der Effekt C. Die maximale Lautstrke, mit der ein Sample gespielt werden kann, ist 64 oder $40. Dementsprechend werden hier nur Werte von $00 bis $40 akzeptiert. Will man nun beispielsweise eine Bassgitarre, die in der Instrumentenliste die Nummer 11 trgt, langsam einblenden, she die entsprechende Spalte im Pattern so aus: C-2 11 C00 Bassgitarre wird auf C2 angeschlagen, Lautstrke auf 0 000 00 C04 ein wenig lauter 000 00 C08 noch ein wenig lauter 000 00 C0C 000 00 C10 ... 000 00 C3C fast ganz laut 000 00 C40 ganz laut Wenn die Bassgitarre nur eine 25tel Sekunde lang erklingen soll, she das so aus: F#2 11 F02 Geschwindigkeit auf 2/50 sec pro 16tel Note Tonhhe: Fis 000 00 C00 Lautstrke auf 0 Fr den Anfang reichen diese beiden Effekte vollkomen aus. Praxis: ####### Als erstes bauen wir uns eine einfache Schlagzeugspur. Unsere Instrumentenliste soll so aussehen: 01 Bassdrum 02 Snaredrum 03 Closed Hihat 04 Bass Wir gehen davon aus, da die Bassdrum auf C3, die Snaredrum auf F2 und die Hihat auf G3 am besten klingt (ehrlich gesagt, habe ich noch nie eine Hihat gehrt, die so hoch gespielt werden will, aber dies ist ja nur ein Beispiel; die meisten werden auf C3 gespielt). Ein gewhnlicher Schlagzeugrhythmus weist auf '1' und '3', dem ersten und dritten Viertel eines Taktes eine Bassdrum-Note, auf '2' und '4', also dem zweiten und vierten Viertel eines Taktes eine Snare-Note auf, parallel dazu werden meist achtel auf der Hihat gespielt. (Die Umschreibung 'gewhnlicher Schlag- zeugrhythmus' erfat hier nicht nicht den Dancefloor/ Tekkno-Bereich, doch dazu lasse ich am Ende noch ein paar Takte fallen.) Jetzt fassen wir das ganze mal Noten. Um Hihat und Bass-/Snaredrum gleichzeitig erklingen lassen zu knnen, brauchen wir zwei Spuren. Links davon die durchlaufende Numerierung der 16tel Noten, rechts die Musiker-Zhlweise. 00 C-3 01 F06 G-3 03 000 Viertel '1' 01 000 00 000 000 00 000 02 000 00 000 G-3 03 000 03 000 00 000 000 00 000 04 F-2 02 000 G-3 03 000 Viertel '2' 05 000 00 000 000 00 000 06 000 00 000 G-3 03 000 07 000 00 000 000 00 000 08 C-3 01 000 G-3 03 000 Viertel '3' 09 000 00 000 000 00 000 10 000 00 000 G-3 03 000 11 000 00 000 000 00 000 12 F-2 02 000 G-3 03 000 Viertel '4' 13 000 00 000 000 00 000 14 000 00 000 G-3 03 000 15 000 00 000 000 00 000 Dies war der erste Takt, die drei dahinter knnen durchaus genauso aussehen (viele Tracker verfgen ber Blockoperationen, mit denen das in Sekundenschnelle erledigt ist). Hchstwahr- scheinlich mt ihr die Tonhhen anpassen. Hrt's euch ein paar mal an, verndert die Geschwindigkeit usw. Auf die Dauer ist dies ein sehr eintniger Rhythmus, den man nur verwenden kann, wenn auf den anderen Spuren sehr viele Noten gespielt werden, die das geschickt berdecken. Dann kann es vielleicht sogar ratsam sein, einen derartig regel- migen Rhythmus zu verwenden. Doch hier gilt, wie berall beim composen: Probieren geht ber studieren. Zunchst wollen wir denn Rhythmus nur geringfgig modifizieren, denn gleich soll eine einfache Bass-Spur hinzukommen. Dazu setzen wir folgendes in die 6., 22., 38. und 54. Zeile der ersten Spalte: C-3 01 000 Um's anschaulicher zu machen: Zwischen die Viertel '2' und '3' wird eine Achtelnote auf der Bassdrum gesetzt, wodurch die Viertelnote der Snaredrum davor automatisch zur Achtel wird (Ieh gitt, schon wieder Musiktheorie!). Genau das, was jetzt entstand, werden wir gleich weiter- verwenden, denn die Bass-Spur, die gleich kommt, ist genau darauf abgestimmt. Doch bis dahin haben wir noch jede Menge Zeit. Zunchst nutzen wir die Gelegenheit, um ein wenig Gefhl fr das Schlagzeug zu bekommen. Wir knnen den Rhythmus beliebig variieren, solange wir zwei Regeln beachten: 1. auf JEDER '1' und oft auf '3' eine Bassdrum, auf mglichst jeder '2' und '4' eine Snaredrum 2. es hrt sich gut an Die erste Regel ist ntig, um dem Rest des spteren Liedes ein Taktmuster zu bieten, an das der Rest aufgehngt wird. Miachtet man die erste Regel, driftet's in Richtung Experimentelle Musik ab, und daran sollte man sich erst versuchen, wenn man die ersten Schritte schon hinter sich (weit hinter sich) hat. Um mal zu zeigen, was mglich ist, hier ein Beispiel, das sich recht gut anhren mte: 00 C-3 01 F06 G-3 03 000 Viertel '1' 01 000 00 000 000 00 000 02 000 00 000 G-3 03 000 03 000 00 000 000 00 000 04 F-2 02 000 G-3 03 000 Viertel '2' 05 000 00 000 000 00 000 06 000 00 000 G-3 03 000 07 000 00 000 000 00 000 08 C-3 01 000 G-3 03 000 Viertel '3' 09 000 00 000 000 00 000 10 C-3 01 000 G-3 03 000 11 000 00 000 000 00 000 12 F-2 02 000 G-3 03 000 Viertel '4' 13 000 00 000 000 00 000 14 000 00 000 G-3 03 000 15 000 00 000 000 00 000 16 C-3 01 F06 G-3 03 000 Viertel '1' 17 000 00 000 000 00 000 18 000 00 000 G-3 03 000 19 000 00 000 000 00 000 20 F-2 02 000 G-3 03 000 Viertel '2' 21 000 00 000 000 00 000 22 C-3 01 000 G-3 03 000 23 000 00 000 000 00 000 24 000 00 000 G-3 03 000 Viertel '3' 25 000 00 000 000 00 000 26 C-3 01 000 G-3 03 000 27 000 00 000 000 00 000 28 F-2 02 000 G-3 03 000 Viertel '4' 29 000 00 000 000 00 000 30 F-2 02 000 G-3 03 000 31 F-2 02 000 000 00 000 Die 16tel Noten der Snaredrum (Na, schon entdeckt?) fhren auf ein Thema hin, das ich erst im nchsten Teil anschneiden werde: Breaks. Nun benutzen wir aber wieder die oben in zwei Schritten erstellten Schlagzeugnoten, um endlich die Bass-Spur da dranzuklemmen. Ber Bass kommt in die dritte Spalte. Folgende Noten kommen in folgende Zeilen: C-2 : 00, 06, 08, 16, 22, 24 B-1 : 28, 60 A-1 : 32, 38, 40, 48, 54, 56 Ob das nun klingt, hngt unter anderem vom Bass-Sample ab. Experimentiert einfach ein wenig mit den Tonhhen, stellt neue Tonkombinationen zusammen und hrt einmal genau hin, welche Tne hier gleichzeitig erklingen. Bevor ich eurer Kreativitt freien Lauf lasse, gebe ich euch noch ein auch recht hufiges Bass-Schema mit: In vielen Liedern hrt man, da auf dem Bass Achtelnoten gespielt werden, mehr oder weniger ein Takt lang in einer Tonhhe, um an- schlieend die Tonhhe zu wechseln - wieder fr einen Takt. Oder die Tonhhe wird mehrere Takte lang beibehalten. Oder es werden Viertel gespielt. Oder... Experimentiert ruhig auch in diese Richtung - schaden kann's nicht. Und irgendwann kommt dann der groe Moment, in dem ein Lead- Instrument, auf dem die Hauptmelodie gespielt wird, geladen wird. Lat aber am Anfang blo die Finger von den E-Gitarren! Ich spreche aus Erfahrung - ich habe diesen Fehler auch gemacht! So, nun gehe ich - weil ich's oben versprochen habe - noch auf den Dancefloor-Bereich ein. Hier ist die Sache mit dem Rhythmus einfach: Man braucht nur eine Bassdrum und eine leicht geffnete Hihat bzw. ein Becken fr's zischende Scheppern. Nun werden stumpf Achtel gespielt: Instrumenten-Liste: 01 Bassdrum 02 zsch Pattern: 00 C-3 01 000 01 000 00 000 02 G-3 02 000 03 000 00 000 04 C-3 01 000 05 000 00 000 06 G-3 02 000 07 000 00 000 Und das eben acht mal hintereinander. (Einen bissigen Kommentar mu ich mir jetzt echt verkneifen!) Alternativ dazu kann man auf den Vierteln '2' und '4' eine Snare sprechen lassen, entweder parallel zur Bassdrum oder man ersetzt diese durch eine Snare, die viel Bass hat und so neben dem snaretypischen Sound noch Rumms wie eine Bassdrum hat. Letzteres kann man sich auch mit einem Sample-Bearbeitungsproggi selbst erstellen, vorausge- setzt, Bassdrum und Snare werden auch einzeln in derselben Tonhhe benutzt. Zum Abschlu noch zwei Tips: 1. Wenn ihr Samples aus anderen MODs rippt, merkt euch die Tonhhen! 2. Spielt das, was ich oben als ersten Rhythmus eingefhrt habe, mal auf einem echten Schlagzeug, eventuell auch den Rest... Viel Spa noch, und verget nicht: Das Motto 'Flachkpper macht Laune' lt sich auch auf's Composen bertragen! Cheers, l'Original du PTPT PS. #Papst! Na gut, ich geb's ja zu, ich habe ein wenig gelogen... wurde doch ein bichen lnger... ...kannst Du mir noch einmal verzeihen? **> Jajaja, soetwas mgen wir. Im Fernsehn wrde jetzt von berzogener Sendezeit die Rede sein... - Aber Ernst beiseite, eine sehr gute Idee, den MOD-Kurs zu fahren. Was die Lnge der einzelnen Teile betrifft, so kannst Du das machen wie Du willst. Platz findet sich im Platinum immer, ebenso ein interessiertes Publikum. Weiter so! Fr die Leser: Wer diesen Kurs schwarz auf wei haben mchte, der kann von der Druckoption Gebrauch machen. Man drcke die Taste PRINT in der unteren rechten Ecke des Bildschirmes oder benutze die Tastenkombination STRG + P. #Papst THE ART OF CODING [ Master YODA ] J'Role! Thanx fr das Listing, meine (hchsteigene, uneffektive,...) Version gibt's im nexten PLATINUM (hoffentlich) s.o. Zu den PortW-Befehlen: Ich hab' leider keine Ahnung von Pascal, nehme aber 'mal an, da PortW [$03C4] := $0402 in ASM so aussieht: MOV DX,03C4h MOV AX,0204h OUT DX,AX Das High- und LowByte in AX habe ich vertauscht, da es kein siebtes Register, das mit dem zweiten PortW-Befehl ange- sprochen wrde, fr den Sequenzer-Controller gibt (nach meinen Infos). Das Port 03C4h ist das Indexregister des Sequenzer-Cotrollers (und Port 03C5 das Datenregister). Er verwaltet u.a. die vier Bit-Planes und den Speicherzugriff der Videokarte. Das zweite Register des Controllers verwaltet den Zugriff auf die einzelnen Bit-Planes. PortW [$03C4] := $0402 gibt den Zugriff auf die dritte (bzw. die zweite, wenn man mit der nullten beginnt) Bit-Plane frei. Das vierte Register entscheidet ber die RAM-Zugriffsmodi. PortW [$03C4] := $0704 schaltet den lineare Zugriff auf die Bit-Plane und den Chain4-Modus ein. Port 03CEh ist das Indexregister des Grafik-Controllers (03CF das Datenregister). Dieser Controller entscheidet u.a. ber die Art des Zugriffs auf den Video-RAM. PortW [$03CE] := $0204 bedeutet, da im Read-Modus 0 auf die dritte (zweite) Bit-Plane zugegriffen wird. (Das ist im Chain4-Modus aber ohne Bedeutung, das Proggi drfte also auch ohne diesen Befehl laufen, probier's 'mal aus.) PortW [$03CE] := $0005 schaltet den Write-Modus 0 und den Read-Modus 0 ein. Mit PortW [$03CE] := $0006 wird der Video-RAM ab A000h benutzt. Die folgenden PortW-Befehle machen das alles wieder ungeschehen... Jetzt hab' ich mich gefragt, was das Ganze nun eigentlich soll, aus dem Pascal-Code kann ich leider nicht viel ent- nehmen. Es sieht aber aus, als ob irgendwelche Daten in die dritte Bit-Plane geschoben werden, soll wohl ein Puffer sein. Entweder wird dort, der in eine Bitmap (Grafik) um gerechnete Font (der wohl aus dem ROM gezogen wird), gespeichert, oder die schon umgerechnete (Font in Bitmap) Message?!?! Warum wird nun die Bit-Plane als Puffer benutzt, und nicht der normale RAM? Tja, entweder wollte der Coder konv. RAM sparen, oder das Kopieren von einer Bit-Plane in eine Bit-Plane geht schneller (direktes Ein- und Auslesen ber die Latch-Register), als das Kopieren vom RAM in die Bit- Planes, keine Ahnung. Wie gesagt, ich hab' mich bis jetzt wenig mit der Grafik- programmierung beschftigt... alles nur Vermutungen! Vielleicht wird ja doch irgendetwas klarer. So long, der unwissende Master YODA Part VII des ASM-Kurses [ Master YODA ] Der Part VII des ASM-Kurses erscheint erst im nexten PLATINUM, da sich mein Monitor in die ewigen Bitgrnde verabschiedet hat, ein neuer macht sich erst seit drei Tagen auf meinen Schreibtisch breit. Jetzt mu ich erst 'mal an meine Contax denken, SORRY. Nix fr ungut, Master YODA. PS: Macht 'mal ein paar Vorschlge fr neue Proggis!