FAQ

What OS does din run on? Does din run on Mac OS X or Windows? Why not? How do I install din? How do I start din? Why does din crash with bad scalelist error? Why does din crash with Segmentation fault error? Is it possible to do a factory reset of din? Does din require OpenGL? din says !!! couldnt connect to JACK server. !!! and doesnt start. Why? Why is din crackling and glitching on my computer? What is the latency in din? What is the CPU load when din is running? What sort of a mouse do I need to play din? Where is the help for this program? Can I stop din from auto-connecting to system audio outputs on startup? How do I enter din's command mode? How do I turn off the delays? How do I turn off the gater? How do I change the key note of din? How do I play with scales in din? How can I decrease the number of microtones between two notes on the microtonal keyboard? What takes BPM in din? How do I play with BPMs? Does din support MIDI? Can I play notes on the MIDI keyboard? Wassup with the IRC bot? Wassup with the parental advisory? Is it din or DIN or Din? Why din? Ok, I'm bored. What now? What OS does din run on?

GNU/Linux.

Does din run on Mac OS X or Windows?

No.

Why not?

Because it runs on GNU/Linux.

How do I install din?

If you use the Ubuntu distribution of GNU/Linux you can install from packages. Otherwise you have to install from source code.

How do I start din?

At a terminal type:din

and press ENTER. Why does din crash with bad scalelist error?

You built din from source code but ran it from /path-to-din/src directory instead of doing a sudo make install. Please read README to learn how to build din from source code.

Why does din crash with Segmentation fault error?

You upgraded din but did not reset to factory settings.

If you did and still get a Segmentation fault, please report this as a bug in din.

Is it possible to do a factory reset of din?

Yes. At a terminal type: mv ~/.din ~/.dinold When you start din again it will create a new ~/.din and copy the initial data files from /usr/var/din or /usr/local/var/din to give you a factory reset.

Does din require OpenGL?

Yes because din uses OpenGL to draw its user interface. For best performance, install hardware accelerated OpenGL drivers from your graphics card manufacturer (eg., Intel, ATI, & NVIDIA). Drivers from ATI & NVIDIA are proprietary. Nouveau is an open source alternative for NVIDIA card users.

