File: README

package info (click to toggle)
dbmix 0.9.8-6.3
  • links: PTS
  • area: main
  • in suites: bullseye, buster, jessie, jessie-kfreebsd, sid, stretch
  • size: 2,896 kB
  • sloc: ansic: 12,309; sh: 11,418; makefile: 153
file content (583 lines) | stat: -rw-r--r-- 24,426 bytes parent folder | download | duplicates (6)
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
DBMix Digital Audio Mixing System
=================================
Robert Michael S Dean (c) 1999, 2000

Note:
If you have not installed dbmix before, you may get the following error 
during the make process:

gcc -O2 -o dbcat -L/usr/lib -L/usr/X11R6/lib -lgtk ... Line truncated
/usr/bin/ld: cannot find -ldbaudiolib
collect2: ld returned 1 exit status
make2: *** dbcat Error 1
make2: Leaving directory /home/futant/DBMix-0.9.7-2'
make: *** all-recursive-am Error 2 

If this error occurs, cd to the dbaudiolib, make install, then cd back 
to the top level dbmix directory and do a global make install for the package.

Note: 
If you are having problems with DBMix, and wish for help, please
attempt to recreate your problem with dbfsd debugging turned on (run 
./configure with the --enable-debug option, make install, and run "dbfsd
-d"), and send along the output of "cat /dev/sndstat".  This will greatly
speed up the diagnosis of your problem.  Thanks.

Note: 
I have tested all of this to the best of my ability. You may experience 
problems, but I doubt it. If you do, email me at BobDean@sourceforge.net
I will try to get a patch out as fast as I can (I work full time, which takes 
precedence).


New Features in this release:
- unified playlist - dbplaylist
- digital sampler w/in dbmixer
- beat matching synchronization tools.
- rewritten xmms plugin
- session recording to wav file
- mixing master and cue output into single channel for single soundcard
  systems (see dbfsd section for more info)
- Removal of terminatorX support, as terminatorX does not work on my
  system, even when installed from rpms. Output audio is corrupted. 
  If you would like to use terminatorX, the files are in CVS, along with
  directions on how to use them.


Contents
========

  1.0 Overveiw

  2.0 Forget explaining the system, tell me how to use it Section

  3.0 System Components
      3.1 DBfsd - the DB Fourier Synthesis Daemon.
      3.2 DBCat - command line dbfsd client.
          3.2.1 - DBCat use
          3.2.2 - Using DBCat with GQMPEG.
      3.3 DBIn - command line line input client
      3.4 DBMixer - DBMix GUI
          3.4.1 Overview
          3.4.2 Restrictions
          3.4.3 USING DBMIXER:
                3.4.3.1 Channel Box Components 
                3.4.3.2 Crossfading Components
                3.4.3.3 The Sample Editor Box
                3.4.3.4 The Controls Box
	  3.5 DBPlaylist - unified playlist
          3.5.1 Overview
		  3.5.2 The playlist
          3.5.3 Command buttons
      3.6 Exmixer - and external device to control dbmixer
      3.7 XMMS Output plugin

  4.0 DBAudioLib

  5.0 CUEING




1.0 Overveiw
============
The DBMix system allows a user to combine multiple audio streams into a single
stream for output using a single sound card.  NOTE: It is similar to esound in
this regard, but has different design goals and architecture.

This document is intended to give a quick introduction to DBMix. More complete
doc's will be available at DBMix.souceforge.org as soon as I complete them.

Any questions, feel free to email me at BobDean@users.sourceforge.net

DBMix was developed on Redhat Linux 6.0. The development machine is a Dual 
celeron with 256 MB of ram.

I have used DBMix to successfully DJ multiple parties. Hopefully it will work 
as well for you as it does for me.
-Bob


2.0 Forget explaining the system, tell me how to use it Section
================================================================
To install dbmix, in the DBMix root directory, configure, make and install.
This will install the following DBMix components:
	dbfsd
	dbcat
	dbaudiolib
    xmms output plugin
    dbmixer (standalone and xmms general plugin verions)

You will need glib/gtk 1.2+ and the xmms-devel files in order to compile 
the source code successfully.

To use terminatorX as a DBMix client, README.terminatorX file in the 
DBMix/terminatorX directory.  Basically, terminatorX is a software program that
allows you to "scratch" digital audio just like you can vinyl records. 
Scratching is just one of terminatorX's capabilities, check out
http://www-stud.fht-esslingen.de/~alkoit00/tX/ for more information. It will
be well worth your time and effort. =)

