ncmixer

ncurses audio mixer for DJ'ing
git clone git://git.2f30.org/ncmixer.git
Log | Files | Refs | README | LICENSE

README (1815B)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
VISUAL

  [CH0:*] [MON: ]                                           [CH1: ] [MON: ]
                               step: 0.062500
                               pos: -0.187500

  ----------------------------|||-----+------------------------------------
  ||||||||                                                         ||||||||
                                 master: on
                                monitor: off
                                  onair: off


KEYS

    h,l   -- move crossfader left/right by one step
    j,k   -- halve/double the step amount
    ^H,^L -- snap to leftmost, center, rightmost positions
    q,w   -- decrease, increase level of channel 1
    o,p   -- decrease, increase level of channel 2
    1     -- toggle monitor on channel 1
    2     -- toggle monitor on channel 2
    ^A    -- toggle on-air state


CONFIG

The mixer daemon works with the sndio audio server.  For best performance,
you should avoid resampling at the sndio layer.  The mixer itself uses a
sampling rate of 44100Hz, so ideally you run:

    sndiod -r44100 -f rsnd/0 -r44100 -f rsnd/1


CAVEATS

The correct way to do movement is to get keyboard press and release events,
and move the crossfader at the set speed in the meantime.  We can emulate this
assuming the default auto-repeat settings for X: a delay of 660ms and a rate
of 25Hz:

    xset q | grep repeat

To set these options:

    xset r rate 660 25

initial gap: 660ms
subsequent gaps: 1000 / 25 = 40ms
state machine:

if current key is right:
    if previous key is not right:
        start crossfade to right for 660ms
    if previous key is right and still crossfading:
        continue crossfade to right for another 40ms

Currently we don't do anything about that.  We suffer the initial 660ms delay
and then we move by one step every 40ms.