///////\ //////\ /////\ //////\ //\ /////\ //\ //\ 64 //\ \ \//\ \ //\ //\ \// \ \\ //\ //\ /// // ///////\ // /////// // //\ // // /////// \ // // //\ // // // // // // /// /////// // // // // // ///// \ // // \ \ \\ \\ \\ \\ \\ \ \ \\ \\ v2.6 Welcome to STATION64, the live player solution. Real hardware synth controlled by MIDI. Many people loves SID original sound. Many people have some midi stuff. I've been in search of any appz to use C64 as external synth. MSSIAH you say? Yeah, i have one. Great piece of hardware, but i wanna to control all SID activity, use all oscillators, play with commodore computer keyboard too, see midi activity and so on. And of course, do a some self challenge to code it. Now - challenge is over. >20000 code lines in pure 6510 assembler. Almost 4 month of hard coding. And voila!!! It was tested with DATEL/PASSPORT/SEQUENTAL/KERBEROS/HERMIDI/NAMESOFT/VESSEL midi interfaces. Feel free to ask add an other midi interfaces. No MIDI? Use a computer keys as keyboard in! You can play single notes (with 3 voices max poly) or play preprogrammed pieces of SID commands blocks as ARPs. And, very important - you can combine them! Also you can control up to six C64 (mapped with different midi channels) with one DAW Main features: - 3 voice polyphony or unison for fat sounds or 3 separated midi channels route to 3 sid oscillators - full 3 osc control via midi - fine tune for each osc - 2 lfo/env (4 stage) with apply to pitch/pulsewidth/filter cut - total monitoring all midi activity (decoded or raw view) - advanced glide and pitchwheel control - fast on-screen help - zero latency (on real Commodore) - tested on C64 / C128(in c64 mode) - works with 8580/6581 on PAL/NTSC (auto detection) machines - support KERBEROS/DATEL/SEQUENTAL/PASSPORT/HERMIDI/VESSEL midi interfaces with autodetection - manual set HARDRESTART delay (SIDBUG) - screen-off for more clean sound from SID - works with 154x/SD2IEC disk drive (+some additional features for SD2IEC users) to load/save created programs/arpeggios banks - 16 programs (can change from external midi too) - 8 looped or single-shot arps (32 step each) - easy programming arp with total SID registers control - play notes/arpeggios from commodore keyboard (without MIDI) - mapping arpeggios as you like on your midi keys or computer keyboard - simple interface with great possibilities - 100% original code, without any KERNAL use - software reset to machines without reset button - suppoprt ASID protocol from Elektron SIDstation_TM_ hardware synth (play *.SID from pc on real C64 via midi) (except HerMIDI) - SID activity monitor (all SID regs in real-time) - nice intro with cute gradients :-) e-mail i@mak-sa.net any asks about C64 code, midi code, and STATION64 support Please, support via http://djindikator.net/#c64 it's help to further research and STATION64 support. Thank you -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Terms -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- osc - SID oscillator (or voice) program - preset (all settings of synth) channel - midi channel raster - time unit (1/50 sec on pal version, 1/60 sec on ntsc) All digits use hex format. Hope to make some decimal in further versions. There are 3 mode to play synth with POLY - get from AVAILABLE midi_channels (or commodore keyboard) and play poly (3 voice max) 3CHN - mapping 3 midi channels to 3 sid osc (see SETUP/MIDI) UNI - from AVAILDBLE midi channel play all sid osc simultaneously Available midi channels selected on SETUP screen (MIDI-SID mappings) After any changes received form external midi device, the settings immidiately store to sid and program in memory. It's doesn't matter where you are - in arp editor or synth editor. The program initializations occurs only on program change or after setup menu. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- GLOBAL KEYS -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [+] [-] change program (0-F) [pound] change play mode [run/stop] arp enable/disabled (see icon after the play mode) [F1] SYNTH (synth edit) [F2] something like help (show keys to use) [F3] ARP (arp edit) [F4] SETUP (there raw midi monitor too) [F5] KEYS (live performance mode) [F6] LOAD prg/arp/setup [F7] screen OFF (kill a magic hum :) [F8] SAVE prg/arp/setup [DEL] panic! (SID reset + kill all activity) [C=] + [RESTORE] commodore soft reset [<-] escape (like "back" in your browser) ..................................................................................................... SYNTH mode KEYS program management [SH] + [-] copy program [SH] + [+] paste program [SH] + [pound] ini prg [SH] + [clr/home] copy osc1 -> osc2,osc3 [C=] + [0]..[9][a]..[f] fast program select [SPACE] repeated test tone, [SH]+[SPACE] single test tone. use SETUP for select tone len n pitch [CTRL] rename preset osc selection [1][2][3] change osc to edit (and play by [SPACE] in "3CHN" mode) osc (works on selected oscillator) [4][5][6][7] change wave [T] tune (half-tone) [F] fine (sid freq registers step) [R] ring mod [S] sync [P] pulse wave width (PW) [E] envelope (dadsr) [V] use velocity to control SUSTAIN in env (*) [N] no restart env on legato notes [X] constant pitch for osc (see SETUP/PRESETS) [@] pwm mode (---,+E1,+E2,-E1,-E2) [*] fm mod (---,+E1,+E2,-E1,-E2) (*) works with some errata (sid bug) on maximum vel (sus=F), try to hardreset on it filter [L][B][H] set type of filter (low pass/band pass/high pass) [8][9][0] set sid osc to filter processing [C] cut off [Z] rezo [^] filter freq mod (---,+E1,+E2,-E1,-E2) other settings [G] glide steps per raster (step=sid freq units) [W] pitch wheel. 1 pitchwheel unit = XXX sid freq units [M] master volume ELFO [:] edit elfo1 [;] edit elfo2 [crsr v][crsr h] elfo1 speed/depth [,][.] elfo2 speed/depth ..................................................................................................... ELFO editor [:][;] select ELFO to edit [+][-] how many steps in ELFO [clr home] LOOPED [ins del] RESTART [RETURN] VALUE PREV (use last value for step start with),RAND (use S/H value within a step), VAL [RETURN] DIRECTION +/- [<-] escape to main synth window [SPACE] test tone [crsr] move around ..................................................................................................... ARP/C=PLAY mode KEYS [SH] + [-] copy arp [SH] + [+] paste arp [CTRL] rename arp [C=]+[1..7] change octave to play with C= keyboard [,][.] change octave to play with C= keyboard [:][;] select arp to edit [SH]+[key note] map/unmap selected arp to this note [@] single/loop/loop all [*] change arp speed (+sh) [^] change arp len (+sh) [=] change osc to mapping/to play in 3chan mode [clr home] stand at first step of matrix [crsr] move across the arp matrix [SPACE] activate/deactivate cell [RETURN] edit cell value [/] PITCH ROW - change type (note/offset) [SH] + [pound] clr step + сдвиг вправо [SH][C=]+[1...9] fill all arp with 1...9 first steps [SH]+[SPACE] fill copy from last activated cell in row until cursor [SH]+[RETURN] repeat left step to current and move right KEYBOARD PLAYER (2X OCTAVE) ZSXDCVGBHNJM Q2W3ER5T6Y7U ..................................................................................................... PERFORMANCE mode KEYS [,][.] change octave to play with C= keyboard [C=]+[1..7] change octave to play with C= keyboard [=] change osc to play in 3chan mode KEYBOARD PLAYER (2X OCTAVE) ZSXDCVGBHNJM Q2W3ER5T6Y7U ..................................................................................................... RAW MIDI MONITORING mode KEYS [clr home] clear midi-in log [SPACE] pause midi-in log [8][9][A][B][C][D][E] send cmd to midi out [RETURN] repeat last cmd to midi out [+][-] change output midi-channel ..................................................................................................... ASID PLAYER mode KEYS (don't works with HERMIDI interface yet) [F7] screen on/off [F8] SID reset [1],[2],[3] sid channels on/off [R] record ASID player data [P] play ASID recorded ..................................................................................................... SETUP mode KEYS [ctrl] or [crsr hor] select page [crsr ver] select parameter [RETURN]/[SPACE] change parameter [<-] escape to synth/arp/perf window [F2] ASID player [F4] RAW-MIDI monitoring ..................................................................................................... LOAD/SAVE mode KEYS (show only s64* files + dirs) common disk operation keys [R] re-read file list [crsr ver] select file in list [8][9][0][1] select device 8/9/10/11 [SH]+[inst del] delete file [inst del] parent (SD2IEC) [RETURN] into dir (SD2IEC) [<-] escape to previous window save keys [P][A][S] select items for save Programms/Arps/Settings [SPACE] enter new name and save [RETURN] get selected file name, edit and save load keys [RETURN] load selected file ..................................................................................................... DATA INPUT KEYS [crsr horiz] move around line [crsr vertic] change value [clr home] to begin of line [inst del] del under cursor [+][-] change sign (for signed values) [<-] escape (and restore unchanged digital value) [RETURN] get value [SPACE] select something (e.g. midi mapping, midi filter) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- INCOMING MIDI MAPPING -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- PROG change PWHEEL NOTE ON/OFF (with velocity/aftertouch) CC MAPPED TO 00 01 flt cut (mod wheel) 02 03 04 05 06 glide 07 master volume 08 A osc1 09 D osc1 10 S osc1 11 R osc1 12 A osc2 13 D osc2 14 S osc2 15 R osc2 16 A osc3 17 D osc3 18 S osc3 19 R osc3 20 flt rez 21 pw0 22 pw1 23 pw2 24 tune1 25 tune2 26 tune3 27 fine1 28 fine2 29 fine3 30 wave1 8/16/32/64 = tri/saw/pulse/noise 31 wave2 32 wave3 33 predelay osc1 34 predelay osc2 35 predelay osc3 36 elfo1 depth 37 elfo1 speed 38 elfo2 depth 39 elfo2 speed 40 41 42 ring1 43 ring2 44 ring3 45 sync1 46 sync2 47 sync3 48 vel1 49 vel2 50 vel3 51 leg1 52 leg2 53 leg3 54 55 56 57 flt lp 58 flp bp 59 flt hp 60 flt chn1 61 flt chn2 62 flt chn3 63 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- SYNTH hints -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- fine tune - values just add (or sub) to sid freq const pitch - no pitch cnange legato - not restart env, just change pitch (works only for legated notes :) glide - works only for legated notes (you set the speed of change pitch in raster units) - when glide roll on, ELFO not working velo->sus - if velo=0, only pitch changes occur pwheel - add/sub to freq 0...$3f * (2^pwheel_param) arp - it's not SYNTH'S arpeggiator, its parallela synth - elfo/pwheel/fine-tune/glide not working with arp-ed sounds elfo - run every 1/100 sec - change pitch with +-XXXX - change pwidth with +-0XXX - change filter XX0 with ELFO +-XX00 The synth use CIA timer irq with 1/100 per seconds ticks resolution. --==[[ ELFO ]]==-- You have 2 ELFO. Why ELFO? Coz it can be like lfo (if looped), and also can be like env (single shot mode). Each ELFO has up to 4 stage. Just looking on one step. You have a LENgth of step (countdown by IRQ ticks). You have Direction (add or substract) of VALue within time of this step. In other words wa have start VALue (e.g. note frequency in sid units) and add (or substract) some SYEP on each raster step. The VALue filed may contains vvvv (use current freq value), XXXX (digits) - "start with" or RAND for S/H like behaviour. On each step: START=START+UP (или DOWN) or START=RAND or START=previous value unchangeble PITCH/PW/CUTOFF= START + present PITCH/PW/CUTOFF data types (hex) FREQ MOD VAL XXXX STEP XXXX PW MOD VAL 0XXX STEP 0XXX FCUT MOD VAL 0XXX STEP XX00 -> sid format XX0 --==[[ ARPS ]]==-- Pitch can be one of two mode. Straight note or offset. straight - just play arp notes, no matter what note-on pressed offset - first offset from note-on, next offsets from PREVIOUS played e.g. if offset steps +4 +2 and C5 was pressed, then will be playing С5+4=E5, E5+2=F#5 Note-off of arp keys sends GATE=OFF immediately There 2 loop mode. First (thin loop) after first loop, stay looped with only pitch/fine/pwidth/fcut/frez. Second loop mode (full loop) always play ALL settings within. --==[[ MIDI ]]==-- Change MIDI prg via MIDI within ELFO edit: prg changes disabled, all other - works as usual. Synth received all midi channels (and show them in midi-monitor) but processed only selected (SETUP/MIDI/mapping incoming midi channel) channels. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- SETUP -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- PRESET ** change play mode GLOBAL/PRESET ** you can change global play mode via [pound] key or store mode into preset ** default note for test tone ** default note as say. Also used as test tone for [SPACE] key in synth section ** test tone len ** len (step 10 ms) of repeated NOTE_ON - NOTE_OFF ** program names ** here you can edit all program names ARP/KEYS ** default comp velocity ** play on computer keyboard with this vel value MIDI ** midi monitor filter ** ** mapping incoming midi channel to sid osc ("3CHN" mode) ** STATION64 ALWAYS receive incoming data via this MIDI CHANNELS only ** midi interface type (DATEL/PASSPORT/SEQUENTAL/NAMESOFT_NMI/HERMIDI/VESSEL) ** interfaces notes settings SEQUENTIAL/NAMESOFT DE00 DE02 DE01 DE03 03 15 95 PASSPORT/SENTECH DE08 DE08 DE09 DE09 03 15 95 DATEL/SIEL/JMS/C-LAB DE04 DE06 DE05 DE07 03 16 96 HERMIDI uses 100 tps on CIA2 SID/SYS ** master volume ** store with preset or use global value (and not change volume at all). It may be good idea about use global volume if you wanna to avoid clicks within program change ** sid model/raster timing ** information only :) ** default drive ** default disk device # You can set default drive on INTRO screen (intro closes within ~5 sec automatically) - press 8/9/0/1 -> dev# 8/9/10/11. In this case STA64 try to load previously saved settings/prgs/arps named with "DEFAULT". Any other key on intro - don't load anything and use embedded settings/prgs/arps.