To use it:
1) run dbfsd. It should be install in /usr/local/bin. Type dbfsd -h to get the
   list of command line parameters. dbfsd is the sound daemon for DBMix. It must
   be the first component of DBMix to be launched.
2) run dbmixer. It should also be installed in /usr/local/bin. dbmixer is a 
   DJ Mixer style gui interface to DBMix
3) run xmms. In the Preferences->Audio I/O Plugins dialog, select the DBMix 
   output plugin, 
4) Select "Allow Multiple Instances" from the xmms Preferences->Options dialog
   to use multiple xmms sessions at once.  Then you can use the nifty crossfader
   component of dbmixer. (or use the DBMix client of your choice)
5) Play some audio.


3.0 System Components
=====================
The Goal of DBMix is to provide the user with every capability found in an 
analog DJ System. To accomplish this, DBMix contains the following components:

3.1 DBfsd - the DB Fourier Synthesis Daemon.
--------------------------------------------
This is the application that actually combines the input audio and cue streams.
DBfsd works by opening a static number of input "channels", and waiting for 
input on those "channels".  When input arrives, it is read, fourier syntheis is 
applied, and the data is sent to the soundcard.

Currently there is only one channel type implemented using pipes to transfer the
data.. The idea of a network based channel is also in development, but not 
included in this release.  

DBfsd is designed to accept 16 bit unsigned 44.1 KHz audio. This is format 
commonly associated with digital audio. Combining this with the default input 
channel type allows a user to send sound to the daemon using command line IO 
redirection in the traditional concept of UNIX filters:
"mpg123 -s filename > /tmp/ch#_comm"

Even though IO redirection is supported, if you wish to use the command line
interface, please use dbcat. dbcat uses dbaudiolib and therefore allows you
to control the audio stream from dbmixer.

The command line options for dbfsd are as follows:

Supported options (argument type in parens) [defaults in brackets]:    
   -d   turn on debug messages to console          (none)   [Off]      
   -c   enable cue output                          (none)   [no cue]   
   -e   output cue as left channel of master out   (none)   [Off]      
   -n   set total number of input channels         (int)    [4]        
   -s   set number of input channels to be sockets (int)    [0]        
   -a   set master output audio device             (string) [/dev/dsp0]
   -b   set cue output audio device                (string) [/dev/dsp2]
   -r   set number of OSS output fragments         (int)    [128]      
   -o   write mixed output to stdout               (none)   [Off]      
   -v   print version information                  (none)              
   -h   print this message                         (none) 

DBFsd now supports cueing with a single soundcard, although two soundcards
is the prefered method.  This is accomplished be mixing the cue and master
data into mono streams, and outputing the master signal as the right 
channel and the cue signal as the left channel of the soundcard output. Thus,
with a couple of "Y" connectors from Radio Shack, you can enjoy master 
and cue outputs. Enabling this option will also enable cue output.

Of particular interest to you should be the -r option, by reducing the number
of OSS output fragments, you will reduce the latency between pressing a button
in xmms and hearing the results of that action.  This is also controllable using
the preferences dialog in dbmixer. 

DBFsd now supports recording of a session.  The interface to the recording
functionality is handled by dbmixer.  The output will be a 16 bit, stereo,
44.1 KHz WAV file.

3.2 DBCat - command line dbfsd client.
--------------------------------------
3.2.1
It is used with commandline piping as follows: 
"mpg123 -s filename | dbcat"
dbcat makes use of the DBAudioLib library which is described below.

Supported options [defaults in brackets]:
   -d    turn on debug messages to console      [Off]
   -v    print version information.             [None]
   -m    input data is mono.                    [Stereo]
   -r N  input data has a sampling rate of N Hz [44100 Hz]
   -8    input data is 8 bit unsigned samples   [16 bit signed]
   -c X  use channel X if available             [first available]
   -S    sample only mode.                      [none]

Of interest here is the -S mode. In this mode, dbcat will output blank
audio data ONLY.  The purpose of this is to provide a channel for
only outputing digitial samples.

3.2.2
To use gqmpeg as a client:
1) run gqmpeg with standard out piped to dbcat: "gqmpeg | dbcat &"
2) Open the preferences dialog for gqmpeg
3) Choose the Output tab
4) In the User Options text field at the bottom, enter "-s"


