Fraktale Musik 2003 - Quellcode |
Triggerprogramm0 'Eingabe und Playprogramm fr 8 Triggerevents fr Ataris 1 'TRIGGER.BAS 2 3 CLS 4 PRINT @(1,2);"Programm zum Ausgeben von bis zu 8 Triggern" 5 ChL=8 6 INPUT @(5,2);"Tempo-Eingabe in MM ";MmL 7 ZeitspanneL=3000/MmL 8 DIM EventaL(8,16): DIM EventbL(8,16): DIM EventL(8,16): DIM EventdL(5,16) 9 10 FOR ZL=1 TO 8 11 FOR SL=1 TO 16 12 READ EventaL(ZL,SL) 13 NEXT 14 NEXT 15 FOR ZL=1 TO 8 16 FOR SL=1 TO 16 17 READ EventbL(ZL,SL) 18 NEXT 19 NEXT 20 FOR ZL=1 TO 5 21 FOR SL=1 TO 16 22 READ EventdL(ZL,SL) 23 NEXT 24 NEXT 25 26 27 INPUT @(7,2);"A:Standard - B:Bifurkation - D: Drum - RETURN:sonst ";E$ 28 IF E$="A" OR E$="a" THEN Standard: GOTO Weiter 29 IF E$="B" OR E$="b" THEN Bifurkation: GOTO Weiter 30 IF E$="D" OR E$="d" THEN Drums: GOTO Weiter 31 INPUT @(8,2);"Wieviele Kanle sollen verwendet werden? ";ChL 32 CLS 33 PRINT @(1,2);"Eingabe von Event ja/nein in 16 Schritten fr";ChL;" Kanle" 34 35 FOR SpalteL=1 TO 16 36 PRINT @(4,3*SpalteL+3);SpalteL 37 NEXT 38 FOR ZeileL=1 TO ChL 39 PRINT @(4+2*ZeileL,3);ZeileL 40 NEXT 41 42 DIM EventL(64,64) 43 FOR ZeileL=1 TO ChL 44 FOR SpalteL=1 TO 16 45 INPUT @(4+2*ZeileL,3*SpalteL+4);WertL 46 IF WertL<>0 THEN 47 PRINT @(4+2*ZeileL,3*SpalteL+3);" + " 48 EventL(ZeileL,SpalteL)=1 49 ELSE 50 PRINT @(4+2*ZeileL,3*SpalteL+3);" " 51 EventL(ZeileL,SpalteL)=0 52 53 ENDIF 54 NEXT 55 NEXT 56 57 58-Weiter 59 60 'Warteschleife 61 PRINT @(6+2*ChL,2),"START PLAY durch irgendeine Taste!" 62 REPEAT 63 UNTIL LEN( INKEY$ ) 64 PRINT @(6+2*ChL,2),"STOP durch Mausklick! " 65 66 67 'Play 68 PRINT @(0,2);"Erzeugen von Trigger-Events: 16 Steps auf";ChL;" Kanlen" 69 SpalteL=1 70 StartL= TIMER 71 REPEAT 72 IF TIMER -StartL>=ZeitspanneL 73 THEN 74 Play_All 75 IF SpalteL<16 THEN SpalteL=SpalteL+1 ELSE SpalteL=1 76 StartL= TIMER 77 ENDIF 78 UNTIL MOUSEBUT 79 END 80 81 82 DEF PROC Play_All 83 FOR ZeileL=1 TO 8 84 PRINT @(4+2*ChL,3*SpalteL);" " 85 PRINT @(4+2*ChL,3*SpalteL+3);" + " 86 IF EventL(ZeileL,SpalteL)=1 THEN BIOS (,3,3,ZeileL) 87 NEXT 88 IF SpalteL=16 THEN PRINT @(4+2*ChL,3*SpalteL+3);" " 89 RETURN 90 91 92 DEF PROC Standard 93 CLS 94 FOR SpalteL=1 TO 16 95 PRINT @(2,3*SpalteL+3);SpalteL 96 NEXT 97 FOR ZeileL=1 TO ChL 98 PRINT @(2+2*ZeileL,3);ZeileL 99 NEXT 100 101 FOR ZeileL=1 TO ChL 102 FOR SpalteL=1 TO 16 103 IF EventaL(ZeileL,SpalteL)=1 104 THEN 105 PRINT @(2+2*ZeileL,3*SpalteL+3);" + " 106 EventL(ZeileL,SpalteL)=EventaL(ZeileL,SpalteL) 107 ELSE 108 PRINT @(2+2*ZeileL,3*SpalteL+3);" " 109 EventL(ZeileL,SpalteL)=EventaL(ZeileL,SpalteL) 110 ENDIF 111 NEXT 112 NEXT 113 RETURN 114 115 116 DEF PROC Bifurkation 117 CLS 118 FOR SpalteL=1 TO 16 119 PRINT @(2,3*SpalteL+3);SpalteL 120 NEXT 121 FOR ZeileL=1 TO ChL 122 PRINT @(2+2*ZeileL,3);ZeileL 123 NEXT 124 125 FOR ZeileL=1 TO ChL 126 FOR SpalteL=1 TO 16 127 IF EventbL(ZeileL,SpalteL)=1 128 THEN 129 PRINT @(2+2*ZeileL,3*SpalteL+3);" + " 130 EventL(ZeileL,SpalteL)=EventbL(ZeileL,SpalteL) 131 ELSE 132 PRINT @(2+2*ZeileL,3*SpalteL+3);" " 133 EventL(ZeileL,SpalteL)=EventbL(ZeileL,SpalteL) 134 ENDIF 135 NEXT 136 NEXT 137 138 RETURN 139 140 141 142 DEF PROC Drums 143 CLS 144 FOR SpalteL=1 TO 16 145 PRINT @(2,3*SpalteL+3);SpalteL 146 NEXT 147 FOR ZeileL=1 TO 5 148 PRINT @(2+2*ZeileL,3);ZeileL 149 NEXT 150 151 FOR ZeileL=1 TO 5 152 FOR SpalteL=1 TO 16 153 IF EventdL(ZeileL,SpalteL)=1 154 THEN 155 PRINT @(2+2*ZeileL,3*SpalteL+3);" + " 156 EventL(ZeileL,SpalteL)=EventdL(ZeileL,SpalteL) 157 ELSE 158 PRINT @(2+2*ZeileL,3*SpalteL+3);" " 159 EventL(ZeileL,SpalteL)=EventdL(ZeileL,SpalteL) 160 ENDIF 161 NEXT 162 NEXT 163 164 RETURN 165 166 167 168 169 DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 170 DATA 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1 171 DATA 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0 172 DATA 0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0 173 DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 174 DATA 1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,1 175 DATA 1,0,0,0,1,0,0,0,1,0,0,0,1,0,1,1 176 DATA 0,0,1,0,1,0,1,0,0,1,0,0,0,1,0,1 178 DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 179 DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 180 DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0 181 DATA 1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1 182 DATA 1,1,1,1,1,1,1,1,0,1,1,0,1,0,1,0 183 DATA 1,1,1,1,1,1,0,0,1,0,1,0,1,0,0,1 184 DATA 1,0,0,1,1,0,1,0,1,0,0,0,1,0,1,1 185 DATA 1,0,1,0,0,0,1,0,0,1,0,0,0,1,0,1 187 DATA 1,0,0,0,1,1,0,0,1,0,0,0,1,1,0,1 188 DATA 0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,0 189 DATA 1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,1 190 DATA 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1 191 DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |
Orchestermusik |
Gebeugte Obert�ne und RND(1)zu
RND(114)0 'Tastendruck mit Zeichnen: Bend und Tonhhe (SCANZUF.BAS) 1 2 3 'Bildschirmanzeigen 4 CLS 5 PRINT @(2,2);"Zweiteiliges Zufallsprogramm mit Tastensteuerung" 6 PRINT @(3,2);"Teil 1: Pitchbendsteuerung eines Liegeklanges" 7 PRINT @(4,2);"Teil 2: zufllige Halbtonstufen eines Xylophons" 8 PRINT @(5,2);"Von Teil 1 zu 2 durch Maustastendruck" 9 PRINT @(6,2);"ENDE mit Space-Taste!" 10 PRINT @(8,2);"Teil 1: Eingaben:" 11 INPUT @(9,2);"Tastennummer des Liegeklanges = ";GrundtonL 12 INPUT @(10,2);"Grundtonverschiebung in Pitchbends = ";VerschiebL 13 PbL=63+VerschiebL 14 CLS 15 16 'Teil 1: Scan steuert Bend eines Liegeklanges 17 'Ausgangswerte 18 BIOS (,3,3,192): BIOS (,3,3,80) 19 ScanL=1:SpalteL=2: DIM Kreis_YL(640) 20 BIOS (,3,3,224): BIOS (,3,3,127): BIOS (,3,3,PbL) 21 BIOS (,3,3,144): BIOS (,3,3,GrundtonL): BIOS (,3,3,100) 22 23 'Spielschleife 24 PRINT @(1,2);"Endes von Teil 1 mit Mausklick." 25 PRINT @(2,2);"Tastenr.";GrundtonL;" Beugung um 1/32 Halbtne = ";ScanL 26 REPEAT 27 'Abfrage der Tastatur 28 A$= INKEY$ 29 IF A$<>"" 30 THEN AL= CVIL(A$) 31 ScanL=AL SHR 16 32 PRINT @(2,41);" " 33 PRINT @(2,41);ScanL 34 ENDIF 35 'Algorithmus (hier Zufallsoperation) 36 'Vorz=2* RND(2)-1 37 BendL= RND(ScanL) 38 Zeichnen_Bend 39 BIOS (,3,3,224): BIOS (,3,3,127): BIOS (,3,3,BendL+PbL) 40 WAIT .1 41 UNTIL MOUSEBUT 42 BIOS (,3,3,224): BIOS (,3,3,127): BIOS (,3,3,BendL+PbL) 43 BIOS (,3,3,144): BIOS (,3,3,GrundtonL): BIOS (,3,3,0) 44 CLS 45 46 47 'Teil 2 Zufallshalbtonfolgen au Xylophom 48 49 'Ausgangswerte 50 BIOS (,3,3,224): BIOS (,3,3,127): BIOS (,3,3,63) 51 BIOS (,3,3,192): BIOS (,3,3,12) 52 ScanL=1:SpalteL=2 53 54 'Bildschirmanzeigen 55 PRINT @(1,2);"Zufallsambitus durch Tasten gesteuert. Ende mit SPACE" 56 PRINT @(2,2);"Zufallsumfang = ";ScanL 57 58 REPEAT 59 'Abfrage der Tastatur 60 A$= INKEY$ 61 IF A$<>"" 62 THEN AL= CVIL(A$) 63 ScanL=AL SHR 16 64 PRINT @(2,18);" " 65 PRINT @(2,18);ScanL 66 ENDIF 67 68 'Algorithmus (hier Zufallsoperation) 69 VorzL=2* RND(2)-1 70 TasteL=60+VorzL* RND(ScanL/2) 71 IF TasteL<128 AND TasteL>0 72 THEN 73 Zeichnen 74 BIOS (,3,3,144): BIOS (,3,3,TasteL): BIOS (,3,3,127) 75 WAIT .04 76 BIOS (,3,3,144): BIOS (,3,3,TasteL): BIOS (,3,3,0) 77 ENDIF 78 UNTIL ScanL=57 79 'CLS 80 PRINT @(20,2);"(c) fraktale musik ws 02/03 stroh" 81 END 82 83 84 85 DEF PROC Zeichnen_Bend 86 FILL COLOR =0 87 PCIRCLE 4*SpalteL,Kreis_YL(4*SpalteL),2 88 FILL COLOR =1 89 CIRCLE 4*SpalteL,360-3*BendL,2 90 Kreis_YL(4*SpalteL)=360-3*BendL 91 IF SpalteL<158 THEN SpalteL=SpalteL+1 92 IF SpalteL=158 THEN SpalteL=2 93 RETURN 94 95 DEF PROC Zeichnen 96 FILL COLOR =0 97 PCIRCLE 4*SpalteL,Kreis_YL(4*SpalteL),2 98 FILL COLOR =1 99 CIRCLE 4*SpalteL,360-3*TasteL,2 100 Kreis_YL(4*SpalteL)=360-3*TasteL 101 IF SpalteL<158 THEN SpalteL=SpalteL+1 102 IF SpalteL=158 THEN SpalteL=2 103 RETURN |
Kammermusik |
Choral0 'Zufallschoral mit Fermaten und Durchgangsnoten 1 2 StimmenL=4 3 FOR IL=1 TO StimmenL 4 BIOS (,3,3,191+IL): BIOS (,3,3,20) 5 NEXT 6 PRINT @(2,2);"Zufalschoral mit Fermaten und Durchgangsnoten" 7 PRINT @(3,2);"STIMMEN = ";StimmenL 8 KanalL=1 9 Clear_Buffer 10 REPEAT 11 BIOS (ML,1,3) 12 IF ML=-1 THEN BIOS (XL,2,3) 13 UNTIL XL=-251 14 REPEAT 15 BIOS (ML,1,3) 16 IF ML=-1 17 THEN 18 BIOS (XL,2,3) 19 IF XL=KanalL-256 THEN Algorithmus 20 ENDIF 21 UNTIL LEN( INKEY$ ) 22 23 FOR IL=1 TO StimmenL 24 BIOS (,3,3,143+IL): BIOS (,3,3,Taste_AltL(IL)): BIOS (,3,3,0) 25 NEXT 26 CLS 27 PRINT @(3,3);" Ende! " 28 PRINT @(4,3);"(c) fraktale musik ws 02/03 Andreas" 29 30 END 31 32 DEF PROC Algorithmus 33 ZaehlerL=ZaehlerL+1 34 IF ZaehlerL>16 THEN ZaehlerL=1 35 36 'Fermaten 37 FermateL=0 38 IF ZaehlerL=9 AND RND(4)=1 THEN 39 FermateL=1 40 FOR IL=1 TO StimmenL 41 BIOS (,3,3,143+IL): BIOS (,3,3,Taste_AltL(IL)): BIOS (,3,3,0) 42 NEXT 43 ENDIF 44 45 'Akkordsulen 46 IF (ZaehlerL=1 OR ZaehlerL=9) AND FermateL=0 THEN 47 FOR IL=1 TO StimmenL 48 TasteL(IL)=34+8*IL+ RND(12) 49 VelL(IL)=60+ RND(50) 50 NEXT 51 FOR IL=1 TO StimmenL 52 BIOS (,3,3,143+IL): BIOS (,3,3,Taste_AltL(IL)): BIOS (,3,3,0) 53 BIOS (,3,3,143+IL): BIOS (,3,3,TasteL(IL)): BIOS (,3,3,VelL(IL)) 54 Taste_AltL(IL)=TasteL(IL) 55 NEXT 56 ENDIF 57 58 'Durchgangsnoten 59 IF (ZaehlerL=5 OR ZaehlerL=13) AND RND(2)=1 THEN 60 IF StimmenL>1 THEN 61 IL= RND(StimmenL)+1 62 ELSE IL=1 63 ENDIF 64 TasteL(IL)=34+8*IL+ RND(12) 65 VelL(IL)=60+ RND(50) 66 BIOS (,3,3,143+IL): BIOS (,3,3,Taste_AltL(IL)): BIOS (,3,3,0) 67 BIOS (,3,3,143+IL): BIOS (,3,3,TasteL(IL)): BIOS (,3,3,VelL(IL)) 68 Taste_AltL(IL)=TasteL(IL) 69 ENDIF 70 RETURN 71 72 DEF PROC Clear_Buffer 73 REPEAT 74 BIOS (ML,1,3) 75 IF ML=-1 THEN BIOS (XL,2,3) 76 UNTIL ML=0 77 RETURN 0 'Zufallsfeld dehnend, getriggert: Tastendruck (DRUMS.BAS) 1 PRINT @(5,2);"Percussion getriggert" 2 PRINT @(6,2);"mute,grundgroove, grundgroove+congasolo,congasolo,schlagzeugsolo" 3 INPUT @(8,2);"Midi-Empfangskanal = ";KanalL 4 BIOS (,3,3,192): BIOS (,3,3,36) 5 ScanL=75 6 DotL=1 7 Laut1L=60 8 StillL=0 9 Clear_Buffer 10 REPEAT 11 BIOS (ML,1,3) 12 IF ML=-1 THEN BIOS (XL,2,3) 13 UNTIL XL=-251 14 15 REPEAT 16 A$= INKEY$ 17 IF A$<>"" THEN AL= CVIL(A$) SHR 16 18 IF AL=1 THEN StillL=-1 19 IF AL=2 THEN StillL=0 20 IF AL=3 THEN StillL=1 21 IF AL=4 THEN StillL=2 22 IF AL=5 THEN StillL=3 23 IF AL>=6 THEN StillL=4 24 'IF A=7 THEN CLS :Algorithmus2 25 'Midieingang Abfrage 26 BIOS (ML,1,3) 27 IF ML=-1 28 THEN 29 BIOS (XL,2,3) 30 IF (XL=KanalL-256) THEN Algorithmus1 31 ENDIF 32 UNTIL AL=57 33 34 BIOS (,3,3,143+KanalL): BIOS (,3,3,Taste_AltL): BIOS (,3,3,0) 35 CLS 36 PRINT @(3,3);" Ende! " 37 PRINT @(4,3);"(c) fraktale musik ws 02/03 stefan groe" 38 END 39 40 41 42 43 44 DEF PROC Algorithmus1 45 'Errechnen und Play 46 IF StillL=1 OR StillL=2 THEN Solo1 47 IF StillL=0 OR StillL=1 48 THEN 49 IF DotL=1 THEN BIOS (,3,3,153): BIOS (,3,3,36): BIOS (,3,3,Laut1L) 50 IF DotL=3 THEN BIOS (,3,3,153): BIOS (,3,3,33): BIOS (,3,3,Laut1L) 51 IF DotL=7 THEN BIOS (,3,3,153): BIOS (,3,3,36): BIOS (,3,3,Laut1L) 52 IF DotL=9 THEN BIOS (,3,3,153): BIOS (,3,3,35): BIOS (,3,3,Laut1L) 53 IF DotL=13 THEN BIOS (,3,3,153): BIOS (,3,3,40): BIOS (,3,3,Laut1L) 54 ENDIF 55 IF StillL=3 THEN 56 IF DotL=1 THEN BIOS (,3,3,153): BIOS (,3,3,36): BIOS (,3,3,Laut1L) 57 IF DotL=5 THEN BIOS (,3,3,153): BIOS (,3,3,36): BIOS (,3,3,Laut1L) 58 IF DotL=9 THEN BIOS (,3,3,153): BIOS (,3,3,36): BIOS (,3,3,Laut1L) 59 IF DotL=13 THEN BIOS (,3,3,153): BIOS (,3,3,36): BIOS (,3,3,Laut1L) 60 ENDIF 61 DotL=DotL+1 62 IF DotL=17 THEN DotL=1 63 IF StillL=4 THEN BIOS (,3,3,153): BIOS (,3,3, RND(30)+20): BIOS (,3,3, RND(90)+30) 64 65 66 RETURN 67 68 69 70 DEF PROC Solo1 71 IF RND(3)=0 THEN LautL=127 ELSE LautL=50 72 KlangL= RND(2)+62 73 BIOS (,3,3,153): BIOS (,3,3,KlangL): BIOS (,3,3,LautL) 74 RETURN 75 76 77 DEF PROC Clear_Buffer 78 REPEAT 79 BIOS (ML,1,3) 80 IF ML=-1 THEN BIOS (XL,2,3) 81 UNTIL ML=0 82 RETURN 83 0 'Bassfigur auf Kanal 1 getriggert (Element2.bas) 1 2 Clear_Buffer 3 BIOS (,3,3,192): BIOS (,3,3,34) 4 5 REPEAT 6 BIOS (ML,1,3) 7 IF ML=-1 8 THEN 9 BIOS (XL,2,3) 10 KanalL=XL+256 11 IF KanalL=1 THEN Algorithmus 12 ENDIF 13 UNTIL LEN( INKEY$ ) 14 END 15 16 DEF PROC Algorithmus 17 XL= RND(12):TasteL=24+XL 18 BIOS (,3,3,144): BIOS (,3,3,Taste_AltL): BIOS (,3,3,0) 19 BIOS (,3,3,144): BIOS (,3,3,TasteL): BIOS (,3,3,90) 20 Taste_AltL=TasteL 21 RETURN 22 23 24 DEF PROC Clear_Buffer 25 REPEAT 26 BIOS (ML,1,3) 27 IF ML=-1 THEN BIOS (XL,2,3) 28 UNTIL ML=0 29 RETURN 30 |
Einsames Motiv zwischen Dur
und Moll 0 'Einsames Motiv (MOTIV2.BAS) 0 'Dreiklang nach Zufall 0 'Ganzton-Bass auf Kanal 1 getriggert
(Element5.bas) |
Solomusik |
Das etwas freundlichere Livespiel
(Mischmasch-Spiel)0 'Das Live Spiel (MI_MONIT.BAS) 1 2 CLS 3 PRINT CHR$(27)+"f" 4 DIM PL(64,40) 5 DIM P_NeuL(64,40) 6 7 BIOS (,3,3,192): BIOS (,3,3,18) 8 9-Anfang 10 Bildbelegung 11 Einfuegen 12 13 AnzahlL=1 14 'Start= TIMER 15 REPEAT 16 FOR YL=10 TO 25 17 FOR XL=20 TO 35 18 Umgebung 19 IF SummeL=1 20 THEN P_NeuL(XL,YL)=1:SumL=SumL+1 21 ELSE 22 IF SummeL=3 AND PL(XL,YL)=1 THEN P_NeuL(XL,YL)=1:SumL=SumL+1 ELSE P_NeuL(XL,YL)=0 23 ENDIF 24 NEXT 25 NEXT 26 IF AnzahlL=1 THEN Toene 27 Neu_Alt 28 AnzahlL=AnzahlL+1 29 Toene 30 SumL=0 31 AnzahlL=AnzahlL+1 32 UNTIL MOUSEBUT =2 33 CLS 34 FOR YL=10 TO 25 35 IF PL(XL-1,YL) THEN 36 BIOS (,3,3,144): BIOS (,3,3,157-YL*5): BIOS (,3,3,0) 37 ENDIF 38 NEXT YL 39 PRINT @(1,1);" Li Maus = Wiederholen" 40 PRINT @(2,1);"Li+Re Maus = Ende " 41 REPEAT : UNTIL MOUSEBUT =3 OR MOUSEBUT =1 42 IF MOUSEBUT =1 THEN CLS : GOTO Anfang ELSE END 43 END 44 45 DEF PROC Setzen 46 FILL COLOR =1 47 IF XL<64 AND YL<40 THEN PBOX XL*12-176,YL*12-120,11,11 48 IF XL=64 AND YL<40 THEN PBOX 0,YL*12-120,11,11 49 IF XL<64 AND YL=40 THEN PBOX XL*12-176,0,11,11 50 IF XL=64 AND YL=40 THEN PBOX 0,0,11,11 51 RETURN 52 53 DEF PROC Toene 54 FOR XL=20 TO 36 55 FOR YL=10 TO 25 56 IF PL(XL,YL) THEN 57 BIOS (,3,3,144): BIOS (,3,3,157-YL*5): BIOS (,3,3,90) 58 ENDIF 59 IF PL(XL-1,YL) THEN 60 BIOS (,3,3,144): BIOS (,3,3,157-YL*5): BIOS (,3,3,0) 61 ENDIF 62 NEXT YL 63 WAIT .1 64 NEXT XL 65 RETURN 66 67 DEF PROC Leeren 68 FILL COLOR =0 69 IF XL<64 AND YL<40 THEN PBOX XL*12-176,YL*12-120,11,11 70 IF XL=64 AND YL<40 THEN PBOX 0,YL*12-120,11,11 71 IF XL<64 AND YL=40 THEN PBOX XL*12-176,0,11,11 72 IF XL=64 AND YL=40 THEN PBOX 0,0,11,11 73 RETURN 74 75 DEF PROC Umgebung 76 SummeL=PL(XL-1,YL)+PL(XL,YL-1)+PL(XL,YL+1)+PL(XL+1,YL) 77 A$= INKEY$ 78 IF A$<>"" THEN AL= CVIL(A$):ScanL=AL SHR 16 79 IF ScanL=77 THEN PrgL=PrgL+1: TEXT 5,20, STR$(PrgL): BIOS (,3,3,193): BIOS (,3,3,PrgL):ScanL=0 80 IF ScanL=75 THEN PrgL=PrgL-1: TEXT 5,20, STR$(PrgL)+" ": BIOS (,3,3,193): BIOS (,3,3,PrgL):ScanL=0 81 RETURN 82 83 DEF PROC Neu_Alt 84 FOR XL=20 TO 40 85 FOR YL=10 TO 25 86 IF P_NeuL(XL,YL)=1 AND PL(XL,YL)=0 THEN Setzen 87 IF P_NeuL(XL,YL)=0 AND PL(XL,YL)=1 THEN Leeren 88 PL(XL,YL)=P_NeuL(XL,YL) 89 NEXT 90 NEXT 91 RETURN 92 93 DEF PROC Bildbelegung 94 FOR XL=20 TO 35 95 FOR YL=10 TO 25 96 IF XL=YL+10 THEN PL(XL,YL)=1:Setzen ELSE PL(XL,YL)=0 97 NEXT 98 NEXT 99 RETURN 100 101 DEF PROC Einfuegen 102 MOUSEON 103 REPEAT 104 XL=( MOUSEX +176)/12 105 YL=( MOUSEY +120)/12 106 IF XL>19 AND XL<36 AND YL>9 AND YL<26 107 THEN 108 IF MOUSEBUT =1 109 THEN 110 MOUSEOFF 111 PL(XL,YL)=1 112 P_NeuL(XL,YL)=1 113 Setzen 114 MOUSEON 115 ENDIF 116 IF MOUSEBUT =2 117 THEN 118 MOUSEOFF 119 PL(XL,YL)=0 120 P_NeuL(XL,YL)=0 121 Leeren 122 MOUSEON 123 ENDIF 124 ENDIF 125 UNTIL LEN( INKEY$ ) 126 MOUSEOFF 127 RETURN das unfreundliche Original-Lifespiel
0 'Das klassische Life Spiel (Life.BAS) 1 2 CLS 3 PRINT CHR$(27)+"f" 4 DIM PL(64,40) 5 DIM P_NeuL(64,40) 6 BIOS (,3,3,192): BIOS (,3,3,27) 7-Anfang 8 Einfuegen 9 10 AnzahlL=1 11 REPEAT 12 FOR YL=10 TO 25 13 FOR XL=20 TO 35 14 SummeL=PL(XL-1,YL-1)+PL(XL,YL-1)+PL(XL+1,YL-1)+PL(XL-1,YL)+PL(XL+1,YL)+PL(XL-1,YL+1)+PL(XL,YL+1)+PL(XL+1,YL+1) 15 IF SummeL=3 THEN P_NeuL(XL,YL)=1 16 IF SummeL=2 AND PL(XL,YL)=1 THEN P_NeuL(XL,YL)=1 17 IF SummeL<2 THEN P_NeuL(XL,YL)=0 18 IF SummeL>3 THEN P_NeuL(XL,YL)=0 19 NEXT 20 NEXT 21 BIOS (,3,3,144): BIOS (,3,3,Ton_AltL): BIOS (,3,3,0) 22 Neu_Alt 23 TEXT 10,180, STR$(AnzahlL) 24 AnzahlL=AnzahlL+1 25 UNTIL MOUSEBUT =2 26 CLS 27 PRINT @(1,1);"Ende li+re Maus - zum Anfang mit li Maus" 28 REPEAT : UNTIL MOUSEBUT =1 OR MOUSEBUT =3 29 IF MOUSEBUT =1 THEN CLS :Nullsetzen: GOTO Anfang 30 IF MOUSEBUT =3 THEN BIOS (,3,3,144): BIOS (,3,3,Ton_AltL): BIOS (,3,3,0): END 31 END 32 33 34 DEF PROC Setzen 35 FILL COLOR =1 36 IF XL<64 AND YL<40 THEN PBOX XL*12-176,YL*12-120,11,11:Toene 37 IF XL=64 AND YL<40 THEN PBOX 0,YL*12-120,11,11:Toene 38 IF XL<64 AND YL=40 THEN PBOX XL*12-176,0,11,11:Toene 39 IF XL=64 AND YL=40 THEN PBOX 0,0,11,11:Toene 40 RETURN 41 42 DEF PROC Toene 43 BIOS (,3,3,144): BIOS (,3,3,Ton_AltL): BIOS (,3,3,0) 44 BIOS (,3,3,144): BIOS (,3,3,157-YL*4): BIOS (,3,3,90) 45 WAIT .1 46 Ton_AltL=157-YL*4 47 RETURN 48 49 DEF PROC Leeren 50 'BIOS (,3,3,144): BIOS (,3,3,Ton_Alt): BIOS (,3,3,0 51 FILL COLOR =0 52 IF XL<64 AND YL<40 THEN PBOX XL*12-176,YL*12-120,11,11 53 IF XL=64 AND YL<40 THEN PBOX 0,YL*12-120,11,11 54 IF XL<64 AND YL=40 THEN PBOX XL*12-176,0,11,11 55 IF XL=64 AND YL=40 THEN PBOX 0,0,11,11 56 RETURN 57 58 59 DEF PROC Neu_Alt 60 FOR XL=20 TO 40 61 FOR YL=10 TO 25 62 IF P_NeuL(XL,YL)=1 THEN Setzen 63 IF P_NeuL(XL,YL)=0 AND PL(XL,YL)=1 THEN Leeren 64 PL(XL,YL)=P_NeuL(XL,YL) 65 NEXT 66 NEXT 67 RETURN 68 69 70 DEF PROC Nullsetzen 71 FOR XL=20 TO 35 72 FOR YL=10 TO 25 73 PL(XL,YL)=0 74 NEXT 75 NEXT 76 RETURN 77 78 79 DEF PROC Einfuegen 80 MOUSEON 81 REPEAT 82 XL=( MOUSEX +176)/12 83 YL=( MOUSEY +120)/12 84 IF XL>19 AND XL<36 AND YL>9 AND YL<26 85 THEN 86 IF MOUSEBUT =1 87 THEN 88 MOUSEOFF 89 PL(XL,YL)=1 90 P_NeuL(XL,YL)=1 91 Setzen 92 MOUSEON 93 ENDIF 94 IF MOUSEBUT =2 95 THEN 96 MOUSEOFF 97 PL(XL,YL)=0 98 P_NeuL(XL,YL)=0 99 Leeren 100 MOUSEON 101 ENDIF 102 ENDIF 103 UNTIL LEN( INKEY$ ) 104 MOUSEOFF 105 RETURN |
Entwickelnde Variation(en) 0 'Varifrac |
Fractal Workstation 94 0 'Hpfer Demoprogramm (HPFER.BAS) |
Orchestermusik |
Vorspiel: algorithmischer Blues 0 'Blues mit rekursiver Formel (ALG_BLUE.BAS)
0 'Zufallsfeld dehnend, getriggert: Tastendruck (trigbifo.BAS) 1 PRINT @(2,2);"Bifurkation getriggert Formel: X=X^2-C" 2 PRINT @(3,2);"Anfangswerte: X=0, C=1.0" 3 PRINT @(4,2);"Ende mit Leertaste" 4 INPUT @(6,2);"Midi-Empfangskanal = ";KanalL 5 INPUT @(7,2);"PROGRAMNUMMER = ";PrgL 6 CLS 7 PRINT @(2,2);"Biffurkation - emmpfngt au Kanal Nr. ";KanalL; 8 BIOS (,3,3,192): BIOS (,3,3,PrgL-1) 9 Scan!=0 10 Konstante!=1. 11 TonL=60 12 VorzL=1 13 DotL=1 14 Laut1L=60 15 StillL=0 16 SpalteL=2 17 BreiteL=1 18 DIM Kreis_YL(640) 19 Clear_Buffer 20 REPEAT 21 BIOS (ML,1,3) 22 IF ML=-1 THEN BIOS (XL,2,3) 23 UNTIL XL=-251 24 REPEAT 25 A$= INKEY$ 26 IF A$<>"" THEN AL= CVIL(A$) SHR 16 27 'Midieingang Abfrage 28 BIOS (ML,1,3) 29 IF ML=-1 30 THEN 31 BIOS (XL,2,3) 32 IF (XL=KanalL-256) THEN Algorithmus1 33 ENDIF 34 TonaltL=TonL 35 UNTIL AL=57 36 Ende 37 END 38 39 40 41 DEF PROC Ende 42 43 BIOS (,3,3,143+KanalL): BIOS (,3,3,TonaltL): BIOS (,3,3,0) 44 CLS 45 PRINT @(3,3);" Ende! " 46 PRINT @(4,3);"(c) fraktale musik ws 02/03 stefan groe" 47 END 48 49 50 51 52 DEF PROC Algorithmus1 53 'Errechnen und Play 54 IF Konstante!>=1.99 THEN VorzL=0 55 IF Konstante!<1. THEN Ende 56 IF IL=4 THEN 57 IF VorzL=1 THEN Konstante!=Konstante!+5E-3 58 IF VorzL=0 THEN Konstante!=Konstante!-(5E-3) 59 PRINT @(9,2);"C=";Konstante!;" " 60 ENDIF 61 IL=(IL+1) MOD 5 62 Scan!=Scan!*Scan!-Konstante! 63 TonL= INT(((Scan!*40/Konstante!)+120)/2) 64 'PRINT @(Dot,3);Scan! 65 'PRINT @(Dot,44);Ton 66 'Durchlauf=Durchlauf+1 67 Zeichne 68 BIOS (,3,3,143+KanalL): BIOS (,3,3,TonaltL): BIOS (,3,3,0) 69 BIOS (,3,3,143+KanalL): BIOS (,3,3,TonL): BIOS (,3,3,120) 70 IF DotL=17 THEN DotL=1 71 DotL=DotL+1 72 RETURN 73 74 DEF PROC Clear_Buffer 75 REPEAT 76 BIOS (ML,1,3) 77 IF ML=-1 THEN BIOS (XL,2,3) 78 UNTIL ML=0 79 RETURN 80 81 82 83 DEF PROC Zeichne 84 FILL COLOR =0 85 PCIRCLE BreiteL*SpalteL,Kreis_YL(BreiteL*SpalteL),1 86 FILL COLOR =1 87 CIRCLE BreiteL*SpalteL,430-3*TonL,1 88 Kreis_YL(BreiteL*SpalteL)=430-3*TonL 89 IF SpalteL<640 THEN SpalteL=SpalteL+1 90 IF SpalteL=640 THEN SpalteL=2 91 RETURN |