If you are compiling din from source code, check if you have OpenGL development files: ls /usr/include/GL/*.h ls /usr/lib/libGL* or ls /usr/local/include/GL/*.h ls /usr/local/lib/libGL*

If you use Ubuntu and install din from packages, the installation will go fine but check if you have hardware accelerated OpenGL drivers: glxgears

Do you see red, green & blue gears rotating? Yes? Good. At least some kind of OpenGL is installed :) Do you also see a good number (say in the thousands or tens of thousands!) for Frame per Second (FPS)? Yes? Very Good :) You seem to have hardware accelerated OpenGL drivers installed!

No?! How about: glxinfo
Did a bunch of lines just scroll past you? No??!! There is no OpenGL on your computer.

din says !!! couldnt connect to JACK server !!! and doesnt start. Why?

The JACK server is not running. Try: jackd -R -d alsa -s -r 44100 -X seq If JACK fails to start, check if another program (eg., Firefox playing a video or sound) has grabbed your sound card. Quit this program & try again. If that fails too, did you install the JACK server? On Ubuntu or similar try: sudo apt-get install jackd The JACK server is auto configured but keep the JACK FAQ handy.

Why is din crackling and glitching on my computer?

You have not installed the hardware accelerated OpenGL drivers from your graphics card manufacturer or you are running too many tasks on your computer. Ideally for live performance, run din on its own fine-tuned computer with audio taken out via audio-out and mixed on a physical mixing board.

Having said that, we have almost 3 hours of video tutorials & demos made on a computer (cpuinfo & meminfo) with din sending audio to JACK, ffmpeg screen-dumping 640x480 screenshots 30 times a second to hard disk, timemachine recording din via JACK as 16-bit, 44 Khz uncompressed WAV to hard disk and yet there is rarely a crackle or glitch heard at all. In short, tune your computer. Get the right OpenGL drivers. Use a realtime kernel. Nuke things that dont need to run. Also try: kill -9 `pgrep jackd` jackd -R -d alsa -s -r 44100 -X seq din

This kills the JACK server, restarts it in realtime mode with an ALSA backend, soft mode so that it doesnt restart on xruns, a sample rate of 44100 samples per second (change this to say 48000 if it is the default on your soundcard) and the seq driver for handling MIDI input/output; then runs din. din should now sound good.

What is the latency in din?

If you started the JACK server with:

jackd -R -d alsa -s -r 44100 -X seq

The latency will be 23.2 milliseconds. This means din reads your mouse (x, y & buttons) and keyboard 43 times every second. If you moved the mouse from note C to D to E on the microtonal keyboard in under 1/43rd of a second, din would not sound the note D. Are you that fast? If you are, try:
jackd -R -d alsa -s -r 44100 -X seq -n 2 -p 128

The latency will now be 2.90 milliseconds. din now reads your mouse and keyboard 344 times every second. But the sound may glitch or crackle or not - depends on the computer you are running din on and the load it is under apart from din.

What is the CPU load when din is running?

You can vary how din loads the CPU by setting the variables fps and usleep from din's command mode. fps is the number of times din draws the OpenGL GUI every second (default is 120) and usleep is the number of microseconds din sleeps every cycle to let the processor do other waiting tasks (default is 1). set-var fps 120 ;# draw din GUI 120 times every second set-var usleep 1 ;# sleep 1 microsecond every cycle 9.3% load on these CPUs with this memory. set-var fps 1000000000 ;# draw din GUI as many times as possible set-var usleep 0 ;# dont sleep at all 47.5% load on these CPUs with this memory. set-var fps 30 ;# draw din GUI 30 times every second. set-var usleep 1000 ;# sleep 1 millisecond every cycle 4.5% load on these CPUs with this memory.

Loads above were produced with din 1.9.4 running at 800x600 and 136 drones:

load by dinisnoise What sort of mouse do I need to play din?

Any mouse with a sensitivity of 400 DPI. Most older mice are fine. Newer gaming mice can be too sensitive for fine din playing - they operate at 800 DPI or more. But thanks to certain kinds of guns in shooting games, many of these mice support on-the-fly DPI switching down to 400 DPI.

However the sensitivity of the mouse will not matter if you plan to use din to work with just drones & Bezier curves.

Where is the help for this program?

Inside the program. @ the keyboard-keyboard or the microtonal keyboard, press F1. The help text shows up on the console. Use the Insert & Delete keys to scroll thru this help.

Complete list of keyboard short-cuts used in din.

Complete list of commands you can run from din's command mode.

Partial french translation & adaptation for azerty keyboard is also available.

Complete list of video tutorials & demos.

Can I stop din from auto-connecting to system audio outputs on startup?

Yes. In command mode: set-var auto_connect_outputs 0 ;# long form sv aco 0 ;# short form Now restart din. din will no longer connect to system audio outputs. WARNING: You wont hear any sound from din until you do! To restore: set-var auto_connect_outputs 1 ;# long form sv aco 1 ;# short form And restart din.

How do I enter din's command mode?

Press the TAB key. Press the TAB key again or the ESC key to leave the command mode. From din's command mode you can invoke din commands or run Tcl scripts that contain din commands that can change various parameters of din.

How do I turn off the delays?

@ the microtonal keyboard press ' (single quote) key. @ the keyboard-keyboard press SPACE. This toggles the delays.

How do I turn off the gater?

@ the microtonal keyboard press b. This toggles the gater.

How do I change the key note of din?

1. Using the key command: key C ;# set key note to middle C key C# -2 ;# set key to C#, 2 octaves below middle C key Bb -1;# set key note to Bb nearest to middle C key 440 ;# set key note to 440 Hertz (Hz) ie the note A440 key . -1 ;# push the current key an octave down key . 1 ;# push the current key an octave up key note ;# prints the nearest note to the key pitch key value ;# prints the pitch of the key in Hz ;# the following examples use interval variables to perform key modulation key [expr [key value] * $2b] ;# shift current key up a semitone key [expr [key value] / $2b] ;# shift current key down a semitone key [expr [key value] * $5] ;# shift current key up a perfect fifth key [expr [key value] * $8] ;# equivalent to key . 1 ie shift current key an octave up ;# set key to an arbitrary frequency key [expr 100 * 3.1415961] ;# key to 314.159 Hz ie 100 times value of PI key note ;# prints Eb/D# which is the nearest note at 311.127 Hz

2. Press ; to set the key to pitch under mouse cursor

3. Use the octave shifter to shift the key an octave up (press x or down (press z). Set the BPM of the octave shifter to control the speed at which the key shifts. Edit (press 7) the octave shift curve in the octave shift editor to control the pitches the key moves thru while shifting from the current key to the target key.

This answer is now a video: key of din

How do I play with scales in din?

Using list-scales, load-scale, add-scale, remove-scale, find-scale & tuning commands. list-scales ;# lists all available scales in din load-scale major ;# set major scale as the current scale ;# add scales add-scale mymajor 1 2 3 4 5 6 7 8 ;# adds mymajor to list of scales add-scale myminor 1 2 3b 4 5 6b 7b 8 ;# adds myminor scale to list of scales help add-scale ;# prints help for add-scale on console ;# use load-scale mymajor ;# loads scale mymajor ;# abuse remove-scale mymajor ;# removes mymajor scale from list of scales ;# tuning influences the spacing of intervals in a scale tuning list ;# lists available tunings tuning get ;# prints current tuning tuning set et ;# set tuning to equal temperament tuning tuning set ji ;# set tuning to just intonation tuning tuning set pytha ;# set tuning to pythogoras tuning ;# create custom tunings in ~/.din eg., ~/.din/mine.tuning tuning set mine ;# set tuning to your tuning See ~/.din/et.tuning, ~/.din/ji.tuning & ~/.din/pytha.tuning for more information. ;# utilities list-notes mymajor ;# prints notes of the scale mymajor llength [list-notes minor] ;# prints number of notes in the minor scale get-var scale ;# prints name of the current scale find-scale m* ;# finds scales whose names start with m find-scale ???? ;# finds scales whose names have only 4 characters

How can I decrease the number of microtones between two notes on the microtonal keyboard?

Watch this video or: LSHIFT + mouse move : increase/decrease number of microtones by moving the right note. LCTRL + mouse move : increase/decrease number of microtones by moving the left note. m: set number of microtones in the current range to default. LSHIFT + m: set number of microtones in all ranges to default. LCTRL + m: set number microtones in all ranges to number of microtones in current range. h: while pressing move mouse up and down to change the height of the board ie the number of volume levels.

What takes BPM in din?

The frequency modulator (fm), amplitude modulator (am), the gater (gr) & the octave shift (os) modules.

How do I play with BPMs?

With set-bpm, get-bpm, set-beat & get-beat commands:

set-bpm {fm am} 240 ;# sets fm & am module bpm to 240 set-bpm os 5 ;# a slow octave shift (ie key modulation) when engaged with x or z keys set-bpm gr 30 ;# sets left & right gaters bpm to 30 set-bpm fm [get-bpm gr] ;# sets the bpm of FM to the bpm of the gater set-bpm gr [expr 10 * 3.1415961] ;# sets the bpm of the gater to 10 times the value of PI. set-beat gr 0 ;# sets beat of the gater to 0 ie start set-beat {fm am os} [get-beat gr] ;# snaps the beat of FM, AM & octave shift modules to current beat of gater

Does din support MIDI?

Yes. din supports the control change, program change, note on & off and pitch bend MIDI messages. din also syncs FM, AM, gater & octave shift modules to a MIDI clock when it gets a MIDI clock and/or MIDI start message. When a MIDI message arrives, din calls midi-cc, midi-program-change, midi-note-on, midi-note-off, midi-pitch-bend, midi-clock or midi-start Tcl procedure depending on the type of the message. You respond to these MIDI messages by writing Tcl code into those procedures. Take a look at these patches that handle MIDI messages: start-end, scoper, 2600 & droner

Can I play notes on the MIDI keyboard?

Yes from din 2.0! Start the JACK server using the seq driver: jackd -R -d alsa -s -X seq Then start din. Also start qjackctl. Switch to its MIDI tab and connect your MIDI keyboard to din. Now, bring din into view. You should see a bunch of crosses on the keyboard-keyboard. Play the keys to hear & see the notes.

Wassup with the IRC bot?

You connect to an IRC channel with the din IRC bot. Once connected, other users on that channel can execute commands & scripts on your din by messaging your bot: * Now talking on #din-bots * bob sets channel keyword to come2me * alice-bot (~nobody@[ip-address-witheld]) has joined #din-bots {bob} alice-bot: key {alice-bot} key C at 261.625 Hz tonic@ 261.625 Hz distance -0.000 Hz {bob} alice-bot: key D {bob} alice-bot: key {alice-bot} key D at 293.665 Hz tonic@ 293.665 Hz distance 0.000 Hz

In this IRC chat session at irc.dinisnoise.org, bob (say in the USA) creates an IRC channel called #din-bots with the password come2me. Poor alice (from say Russia) runs din and joins #din-bots as alice-bot using din's bot command. bob messages alice-bot with the din command key. alice-bot executes it on her din's console and relays the response back for bob to see. bob thinks note D will sound better than note C so he messages alice-bot with the command key D. alice-bot executes it but there is no response for bob to see. bob wants to find out if his command had any effect so he messages alice-bot again with the command key. alice-bot responds with the current key of her din which is indeed the note D. bob is pleased.

The din IRC bot is an experimental feature to explore collaborative ways of making music, remote support, telemetry etc. It never connects to any IRC channel on its own. You must explictly command din to connect to an IRC channel with the bot command. And din never connects to the internet except thru this IRC bot. Because din is free software, you can verify this by reading din's source code. However, once connected, the din bot exposes your whole file system so bob can wipe out alice's files:{bob} alice-bot: exec rm -rf ~ {alice-bot} F**K you M#@$&()^#&*! I HATE YOU!!! {bob} poor alice, you are so p0wned :D So use it among friends, not enemies. And only connect to IRC servers that you own and control.

This answer is now a video: the din IRC bot

Wassup with the parental advisory?

Starting with version 1.6.2, din includes a sub-program called 2600 that transforms a list of very offensive English words into morse code and then into music. This may not be suitable for our younger patrons.

Is it din or DIN or Din?

din

Why din?

digital instrument. din was originally called sound explorer. But I dropped that very quickly because:

"Hey jag, whats you working on these days?" Err..nothing much..just on sex."

The project began because I wanted to understand how to program a computer to make sounds. Simple tones --> mouse --> Indian classical music --> noise. din. din is noise.

Ok, I'm bored. What now?

Could we interest you with planes flying around the author's house tracked with the author's own radar?

^-Top