3.3 DBIn - command line line input client
-----------------------------------------
DBin allows you to send line-in audio to dbmix, and control it as you
do any other channel. This is the client that will allow you use the
microphone jack on your soundcard, or connect an external audio device
(CD player, Mini-Disc player, record player, etc...) to the line in jack.

The command line options for dbin are as follows:
  -d    print debug messages           (none)    [off]
  -l    audio input source in line in  (none)    [mic]
  -a    set audio device path          (string)  [/dev/dsp]
  -c X  use channel X if available     (int)     [first available]
  -m    input data is mono.            (none)    [Stereo]
  -r N  input sampling rate is N Hz    (int)     [44100 Hz]
  -8    input data is 8 bit unsigned   (none)    [16 bit signed]
  -s    output to stdout, not dbmix    (none)    [dbmix]
  -h    print help screen              (none)    [mic]

The default audio source for dbin is the microphone. To use dbin with
a CD player (or other device), use the -l command line option to set
the audio source to be line in.

IMPORTANT: The audio device used by dbin MUST be duplex. Also, this
device MUST NOT be used for the master or cue output of
dbmix. Violating either of these restrictions will cause dbin to
output an empty audio stream.


3.4 DBMixer - DBMix GUI
-----------------------

3.4.1 Overview

This is a quick and dirty explanation. The best way to learn about
dbmixer is to use it.

DBMixer provides a gui interface to the channel control variables.
Currently, DBMixer allows the user to accomplish the following: 
 - control the volume of each channel independently
 - mute each channel independently
 - toggle the cue status of each channel
 - CROSSFADE!! CROSSFADE!!! CROSSFADE!!
 - Control the master output volume for each of your sound cards.
 - adjust the pitch (speed) of each channel independently
 - Change output between soundcards on the fly (useful when your master card 
   blows out during a gig, systems back up and running in about 2 seconds at
   exactly the same spot as when it stopped)
 - Mic talkover, mutes all channels that are not a microphone by 75%
 - Cue Split, places cue output in the right cup of your headphones,
   and the master output in the left. 
 - Balance control, similar to the balance control found on your stereo.
 - Digital Sampler, record up to 10 seconds of a song for playback at 
   a later time.

3.4.2 Restrictions
------------------

DBMixer has the following RESTRICTIONS:
- If you have a maximum number of clients running, dbmixer will not start. This
is a problem with allocating the DBMix system shared memory, and is on the bug 
list.  If this occurs, close one of your clients, start dbmixer, and then 
restart your last client.


3.4.3 USING DBMIXER:
--------------------

DBMixer has three main areaa:
  1) The channel boxes - one for each channel. Contains the channel
      selector, buttons for mute cue and pause, the volume slider, and
      the pitch slider.
  2) The crossfader box - contains the punch buttons, crossfade
     channel selectors, the crossfader, and the autofade buttons
  3) The controls box - contains the clipping light, mic talkover
     button, cue split button, balance slider, master and cue soundcard
     volumes, Autofade speed and the Options menu.	


3.4.3.1 Channel Box Components 
------------------------------

To Cue a channel, select its Cue button.

To Mute a channel, select its Mute button.

To Pause a channel, select its Pause button.

To Play a recorded sample once, select its Once button.

To Play a recorded sample in a loop, sleect its Loop button to start
playback, and select the button again to stop playback.

To change the volume of a channel, use the level slider (the vertical
slider). Note that the number associated with the slider is the
inverse of what it should be. By this I mean, that a shown value of 0
means that volume is at 100%, a value of 20 means that the volume is
at 80% and so on. 

To speed up or slow down a channel, use the pitch control (the
horizontal slider). The "<5" and "5>" buttons will adjust the speed by
- and + 5%, and the "-|-" button will reset the pitch to 100%. 

Below the pitch buttons are the Pitch Sync buttons. While the buttons
are depressed, they will temporarially slow (-S button), pause, 
(.]S[. button), and speed up (S+) button the track. The purpose of 
these three buttons is to assist in Beat Matching. Once you have two
or more tracks playing at the same speed with the pitch buttons/slider,
use the sync buttons to get the tracks in perfect beat syncronization.


3.4.3.2 Crossfading Components
------------------------------

The crossfader has 3 parts, the fader slider itself, and the two 
channel selectors, one on each side of the fader.  
To crossfade:
1) Select the channels to fade between. This is accomplished by
selecting the channel numbers with the channel selectors.  
2) Move the fader slider to the desired position.
OR
3) Use the Autofade buttons to move the faders for you.

