![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
|
' =========================================================================== ' Demoprogramm: Lied "Stille Nacht" über Piezo-Schallwandler abspielen ' In OCBASIC 1.12a_e1 für Open-Macro von Dietmar Harlos am 22. Dezember 2020 ' Konvertiert auf Open-Maxi am 12. Dezember 2021 ' =========================================================================== ' Die Töne werden am BEEP-Port der Open-Maxi ausgegeben. Am BEEP-Pin kann ein ' Rechtecksignal mit unterschiedlicher Frequenz ausgegeben werden. Durch ' Anschluß eines Piezo-Schallwandlers (ohne Elektronik) wird ein Ton erzeugt. ' Der BEEP-Ton kann wie auf der C-Control I Version 1.1 parallel zur ' Programmausführung ausgegeben werden. Allerdings ist die Tonfrequenz um ' 25% höher. ' Dieses Programm demonstriert auch, wie komplizierte Berechnungen in ' Integer-Arithmetik durchgeführt werden können. ' Umrechnung der Tonhöhe (Note) von Open-Macro auf Open-Maxi: ' ton = 312500 / f 'auf der Open-Maxi ' f = 3.2E6 / (3*a^2+17*a+116) 'auf den bisherigen OM-Controllern ' ton = 312500 / (3.2E6 / (3*a^2+17*a+116)) ' ' 75 2 425 725 'mit MuPAD Light berechnet ' ton = --- a + --- a + --- ' 256 256 64 ' ' ton = 75*a/256*a+83*a/50+11 'Umrechnung für Open-Maxi ' An dieser Stelle möchte ich mich bei Dirk von "das |_ Team" und bei Norbert ' für ihre Unterstützung bedanken. ' --- Definitionen ---------------------------------------------------------- DIM i BYTE 'Index DIM a,b BYTE 'Aus Tabelle gelesene Werte für Tonhöhe und Tonlänge DIM ton WORD 'Für die Open-Maxi berechneter Wert der Tonhöhe DEFINE C4 61 '262 Hz Noten der vierten Oktave DEFINE D4 57 '294 Hz DEFINE E4 54 '330 Hz DEFINE F4 52 '349 Hz DEFINE G4 49 '392 Hz DEFINE A4 46 '440 Hz DEFINE B4 43 '494 Hz DEFINE C5 42 '523 Hz Noten der fünften Oktave DEFINE D5 39 '587 Hz DEFINE E5 37 '659 Hz DEFINE F5 36 '698 Hz DEFINE G5 34 '784 Hz DEFINE A5 32 '880 Hz DEFINE B5 30 '988 Hz DEFINE L1 60 'Ganze Note Zeitdauer der Noten DEFINE L2 30 'Halbe Note DEFINE L3 20 'Drittelnote DEFINE L4 15 'Viertelnote DEFINE L6 10 'Sechstelnote DEFINE L8 8 'Achtelnote DEFINE L12 5 'Zwölftel Note DEFINE L16 4 'Sechzehntel Note DEFINE PAU 4 'Pause ' --- Hauptprogramm --------------------------------------------------------- WHILE TRUE PRINT "Ich spiele Musik..." FOR i=0 TO 96 STEP 2 a=LOOKTABBYTE(lied,i) b=LOOKTABBYTE(lied,i+1) PRINT a;" "; ton=75*a/256*a+83*a/38+11 'mit /38 statt /50 hier kleinerer Fehler PRINT ton BEEP ton, b, PAU NEXT i PAUSE 100 WEND ' --- Tabellen -------------------------------------------------------------- ' Noten für "Silent Night" nach: ' http://tomaszdziurko.com/2014/12/merry-christmas-in-java/ TABLE lied BYTE G4, L2 'First line A4, L6 G4, L2 E4, L1 G4, L2 A4, L6 G4, L2 E4, L1 D5, L2 D5, L4 B4, L2 B4, L4 C5, L2 C5, L4 G4, L1 A4, L2 A4, L4 C5, L2 'Second line B4, L6 A4, L3 G4, L2 A4, L6 G4, L3 E4, L2 E4, L4 A4, L2 A4, L4 C5, L2 B4, L6 A4, L3 G4, L2 A4, L6 G4, L3 E4, L2 E4, L4 D5, L2 D5, L4 F5, L2 'Third line D5, L8 B4, L4 C5, L1 E5, L1 C5, L4 G4, L4 E4, L4 G4, L2 F4, L8 D4, L3 C4, L1 END TABLE ' --- Programmende --------------------------------------------------------- Passender Link: Bedienungsanleitung zur Open-Macro und Open-Maxi Meine Homepage: http://ccintern.dharlos.de |
Antwort schreiben |