//=========================================== //----- Przykładowy skrypt mikserka MIDI ---- //----- Aktualizacja: 2008-05-02 ------------ //----- Wersja miksera: 1.15.0 -------------- //=========================================== //---------------------Przykład dodania pliku pomocy do głównego menu programu //------------------------- nowość w wersji 1.15 ---------- help "PDF Manual" "manual.pdf" help "CHM Manual" "manual.chm" help "HTML Manual" "manual.html" help "TXT Manual" "manual.txt" help "-" help "ExMixer Online..." "http://www.extranslator.com/tools/exmixer.html" autoload "start.snap" //-------nowość v1.9 po załadowaniu miksera zostanie wczytana migawka, której ustawienia są w pliku "start.snap", plik ten może mieć dowolną nazwę bitmapdir "skin" //-------katalog gdzie znajdują się nasze bitmapy opcja musi być zawsze przed definicjami obiektów //-----------od v1.8 możliwość zdefiniowania własnego graficznego obiektu scroll sterującego przesuwaniem okna //-----------obiekt scroll: definiujemy tylko raz najlepiej na początku pliku cyfra 16 oznacza szerokość "kwadracików" bądź "prostokątów" na bokach scrolla, możemy zmajstrować dowolnej szerokości przycisk kwadratowy bądź nietypowy o kształcie prostokątnym scroll: bitmap "scroll.bmp" 16 vbitmap "scroll_move.bmp" hoverbitmap "scroll_podswietlenie.bmp" //------------------------- przykład przycisków przełączących strony ---------- //------------------------- nowość w wersji 1.15 ---------- //------------------------- do konstrukcji przełącznika wykorzystano istniejące funkcje obiektu button i ich grupowanie //------------------------- kluczowym słowem jest tutaj gotopage i numer strony do której nastąpi skok button: bitmap "button_page.bmp" vbitmap "button_page_on.bmp" hoverbitmap "button_page_on.bmp" text 0 0 bottom box orange fixedwidth font "Tahoma" 10 black bold center #2101 button 30 490 "P1" gotopage 1 group 2100 comment "Panel główny" #2102 button 100 490 "P2" gotopage 2 group 2100 comment "Korg 14-bit przykład" #2103 button 170 490 "P3" gotopage 3 group 2100 comment "Multi Sterowanie" //----------------- STRONA NR 4 ----------------------- page 4 "Etykiety tekstowe" window 600 400 background: color 80C0FF label: text box green font "Times New Roman" 20 white label 5 5 "Etykieta tekstowa &1" label: text box color 0080FF font "Times New Roman" 24 color FF8000 bold label 5 35 "Etykieta tekstowa &2" label: text font "Verdana" 20 black italic label 5 65 "Etykieta tekstowa &3" label: text font "Verdana" 20 black italic underline label 5 95 "Etykieta tekstowa &4 ĄĆĘŁŃÓŚŹŻ ąćęłńóśźż" label: text font "Tahoma" 10 black label 5 125 "Etykieta tekstowa &5|Nowa linia|Nowa linia" //----------------- STRONA NR 5 ----------------------- page 5 "GM Panel Testowy" window 600 400 workarea 2000 2000 // od v1.8 opcjonalnie można zdefiniować obszar roboczy w przypadku korzystania ze scrolla i chcemy mieć duży obszar roboczy dla małego okna background: texture "blekit.bmp" fader: move horiz bitmap "incbar.bmp" barbitmap "incbar_add.bmp" text 2 2 right font bold white vtext 2 2 up font bold color 80C0FF stretch 1 .5 autoplace 100 100 0 20 #801 fader "VOL1" ctrl B0 7 0:127 #802 fader "VOL2" ctrl B1 7 0:127 #803 fader "VOL3" ctrl B2 7 0:127 #804 fader "VOL4" ctrl B3 7 0:127 #805 fader "VOL5" ctrl B4 7 0:127 #806 fader "VOL6" ctrl B5 7 0:127 #807 fader "VOL7" ctrl B6 7 0:127 #808 fader "VOL8" ctrl B7 7 0:127 #809 fader "VOL9" ctrl B8 7 0:127 #810 fader "VOL10" ctrl B9 7 0:127 #811 fader "VOL11" ctrl BA 7 0:127 #812 fader "VOL12" ctrl BB 7 0:127 #813 fader "VOL13" ctrl BC 7 0:127 #814 fader "VOL14" ctrl BD 7 0:127 #815 fader "VOL15" ctrl BE 7 0:127 #816 fader "VOL16" ctrl BF 7 0:127 autoplace 300 100 0 20 #901 fader "PAN1" ctrl B0 10 0:127 #902 fader "PAN2" ctrl B1 10 0:127 #903 fader "PAN3" ctrl B2 10 0:127 #904 fader "PAN4" ctrl B3 10 0:127 #905 fader "PAN5" ctrl B4 10 0:127 #906 fader "PAN6" ctrl B5 10 0:127 #907 fader "PAN7" ctrl B6 10 0:127 #908 fader "PAN8" ctrl B7 10 0:127 #909 fader "PAN9" ctrl B8 10 0:127 #910 fader "PAN10" ctrl B9 10 0:127 #911 fader "PAN11" ctrl BA 10 0:127 #912 fader "PAN12" ctrl BB 10 0:127 #913 fader "PAN13" ctrl BC 10 0:127 #914 fader "PAN14" ctrl BD 10 0:127 #915 fader "PAN15" ctrl BE 10 0:127 #916 fader "PAN16" ctrl BF 10 0:127 //--------------zmiana do komendy autplace od wersji 1.5 aby wyłączyć działanie tego polecenia //--------------musimy wpisać autoplaceoff bez żadnej spacji oddzielającej słówko off jak to było wcześniej //--------------zmiana związna jest z tym, że odzielne słowa OFF i ON będą teraz zarezerwowane dla definicji stanu przycisków autoplaceoff //------------------------- definiowanie kolorow ----------------- //------kolory możemy definiować w dwojaki sposób //------podając szybko i prosto nazwę koloru ;-) oto lista na razie dostępnych //------green - zielony //------blue - niebieski //------black - czarny //------yellow - żółty //------gray - szary //------lime - limetka //------white - biały //------orange - pomarańczowy //------dodatkowo możemy stopniować nasycenie koloru przedrostkami //------lt - light jasny np. ltred - jasny czerwony itd //------dk - dark ciemny np. dkred - ciemny czerwony itd //------med - medium średni np. medred - średni czerwony itd //------dokładniejsza metoda definicji koloru to podanie trzech składowych R,G,B //------zasada identyczna jak w HTML notacja szesnastkowa HEX //------np. color FF8000 oznacza składowe R(czerwony)=255 G(zielony)=128 B(niebieski)=0 finalnie otrzymamy pomarancz :-) //------gdyby jakieś kombinacje kolorów się nie zgadzały proszę dać znać poprawimy //------kolorować możemy text lub ramkę tekstu np. text red box green uzyskamy czerwony tekst na zielonej ramce //------taki sam efekt również uzyskamy stosując polecenie color np. text color FF0000 box color 00FF00 //----------------- STRONA NR 1 ----------------------- page 1 "Panel główny" window 850 550 workarea 800 1000 // od v1.8 opcjonalnie można zdefiniować obszar roboczy background: texture "tlo.bmp" bitmap "obrazek1.bmp" 13 416 bitmap "obrazek2.bmp" 60 416 bitmap "ramka.bmp" 341 2 bitmap "minimix.bmp" 605 165 //------------------------- suwaki ----------------- fader: bitmap "suwaczek.bmp" vbitmap "suwaczek_add.bmp" 16 13 move vert 128 vtext top box ltgray center font "Tahoma" 10 black bold text bottom center box color 0030AE font "Tahoma" 10 white bold stretch 1 1 #1 fader 20 20 "&&" ctrl 90 60 0:127 #2 fader 61 20 "VOL" ctrl B0 7 0:127 #3 fader 102 20 "PAN" ctrl B0 10 0:127 #4 fader 143 20 "EXPR" ctrl B0 11 10:90 step 10 fader: bitmap "suwaczek.bmp" vbitmap "suwaczek_add.bmp" 16 13 move vert 128 vtext top font "Times" 12 white bold center text 0 5 bottom box color 202020 font "Tahoma" 10 lime bold center stretch 1 0.5 #9 fader 348 20 "NOTE||9" ctrl 90 60 0:127 #10 fader 389 20 "VOL||10" ctrl B0 7 0:127 #11 fader 430 20 "PAN||11" ctrl B0 10 32:96 #12 fader 471 20 "SCENE||12" sysex F0 43 10 4B 50 0 17 0:3 F7 step 1 #13 fader 512 20 "NOTE||13" ctrl 90 60 0:127 #14 fader 553 20 "VOL||14" ctrl B0 7 0:127 #15 fader 594 20 "PAN||15" ctrl B0 10 32:96 #16 fader 635 20 "SCENE||16" sysex F0 43 10 4B 50 0 17 0:3 F7 step 1 //------------------------- galki ----------------- knob: elements 49 move vertical vbitmap "galka.bmp" text 0 0 bottom center box medred font "Tahoma" white bold vtext -2 0 middle font "Tahoma" white bold stretch 1 1 hidemouse #101 knob 35 210 "REV" ctrl B0 91 0:127 step 128 #102 knob 76 210 "CHO" ctrl B1 93 0:127 step 64 #103 knob 117 210 "SUS" ctrl B2 64 0:120 step 30 #104 knob 158 210 "BAL" ctrl B3 11 0:127 step 16 #105 knob 199 210 "REV" ctrl B4 91 0:127 #106 knob 240 210 "CHO" ctrl B5 93 0:127 #107 knob 281 210 "SUS" ctrl B6 64 0:127 #108 knob 322 210 "BAL" ctrl B7 11 0:127 knob: elements 49 move circ 0 360 vbitmap "galka.bmp" vtext 0 -1 top center box white font "Tahoma" black bold text 0 0 bottom center box ltgray font "Tahoma" white bold #109 knob 363 210 "REV 8" ctrl B8 91 10:20 #110 knob 404 210 "CHO 9" ctrl B9 93 20:40 #111 knob 445 210 "SUS 10" ctrl BA 64 30:60 #112 knob 486 210 "BAL 11" ctrl BB 11 40:80 //------------------------- pojedyncze przyciski "switch" ---------- button: bitmap "przycisk.bmp" vbitmap "przycisk_ON.bmp" text 0 0 bottom font "Arial" 10 black bold center stretch 1 1 #201 button 20 250 "Switch|S1" sysex F0 43 10 4B 50 0 17 1:2 F7 comment "Komentarz dla S1|Control Room" #202 button 61 250 "Switch|S2" sysex F0 43 10 4B 50 0 17 0:3 F7 comment "Komentarz dla S2|Control Room" //------------------------- przyciski grupujące ---------- button: bitmap "przycisk_red.bmp" vbitmap "przycisk_red_ON.bmp" text 0 3 middle font "Tahoma" 8 white bold stretch 2 2 #301 button 142 250 "Part 1" sysex F0 43 10 4B 50 0 17 0 F7 group 1 defaultposition 1.0 #302 button 224 250 "Part 2" sysex F0 43 10 4B 50 0 17 1 F7 group 1 #303 button 306 250 "Part 3" sysex F0 43 10 4B 50 0 17 2 F7 group 1 button: bitmap "przycisk_red.bmp" vbitmap "przycisk_red_ON.bmp" text 0 3 middle font "Tahoma" 8 white bold stretch 3 3 #304 button 388 250 "Part 4" sysex F0 43 10 4B 50 0 17 3 F7 group 1 //------------------------- suwaki słupkowe ----------------- fader: bitmap "barfader.bmp" hoverbitmap "barfader_hover.bmp" vbitmap "barfader_move.bmp" 14 12 barbitmap "barfader_bar.bmp" 7 12 move vert 128 vtext bottom center box white fixedwidth hidemouse #401 fader 184 20 "SX1" sysex F0 43 10 4B 50 0 0:7F 0 F7 default 20 #402 fader 225 20 "SX2" sysex F0 43 10 4B 50 1 0:7F 0 F7 default 40 fader: bitmap "barfader.bmp" barbitmap "barfader_bar2.bmp" 7 12 move vert 128 vtext top center box yellow fixedwidth 18 #403 fader 266 20 "SX3" sysex F0 43 10 4B 50 2 0:7F 0 F7 default 60 #404 fader 307 20 "SX4" sysex F0 43 10 4B 50 3 0:7F 0 F7 default 7F table 0 "min" 127 "max" //------------------------- przycisk button plane ---------- button: plane 3 2 bitmap "planebutton.bmp" vbitmap "planebutton_press.bmp" hoverbitmap "planebutton_hover.bmp" text top refreshbackground #501 button 20 320 "PLANE BUTTON" sysex F0 43 10 4B 50 0 17 0 F7 sysex F0 43 10 4B 50 0 17 1 F7 sysex F0 43 10 4B 50 0 17 2 F7 sysex F0 43 10 4B 50 0 17 3 F7 sysex F0 43 10 4B 50 0 17 4 F7 sysex F0 43 10 4B 50 0 17 5 F7 comment "Planszowy przycisk ekranowy - plane 3 2 określa ilość pól na planszy czyli 6 pól - dla każdego pola możemy podpiąć osobny komunikat System Exclusive lub Control Change." //------------------------- przycisk 1-stanowy ---------- button: onestate bitmap "reset.bmp" vbitmap "reset_press.bmp" text right refreshbackground #601 button 160 310 "GM|Reset" sysex F0 7E 7F 09 01 F7 comment "GENERAL MIDI - GM RESET" #602 button 160 350 "GS|Reset" sysex F0 41 10 42 12 40 00 7F 00 41 F7 comment "GENERAL STANDARD - GS RESET" //------------------------- jeszcze jeden suwaczek ---------- fader: move horiz bitmap "incbar.bmp" barbitmap "incbar_add.bmp" text 1 0 up font bold color 80C0FF vtext 30 10 up font white bold vtext 1 10 up font white bold hidemouse #701 fader 290 330 "VOL+PAN" ctrl B0 7 0:127 ctrl B0 10 32:96 table 32 "Left" 64 "Center" 96 "Right" table2 0 "MIN" 127 "MAX" fader: move horiz bitmap "incbar.bmp" barbitmap "incbar_add.bmp" text 0 3 right bold vtext 0 0 up font color C0C0FF hidemouse stretch 0.5 0.5 #702 fader 290 370 "CUTOFF" ctrl B0 74 0:127 default 64 #703 fader 290 390 "RESO" ctrl B0 71 0:127 default 64 //-------------------------------------------------------------------- //------- przykład wykorzystania pół-bajtowych wartości -------------- //-------------------------------------------------------------------- //------- np. w Roland Boss dane składowane są w polach 4-bitowych tzw. nibble ---------- //------- komenda nibble dzieli następny bajt na cztery "pół bajty" (podobnie polecenie nibble4) //------- nibble2 podzieli bajt na dwa "pół bajty" //------- rolandcrc generuje sumę CRC Rolanda dla ostatnich 7 bajtów przed F7 (równoważne jest to poleceniu rolandcrc7) //------- np. rolandcrc5 będzie generować sumę crc dla ostatnich 5 bajtów adres i data //------- rolandcrc[LICZBA] - przylegający parametr [LICZBA] określa ilość bajtów branych do liczenia sumy kontrolnej //------- i60:240 oznacza zakres wartości w notacji dziesiętnej od 60 do 240 knob: elements 49 move circ vbitmap "bosstempo.bmp" text bottom center vtext 0 12 bottom center fixedwidth black bold box yellow #1001 knob 560 190 "Rev Level" sysex F0 41 0 0 23 12 20 2 5a nibble2 i0:100 rolandcrc5 F7 //-------------- przycisk wysyłający nutkę ---------- //-------------- poleceniem ON, OFF decydujemy kiedy dany komunikat będzie wysyłany ---------- //-------------- ON - gdy wciśnięty //-------------- OFF - gdy wyciśnięty button: onestate bitmap "keyc.bmp" vbitmap "keyc_on.bmp" #1100 button 250 330 ON ctrl 90 60 127 OFF ctrl 80 60 0 button: bitmap "keyd.bmp" vbitmap "keyd_on.bmp" #1101 button 263 330 ON ctrl 90 61 127 OFF ctrl 80 61 0 //------------------------- suwak PITCH BEND ----------------- //------ nowe polecenie BENDERMODE powoduje powrót suwaka do pozycji wyjściowej po zwolnieniu //------ nowe polecenie TWOBYTE dzieli wartość na dwa bajty 7F 7F fader: bendermode bitmap "suwaczek.bmp" vbitmap "suwaczek_add.bmp" 16 13 move vert 128 text white bottom center fixedwidth box ltgreen vtext 0 22 bottom center fixedwidth bold white box dkgreen stretch 2 1 #1200 fader 545 255 "PITCH|BENDER" ctrl E0 twobyte 0:16384 defaultposition 0.5 //------------- dodano w wersji 1.7 [transparentclick] ------- //------------- dodano w wersji 1.7 przycisk zmieniający globalny kanał MIDI ---- //------------- wyłacza funkcję sprawdzania kliknięcia na transparentnym tle button: transparentclick plane 8 2 bitmap "channels.bmp" vbitmap "channels_add.bmp" text 0 -2 top bold ltgray box dkgray fixedwidth center #1300 button 613 186 "MIDI CHANNEL" [CHN] fixedposition 1.0 fader: bitmap "suwaczek.bmp" vbitmap "suwaczek_add.bmp" 16 13 move vert 128 text bottom center box orange font "Tahoma" 8 black bold vtext 0 12 bottom center font "Tahoma" 8 black bold stretch 1 0.5 #1301 fader 615 245 "VOL" ctrl B0[chn] 7 0:127 default 100 #1302 fader 645 245 "PAN" ctrl B0[chn] 10 0:127 default 64 knob: elements 49 move circ vbitmap "bosstempo.bmp" text bottom center box orange font "Tahoma" 8 black bold vtext 0 12 bottom center font "Tahoma" 8 black bold #1303 knob 700 265 "REV" ctrl B0[chn] 91 0:127 default 0 #1304 knob 740 265 "CHO" ctrl B0[chn] 93 0:127 default 0 //-------------------------- X-Y Controller kontroler 2D dwu-wymiarowy //----------wstawiając bendermode do obiektu xycontrol uzyskamy ciekawy efekt //----------kontroler wraca sobie do położenia domyślnego z pozycji x,y xycontrol: area 0 0 128 128 bitmap "xy.bmp" vbitmap "xymover.bmp" text bottom bold vtext 53 64 center vtext 65 0 white hidemouse //bendermode ofs 200 10 #1400 xycontrol "X-Y Controller" 490 0 defaultpositionx 0.5 defaultpositiony 0.5 yaxis ctrl B0[chn] 7 0:127 default 64 xaxis ctrl B0[chn] 10 0:127 default 64 table2 0 "Dół" 64 "Centrum" 127 "Góra" table 0 "Lewy" 64 "Centrum" 127 "Prawy" ofs //-------- od v1.9 gałka typu ENCODER ;-) --------- //-------- ruch w prawo zwiększa wartość +1 //-------- ruch w lewo zmniejsza wartość -1 //-------- od v1.9 możliwość podpięcia opisów do poszczególnych wartości --------- knob: encoder elements 5 vbitmap "encoder.bmp" text bottom center box yellow font "Tahoma" 10 vtext 0 12 bottom font "Tahoma" 12 bold #1500 knob 490 375 " Kółko Dial " ctrl B0 25 10:90 step 5 table 10 "10 - Piano" 15 "15 - Drum" 20 "20 - Trumpet" 25 "25 - Sax" 30 "30 - Synth A" 35 "35 - Synth B" 40 "40 - Bells" 45 "45 - Strings" 50 "50 - Marimba" 55 "55 - Bass" 60 "60 - empty" 65 "65 - empty" 70 "70 - empty" 75 "75 - empty" 80 "80 - empty" 85 "85 - empty" 90 "90 - empty" //------------- od v1.10 nowy obiekt lista rozwijalna /list:/ //------------- od v1.10 dwa nowe elementy listy rozwijalnej /list/ i /selectlist/ //------------- opcjonalny atrybut /rows/ w definicji obiektu list: dzieli //------------- menu automatycznie na kolumny, gdzie liczba oznacza ilość wierszy. list: rows 16 bitmap "list.bmp" hoverbitmap "list_hover.bmp" vbitmap "list_press.bmp" vtext 3 2 font 12 bold text white top fixedwidth box color 404040 #1600 selectlist 610 380 " MODE SELECT LIST " default 1 comment "Przykład & listy rozwijalnej SELECTLIST o skończonej ilości elementów|Jedna pozycja steruje tylko jednym komunikatem sysex lub ctrl." sysex F0 43 10 1 F7 sysex F0 43 10 2 F7 sysex F0 43 10 3 F7 sysex F0 43 10 4 F7 table 0 "Mode 1 & 2" 1 "Mode 2 & 3" 2 "Mode 3 & 4" 3 "Mode 4 & 5" #1601 list 610 420 " PRESET LIST " ctrl C0 20:80 default 24 comment "Przykład listy rozwijalnej LIST dla podanego zakresu wartości" table 20 "Piano 1" 21 "Piano 2" 22 "Piano 3" 23 "Honky Tonk" 24 "E. Piano 1" 25 "E. Piano 2" 50 "Super Piano 1" 60 "Super Piano 2" //-------------- v1.10.5 możliwość definiowania zmiennych w formacie 14-bit Korg //-------------- przykład wykorzystania na poniższej gałce knob: elements 49 move vertical vbitmap "bosstempo.bmp" text bottom center box black font "Tahoma" white bold vtext -1 middle font "Tahoma" white bold hidemouse #1700 knob 190 420 " 14-bit KORG " sysex F0 42 30 36 41 03 00 KORG i-99:99 F7 default 0 //------------------------------------ STRONA NR 2 ------------------------------------ //------------------------------------------------------------------------------------- //----- Przykłady zastosowania różnych kombinacji wartości w formacie 14-bit Korg ----- //--------------- Małe i wielkie litery nie są rózróżniane w definicjach -------------- //---- Poprzedzająca literka 'i' w wartości sysex oznacza format dziesiętny liczb ----- //------------------------------------------------------------------------------------- page 2 "Korg 14-bit przykład" background: color C0C0C0 knob: elements 49 move vertical vbitmap "bosstempo.bmp" text bottom center box black font "Tahoma" white bold vtext top center box color D0D0D0 fixedwidth 70 font "Courier" 14 black bold hidemouse #1801 knob 100 50 " 14-bit KORG | zakres -99 .. +99 " default 0 sysex F0 42 30 36 41 03 00 KORG i-99:99 F7 #1802 knob 250 50 " 14-bit KORG | zakres -99 .. +99 | krokowo co 10 " default 0 step 10 sysex F0 42 30 36 41 03 00 KORG i-99:+99 F7 #1803 knob 100 170 " 14-bit KORG | zakres -2000 .. +2000 " default 0 sysex F0 42 30 36 41 03 00 KORG i-2000:+2000 F7 #1804 knob 250 170 " 14-bit KORG | zakres -20 .. +70 | niesymetrycznie " default 0 sysex F0 42 30 36 41 03 00 KORG i-20:70 F7 #1805 knob 400 170 " 14-bit KORG | zakres 100 .. 50 | tryb odwrotny (inverse) | wartość startowa 75 " default i75 sysex F0 42 30 36 41 03 00 KORG i100:50 F7 //------------------------------ STRONA NR 3 ----------------------------------------- //- Przykład użycia sterowania wieloma zmiennymi w sysex ----------------------------- //- Nowe słowo kluczowe multicontrol wiąże komunikat sysex z elementami na ekranie --- //------------------------------------------------------------------------------------ page 3 "Multi Sterowanie" background: color A0A0C0 fader: bitmap "suwaczek.bmp" vbitmap "suwaczek_add.bmp" 16 13 move vert 128 vtext top box ltgray center font "Tahoma" 10 black bold text bottom center box color 0030AE font "Tahoma" 10 white bold stretch 1 1 multicontrol { sysex F0 42 30 36 41 0:7F 0:7F 0:7F 0:7F F7 #1901 fader 20 20 "A" #1902 fader 80 20 "B" #1903 fader 140 20 "C" #1904 fader 200 20 "D" } multicontrol { sysex F0 42 30 36 41 i0:127 i0:127 i0:127 F7 #1911 fader 320 20 "p1" default 30 #1912 fader 380 20 "p2" default 40 #1913 fader 440 20 "p3" default 50 }