There are three autofade buttons located to the right of the fader. 
They are: "<" fade to the left, "/\" centers the fader, and ">" 
fades to the right.

To adjust the speed of the autofade, position the Autofade Spd. slider
found to the right of the autofade buttons. The value of this slider
is the fade time from left to right in seconds.

Punch Buttons. To either side of the crossfader channel selectors are
buttons that say PUNCH.  Pressing this button will cause the volume
for the selected crossfader channel to be set to maximum while the
punch button is pressed. When the button is released, the channel
volume will return to its previous value. This is usefull for quickly
overlaying soundbytes from one stream over another. 

3.4.3.3 The Sample Editor Box
-----------------------------


The Sample Editor Box is a little confusing, because labels were left
out to condense its size. The description of its elements will occur 
from top of the box to the bottom.

First is the channel selector box. This is used to select the channel
to record a sample from, or to edit an existing sample.

Next are the Load and Save buttons. These are used to Load a saved
sample, and save a recorded sample. 

Next is the Record Sample button. Select this button to start 
recording a sample, and select it again to stop recording.  Recording
will automatically stop when the sample buffer is full (10 seconds),
and if this occurs, the button will de-select itself.

Next are the start and end sliders. Use these sliders to adjust the
start time and end time of your sample.  The values at the top of the
sliders are the time offsets in seconds within the sample. 

Hint: I find it best to edit samples while the sample is looping. You
may safely slide the sliders while the sample is playing, when you do,
the sample will restart from its new start position.

After the sliders is the Copy Sample To button followed by another
channel selector box.  These two elements allow you to copy a sample
from one channel to another. For example, to a dbcat channel which
is in sample only mode. To copy a sample, first select the channel
in the selector, then click the Copy Sample To button.  I realize 
that this is a little unorthodox, but combining the label and button
into one saves UI size. 


3.4.3.4 The Controls Box
------------------------

Clipping. Clipping is a term which means the strength of the combined
audio signals is too large for output, and the excess has been cut
off. This can lead to distortion.  

In the upper right hand corner of dbmixer is the word "Clipping:" next
to a green icon. This icon is the Clipping Light. When the icon
changes to red, clipping is occuring. To fix this problem, lower the
volumes for each playing channel until the light is a steady green again.

Clipping is most likely to occur during crossfades. In such a
situation it will be temporary and may be ignored at your discretion.  

The xmms general plugin version of dbmixer is no longer supported, and
should be removed from your system.  

Next is the Mic Talkover button.  This will cut all output channels to 1/3
volume to allow Microphone input to be heard. See the DBIn section to
learn how to enable microphone input. 

Next is the balance slider. This element will adjust the balance of the
master output, akin to the balance control found on stereo components and
DJ Mixers.

The Main and Cue sliders allow you to adjust the soundcard volume for the
Master and Cue devices. 

Autofade Spd. slider controls the speed of the autofade.  The default is
6 seconds, and the maximum is 15 seconds. A neat trick is to adjust the
fade speed while an autofade is occuring. When done correctly, this will
cause multiple fade outs. 


3.5 DBPlaylist - unified playlist
---------------------------------
3.5.1 Overveiw
--------------

DBPlaylist is a unified playlist for controlling dbmix clients.  It uses two 
players, where each player is an dbmix client.  The main features of 
dbplaylist are the ability to "cue" songs, set up one player while the other 
is playing, to automatically alternate players, and to track what songs have 
already been played.

dbplaylist has no command line options.

3.5.2 The playlist
------------------

The playlist is the list in the gui.  Each item in the playlist has two data 
elements, the name of the song, and the Player where that song will be played.

To add songs to the playlist, drag and drop a file from your favorite file 
manager onto the list. (Dragging onto the buttons will not work)

To reorder a song in the list, simply drag the song up or down in the list.  
As you are dragging, a green highlight bar will appear beneath the mouse.  
The location that is highlight is the position where the dragged song will 
be placed when you release the mouse.

The pink highlight is used to represent the next song to be cue'd or sent to 
a player.  The hightlight has the following behaviors:
- When you reorder songs in the list by dragging, the cue highlight will always 
  stay on the same song unless you drop a song on top of it. 
- If you drag a song on top of the cue highlight, that song will become the next
  song to be cued. 
