⌈⌋ ⎇ branch:  Bitrhythm


Hex Artifact Content

Artifact 73c2e85fd5684e72e42682954b985c04b17b16be58b1b592ba21dffb1c368c87:

  • Executable file public/nexus-js/lib/main.js — part of check-in [12a9bb700d] at 2021-08-11 18:56:04 on branch trunk — Import from git Added a changelog (user: dev size: 2646)

0000: 27 75 73 65 20 73 74 72 69 63 74 27 3b 0a 0a 69  'use strict';..i
0010: 6d 70 6f 72 74 20 49 6e 74 65 72 66 61 63 65 73  mport Interfaces
0020: 20 66 72 6f 6d 20 27 2e 2f 69 6e 74 65 72 66 61   from './interfa
0030: 63 65 73 2f 27 3b 0a 69 6d 70 6f 72 74 20 6d 61  ces/';.import ma
0040: 74 68 20 66 72 6f 6d 20 27 2e 2f 75 74 69 6c 2f  th from './util/
0050: 6d 61 74 68 27 3b 0a 69 6d 70 6f 72 74 20 52 61  math';.import Ra
0060: 63 6b 20 66 72 6f 6d 20 27 2e 2f 63 6f 72 65 2f  ck from './core/
0070: 72 61 63 6b 27 3b 0a 69 6d 70 6f 72 74 20 54 75  rack';.import Tu
0080: 6e 65 20 66 72 6f 6d 20 27 2e 2f 74 75 6e 69 6e  ne from './tunin
0090: 67 2f 74 75 6e 69 6e 67 27 3b 0a 69 6d 70 6f 72  g/tuning';.impor
00a0: 74 20 2a 20 61 73 20 54 72 61 6e 73 66 6f 72 6d  t * as Transform
00b0: 20 66 72 6f 6d 20 27 2e 2f 75 74 69 6c 2f 74 72   from './util/tr
00c0: 61 6e 73 66 6f 72 6d 27 3b 0a 0a 6c 65 74 20 43  ansform';..let C
00d0: 6f 75 6e 74 65 72 20 3d 20 72 65 71 75 69 72 65  ounter = require
00e0: 28 27 2e 2f 6d 6f 64 65 6c 73 2f 63 6f 75 6e 74  ('./models/count
00f0: 65 72 27 29 3b 0a 6c 65 74 20 52 61 64 69 6f 20  er');.let Radio 
0100: 3d 20 72 65 71 75 69 72 65 28 27 2e 2f 6d 6f 64  = require('./mod
0110: 65 6c 73 2f 72 61 64 69 6f 27 29 3b 0a 6c 65 74  els/radio');.let
0120: 20 44 72 75 6e 6b 20 3d 20 72 65 71 75 69 72 65   Drunk = require
0130: 28 27 2e 2f 6d 6f 64 65 6c 73 2f 64 72 75 6e 6b  ('./models/drunk
0140: 27 29 3b 0a 6c 65 74 20 53 65 71 75 65 6e 63 65  ');.let Sequence
0150: 20 3d 20 72 65 71 75 69 72 65 28 27 2e 2f 6d 6f   = require('./mo
0160: 64 65 6c 73 2f 73 65 71 75 65 6e 63 65 27 29 3b  dels/sequence');
0170: 0a 6c 65 74 20 4d 61 74 72 69 78 20 3d 20 72 65  .let Matrix = re
0180: 71 75 69 72 65 28 27 2e 2f 6d 6f 64 65 6c 73 2f  quire('./models/
0190: 6d 61 74 72 69 78 27 29 3b 0a 0a 69 6d 70 6f 72  matrix');..impor
01a0: 74 20 57 41 41 43 6c 6f 63 6b 20 66 72 6f 6d 20  t WAAClock from 
01b0: 27 77 61 61 63 6c 6f 63 6b 27 3b 0a 69 6d 70 6f  'waaclock';.impo
01c0: 72 74 20 49 6e 74 65 72 76 61 6c 20 66 72 6f 6d  rt Interval from
01d0: 20 27 2e 2f 74 69 6d 65 2f 69 6e 74 65 72 76 61   './time/interva
01e0: 6c 27 3b 0a 0a 0a 2f 2a 2a 0a 4e 65 78 75 73 55  l';.../**.NexusU
01f0: 49 20 3d 3e 20 63 72 65 61 74 65 64 20 61 73 20  I => created as 
0200: 4e 65 78 75 73 0a 2a 2f 0a 0a 63 6c 61 73 73 20  Nexus.*/..class 
0210: 4e 65 78 75 73 55 49 20 7b 0a 0a 20 20 20 20 63  NexusUI {..    c
0220: 6f 6e 73 74 72 75 63 74 6f 72 28 63 6f 6e 74 65  onstructor(conte
0230: 78 74 29 20 7b 0a 0a 20 20 20 20 20 20 20 20 66  xt) {..        f
0240: 6f 72 20 28 6c 65 74 20 6b 65 79 20 69 6e 20 49  or (let key in I
0250: 6e 74 65 72 66 61 63 65 73 29 20 7b 0a 20 20 20  nterfaces) {.   
0260: 20 20 20 20 20 20 20 20 20 74 68 69 73 5b 6b 65           this[ke
0270: 79 5d 20 3d 20 49 6e 74 65 72 66 61 63 65 73 5b  y] = Interfaces[
0280: 6b 65 79 5d 3b 0a 20 20 20 20 20 20 20 20 7d 0a  key];.        }.
0290: 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 6c 65  .        for (le
02a0: 74 20 6b 65 79 20 69 6e 20 6d 61 74 68 29 20 7b  t key in math) {
02b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
02c0: 73 5b 6b 65 79 5d 20 3d 20 6d 61 74 68 5b 6b 65  s[key] = math[ke
02d0: 79 5d 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20  y];.        }.. 
02e0: 20 20 20 20 20 20 20 6c 65 74 20 43 6f 72 65 20         let Core 
02f0: 3d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 27 52  = {.          'R
0300: 61 63 6b 27 3a 20 52 61 63 6b 0a 20 20 20 20 20  ack': Rack.     
0310: 20 20 20 7d 3b 0a 0a 20 20 20 20 20 20 20 20 6c     };..        l
0320: 65 74 20 4d 6f 64 65 6c 73 20 3d 20 7b 0a 20 20  et Models = {.  
0330: 20 20 20 20 20 20 20 20 27 43 6f 75 6e 74 65 72          'Counter
0340: 27 3a 20 43 6f 75 6e 74 65 72 2c 0a 20 20 20 20  ': Counter,.    
0350: 20 20 20 20 20 20 27 52 61 64 69 6f 27 3a 20 52        'Radio': R
0360: 61 64 69 6f 2c 0a 20 20 20 20 20 20 20 20 20 20  adio,.          
0370: 27 44 72 75 6e 6b 27 3a 20 44 72 75 6e 6b 2c 0a  'Drunk': Drunk,.
0380: 20 20 20 20 20 20 20 20 20 20 27 53 65 71 75 65            'Seque
0390: 6e 63 65 27 3a 20 53 65 71 75 65 6e 63 65 2c 0a  nce': Sequence,.
03a0: 20 20 20 20 20 20 20 20 20 20 27 4d 61 74 72 69            'Matri
03b0: 78 27 3a 20 4d 61 74 72 69 78 0a 20 20 20 20 20  x': Matrix.     
03c0: 20 20 20 7d 3b 0a 0a 20 20 20 20 20 20 20 20 66     };..        f
03d0: 6f 72 20 28 6c 65 74 20 6b 65 79 20 69 6e 20 4d  or (let key in M
03e0: 6f 64 65 6c 73 29 20 7b 0a 20 20 20 20 20 20 20  odels) {.       
03f0: 20 20 20 74 68 69 73 5b 6b 65 79 5d 20 3d 20 4d     this[key] = M
0400: 6f 64 65 6c 73 5b 6b 65 79 5d 3b 0a 20 20 20 20  odels[key];.    
0410: 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 66      }..        f
0420: 6f 72 20 28 6c 65 74 20 6b 65 79 20 69 6e 20 43  or (let key in C
0430: 6f 72 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20  ore) {.         
0440: 20 74 68 69 73 5b 6b 65 79 5d 20 3d 20 43 6f 72   this[key] = Cor
0450: 65 5b 6b 65 79 5d 3b 0a 20 20 20 20 20 20 20 20  e[key];.        
0460: 7d 0a 0a 20 20 20 20 20 20 20 20 6c 65 74 20 44  }..        let D
0470: 65 66 61 75 6c 74 43 6f 6e 74 65 78 74 20 3d 20  efaultContext = 
0480: 77 69 6e 64 6f 77 2e 41 75 64 69 6f 43 6f 6e 74  window.AudioCont
0490: 65 78 74 20 7c 7c 20 77 69 6e 64 6f 77 2e 77 65  ext || window.we
04a0: 62 6b 69 74 41 75 64 69 6f 43 6f 6e 74 65 78 74  bkitAudioContext
04b0: 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f  ;.        this._
04c0: 63 6f 6e 74 65 78 74 20 3d 20 63 6f 6e 74 65 78  context = contex
04d0: 74 20 7c 7c 20 6e 65 77 20 44 65 66 61 75 6c 74  t || new Default
04e0: 43 6f 6e 74 65 78 74 28 29 3b 0a 0a 20 20 20 20  Context();..    
04f0: 20 20 20 20 74 68 69 73 2e 74 75 6e 65 20 3d 20      this.tune = 
0500: 6e 65 77 20 54 75 6e 65 28 29 3b 0a 20 20 20 20  new Tune();.    
0510: 20 20 20 20 74 68 69 73 2e 6e 6f 74 65 20 3d 20      this.note = 
0520: 74 68 69 73 2e 74 75 6e 65 2e 6e 6f 74 65 2e 62  this.tune.note.b
0530: 69 6e 64 28 74 68 69 73 2e 74 75 6e 65 29 3b 0a  ind(this.tune);.
0540: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6c  .        this.cl
0550: 6f 63 6b 20 3d 20 6e 65 77 20 57 41 41 43 6c 6f  ock = new WAAClo
0560: 63 6b 28 74 68 69 73 2e 5f 63 6f 6e 74 65 78 74  ck(this._context
0570: 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  );.        this.
0580: 63 6c 6f 63 6b 2e 73 74 61 72 74 28 29 3b 0a 20  clock.start();. 
0590: 20 20 20 20 20 20 20 74 68 69 73 2e 49 6e 74 65         this.Inte
05a0: 72 76 61 6c 20 3d 20 49 6e 74 65 72 76 61 6c 3b  rval = Interval;
05b0: 0a 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 63  ..        this.c
05c0: 6f 6c 6f 72 73 20 3d 20 7b 0a 20 20 20 20 20 20  olors = {.      
05d0: 20 20 20 20 61 63 63 65 6e 74 3a 20 27 23 32 62      accent: '#2b
05e0: 62 27 2c 0a 20 20 20 20 20 20 20 20 20 20 66 69  b',.          fi
05f0: 6c 6c 3a 20 27 23 65 65 65 27 2c 0a 20 20 20 20  ll: '#eee',.    
0600: 20 20 20 20 20 20 6c 69 67 68 74 3a 20 27 23 66        light: '#f
0610: 66 66 27 2c 0a 20 20 20 20 20 20 20 20 20 20 64  ff',.          d
0620: 61 72 6b 3a 20 27 23 33 33 33 27 2c 0a 20 20 20  ark: '#333',.   
0630: 20 20 20 20 20 20 20 6d 65 64 69 75 6d 4c 69 67         mediumLig
0640: 68 74 3a 20 27 23 63 63 63 27 2c 0a 20 20 20 20  ht: '#ccc',.    
0650: 20 20 20 20 20 20 6d 65 64 69 75 6d 44 61 72 6b        mediumDark
0660: 3a 20 27 23 36 36 36 27 0a 20 20 20 20 20 20 20  : '#666'.       
0670: 20 7d 3b 0a 0a 20 20 20 20 20 20 20 20 74 68 69   };..        thi
0680: 73 2e 74 72 61 6e 73 66 6f 72 6d 20 3d 20 54 72  s.transform = Tr
0690: 61 6e 73 66 6f 72 6d 3b 0a 20 20 20 20 20 20 20  ansform;.       
06a0: 20 74 68 69 73 2e 61 64 64 20 3d 20 54 72 61 6e   this.add = Tran
06b0: 73 66 6f 72 6d 2e 61 64 64 3b 0a 0a 0a 20 20 20  sform.add;...   
06c0: 20 20 20 20 20 74 68 69 73 2e 41 64 64 20 3d 20       this.Add = 
06d0: 7b 7d 3b 0a 20 20 20 20 20 20 20 20 66 6f 72 20  {};.        for 
06e0: 28 6c 65 74 20 6b 65 79 20 69 6e 20 49 6e 74 65  (let key in Inte
06f0: 72 66 61 63 65 73 29 20 7b 0a 20 20 20 20 20 20  rfaces) {.      
0700: 20 20 20 20 74 68 69 73 2e 41 64 64 5b 6b 65 79      this.Add[key
0710: 5d 20 3d 20 54 72 61 6e 73 66 6f 72 6d 2e 61 64  ] = Transform.ad
0720: 64 2e 62 69 6e 64 28 74 68 69 73 2c 6b 65 79 29  d.bind(this,key)
0730: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20  ;.        }..   
0740: 20 20 20 20 20 2f 2a 20 63 72 65 61 74 65 20 64       /* create d
0750: 65 66 61 75 6c 74 20 63 6f 6d 70 6f 6e 65 6e 74  efault component
0760: 20 73 69 7a 65 20 61 73 20 31 73 74 20 73 74 79   size as 1st sty
0770: 6c 65 20 65 6c 65 6d 65 6e 74 20 69 6e 20 64 6f  le element in do
0780: 63 75 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 20 20  cument */.      
0790: 20 20 76 61 72 20 64 65 66 61 75 6c 74 53 74 79    var defaultSty
07a0: 6c 65 4e 6f 64 65 20 3d 20 64 6f 63 75 6d 65 6e  leNode = documen
07b0: 74 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28  t.createElement(
07c0: 27 73 74 79 6c 65 27 29 3b 0a 20 20 20 20 20 20  'style');.      
07d0: 20 20 64 65 66 61 75 6c 74 53 74 79 6c 65 4e 6f    defaultStyleNo
07e0: 64 65 2e 74 79 70 65 20 3d 20 27 74 65 78 74 2f  de.type = 'text/
07f0: 63 73 73 27 3b 0a 20 20 20 20 20 20 20 20 64 65  css';.        de
0800: 66 61 75 6c 74 53 74 79 6c 65 4e 6f 64 65 2e 69  faultStyleNode.i
0810: 6e 6e 65 72 48 54 4d 4c 20 3d 20 27 5b 6e 65 78  nnerHTML = '[nex
0820: 75 73 2d 75 69 5d 7b 68 65 69 67 68 74 3a 35 30  us-ui]{height:50
0830: 30 30 70 78 3b 77 69 64 74 68 3a 35 30 30 30 70  00px;width:5000p
0840: 78 7d 27 3b 0a 20 20 20 20 20 20 20 20 76 61 72  x}';.        var
0850: 20 68 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 68 65   h = document.he
0860: 61 64 3b 0a 20 20 20 20 20 20 20 20 68 2e 69 6e  ad;.        h.in
0870: 73 65 72 74 42 65 66 6f 72 65 28 64 65 66 61 75  sertBefore(defau
0880: 6c 74 53 74 79 6c 65 4e 6f 64 65 2c 20 68 2e 66  ltStyleNode, h.f
0890: 69 72 73 74 45 6c 65 6d 65 6e 74 43 68 69 6c 64  irstElementChild
08a0: 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 67 65  );.    }..    ge
08b0: 74 20 63 6f 6e 74 65 78 74 28 29 20 7b 0a 20 20  t context() {.  
08c0: 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e      return this.
08d0: 5f 63 6f 6e 74 65 78 74 3b 0a 20 20 20 20 7d 0a  _context;.    }.
08e0: 0a 20 20 20 20 73 65 74 20 63 6f 6e 74 65 78 74  .    set context
08f0: 28 63 74 78 29 20 7b 0a 20 20 20 20 20 20 74 68  (ctx) {.      th
0900: 69 73 2e 63 6c 6f 63 6b 2e 73 74 6f 70 28 29 3b  is.clock.stop();
0910: 0a 20 20 20 20 20 20 74 68 69 73 2e 5f 63 6f 6e  .      this._con
0920: 74 65 78 74 20 3d 20 63 74 78 3b 0a 20 20 20 20  text = ctx;.    
0930: 20 20 74 68 69 73 2e 63 6c 6f 63 6b 20 3d 20 6e    this.clock = n
0940: 65 77 20 57 41 41 43 6c 6f 63 6b 28 74 68 69 73  ew WAAClock(this
0950: 2e 63 6f 6e 74 65 78 74 29 3b 0a 20 20 20 20 20  .context);.     
0960: 20 74 68 69 73 2e 63 6c 6f 63 6b 2e 73 74 61 72   this.clock.star
0970: 74 28 29 3b 0a 20 20 20 20 7d 0a 0a 0a 0a 7d 0a  t();.    }....}.
0980: 0a 6c 65 74 20 4e 65 78 75 73 20 3d 20 6e 65 77  .let Nexus = new
0990: 20 4e 65 78 75 73 55 49 28 29 3b 0a 0a 65 78 70   NexusUI();..exp
09a0: 6f 72 74 20 66 75 6e 63 74 69 6f 6e 20 63 6f 6c  ort function col
09b0: 6f 72 73 28 29 20 7b 0a 20 20 20 20 72 65 74 75  ors() {.    retu
09c0: 72 6e 20 4e 65 78 75 73 2e 63 6f 6c 6f 72 73 3b  rn Nexus.colors;
09d0: 0a 7d 0a 65 78 70 6f 72 74 20 66 75 6e 63 74 69  .}.export functi
09e0: 6f 6e 20 63 6f 6e 74 65 78 74 28 29 20 7b 0a 20  on context() {. 
09f0: 20 20 20 72 65 74 75 72 6e 20 4e 65 78 75 73 2e     return Nexus.
0a00: 63 6f 6e 74 65 78 74 3b 0a 7d 0a 65 78 70 6f 72  context;.}.expor
0a10: 74 20 66 75 6e 63 74 69 6f 6e 20 63 6c 6f 63 6b  t function clock
0a20: 28 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20  () {.    return 
0a30: 4e 65 78 75 73 2e 63 6c 6f 63 6b 3b 0a 7d 0a 0a  Nexus.clock;.}..
0a40: 65 78 70 6f 72 74 20 64 65 66 61 75 6c 74 20 4e  export default N
0a50: 65 78 75 73 3b 0a                                exus;.