- If you drag a song from lower in the list to above the cue highlight, the 
  highlight will move down one position.  
- If you drag a song from above the cue highlight to beneath the cue highlight, 
  the highlight will move up one position.  
- If you delete the song that has the cue highlight, the next song in the list 
  will inherit the cue hightlight. 
- The player for the cue highlight'd song will ALWAYS stay the same unless you 
  specifically change it.
- The players for the songs beneath the cue highlight will always alternate, 
  regardless of what the player order is for the songs above the cue highlight. 

The blue highlight represents the currently selected row. This is the row on 
which delete and swap operations can be performed.

3.5.3 Command buttons
---------------------

Cue Next Song - Takes the song under the cue highlight, and sets up 
                that song on the player assigned to that song. The cue 
                hightlight is then moved to the next song in the list. Note 
                that if a song is cued, it's text color will change to red, 
                this way you can track songs that have already been played.

Cue /\ - Moves the cue highlight up one position in the playlist, keeping 
         the player for the cue highlight the same.

Cue \/ - Moves the cue highlight down one position in the playlist, keeping 
         the player for the cue highlight the same.

Swap Player - Swaps the player number for the selected song. (blue highlight)

Delete - Deletes the selected song. (blue highlight)

Load List - Load an mp3 playlist. Supported play list extensions: .m3u, .M3U

Save List - Save the current playlist as an mp3 playlist.  This saved list
            is in a format that can be read by xmms, therefore no state 
            information (player, current cue index, etc) will be saved in 
            the list.

Full Cue - When full cue is enabled, dbplaylist will not allow you to cue a 
           song to a player that is current playing a song. You will get an 
           error message box.

Player 1 and Player 2 - These are drop down lists, which contain the current 
           list of dbmix clients.  dbplaylist only has the concept of two 
           players.  But, you the user have the ability to pick which dbmix 
           clients these players represent.  Currently, only xmms clients 
           are supported.


3.6 Exmixer - and external device to control dbmixer
----------------------------------------------------
Simon Werner has designed an easy to build external DJ Mixer style
device to control dbmixer. He has willingly created a document
including directions on how you can build one of your very own. Please
see the Readme.emixer document included with the disrtibution.

The Exmixer code is not included by default, you must enable it with 
the --enable-exmixer parameter to the dbmix configure script.


3.7 XMMS plugins
-----------------
The xmms output plugin should be automatically installed for you into
your xmms directory.

Follow the directions that ship with XMMS to select these plugins.



4.0 DBAudioLib
--------------
This is the common library used by dbcat and the xmms output plugin to 
communicate with DBfsd.  The purpose of DBAudioLib is to provide a simple, 
easy to use interface to send data to dbfsd. DBAudiolib also perfroms basic 
operations to the data it is given, unbeknowst to the client application.  
Currently DBAudiolib supports the following adjustments:
- amplitude/volume control
- channel mute
- cueing
- speed/pitch control
- format conversion

To develop with DBAudioLib, see Readme.devel


5.0 CUEING
==========
Cueing is enabled by specifying the -c command line option for dbfsd.

With previous versions of DBMix, the was an issue with synching the cue
and master output. This issue has been fixed.

1) The default audio devices are:
#define DEFAULT_AUDIO_DEVICE   "/dev/dsp0"
#define DEFAULT_CUE_AUDIO_DEVICE "/dev/dsp2"

if the cue device path is different on your system, you can either
a) change the #define in DBMix/dbfsd_src/dbaudio.h or
b) use the -a and -b command line options for dbfsd or
c) use the dbmixer options dialog and the "Reset Soundcard" options on the 
   dbmixer options menu.
d) use the -e option for dbfsd to multiplex master and cue output on the
   master out signal

2) To use cueing on a channel, use the dbmixer gui.  Click the "cue" button 
   to turn it off/on.  

3) Cue volume is unaffected by the channel gain level.  This is modeled after 
   mixers I have had experience with.  This means that the channel volume 
   could be zero, and the cue volume will still be at 100%.


Feature in the Next Release
===========================
DBPlaylist - a single playlist that will "talk" with multiple xmms
             sessions and cue songs for you. 
Network Layer - Because you all are just dying to ship audio through
             your home network from your PC to your hoe theater...
Icecast Support - Believe it or not, people want to use DBMix to run
             internet radio stations. Go Figure.
LADSPA effects stack for xmms