<commit_before>node-liveosc
============

node.js integration with Ableton Live via LiveOSC

## Usage
Basic usage is as follows:

```javascript
// load LiveOSC class
var LiveOSC = require('liveosc');

// create new instance of LiveOSC, starts OSC listener
var liveosc = new LiveOSC({debug: true});

// triggered when Live is loaded and ready
liveosc.song.on('ready', function () {

  // start the song playing
  liveosc.song.play();
});
```

### Song Structure
The LiveOSC object has a song property that contains a full object map of the current Live set.  The organization of the object is as follows:

#### Song
```javascript
{
  tempo: 120.0,
  tracks: [{Track}, {Track}, ...],
  returns: [{Return}, {Return}, ...],
  devices: [{Device}, {Device}, ...],
  volume: 0.0,
  pan: 0.0,
  scene: 0,
  beat: 0,
  playing: 1
}
```

#### Track
```javascript
{
  id: 0,
  name: '1-MIDI',
  clips: [{Clip}, {Clip}, ...],
  sends: [{id: 0, value: 1.0}, {id: 1, value: 1.0}, ...],
  devices: [{Device}, {Device}],
  audio: 0,
  solo: 0,
  mute: 0,
  arm: 0,
  volume: 0,
  pan: 0,
  numScenes: 0
}
```

#### Clip
```javascript
{
  id: 0,
  name: '',
  track: {Track},
  state: 0,
  coarse: 0,
  fine: 0,
  loopstart: 0,
  loopend: 0,
  loopstate: 0,
  warping: 0,
  length: 0
}
```

#### Return
```javascript
{
  id: 0,
  name: 'A-Reverb',
  sends: [{id: 0, value: 1.0}, {id: 1, value: 1.0}, ...],
  devices: [{Device}, {Device}],
  solo: 0,
  mute: 0,
  volume: 0,
  pan: 0
}```

#### Device
```javascript
{
  id: 0,
  name: 'Reverb',
  track: {Track},
  type: 'return',
  params: [
    {
      id: 0,
      value: 1,
      name: 'Device On',
      min: 0,
      max: 1
    },
    {
      id: 1,
      value: 0.5555555820465088,
      name: 'PreDelay',
      min: 0,<commit_msg>fixed readme<commit_after>node-liveosc
============

node.js integration with Ableton Live via LiveOSC

## Usage
Basic usage is as follows:

```javascript
// load LiveOSC class
var LiveOSC = require('liveosc');

// create new instance of LiveOSC, starts OSC listener
var liveosc = new LiveOSC({debug: true});

// triggered when Live is loaded and ready
liveosc.song.on('ready', function () {

  // start the song playing
  liveosc.song.play();
});
```

### Song Structure
The LiveOSC object has a song property that contains a full object map of the current Live set.  The organization of the object is as follows:

#### Song
```javascript
{
  tempo: 120.0,
  tracks: [{Track}, {Track}, ...],
  returns: [{Return}, {Return}, ...],
  devices: [{Device}, {Device}, ...],
  volume: 0.0,
  pan: 0.0,
  scene: 0,
  beat: 0,
  playing: 1
}
```

#### Track
```javascript
{
  id: 0,
  name: '1-MIDI',
  clips: [{Clip}, {Clip}, ...],
  sends: [{id: 0, value: 1.0}, {id: 1, value: 1.0}, ...],
  devices: [{Device}, {Device}],
  audio: 0,
  solo: 0,
  mute: 0,
  arm: 0,
  volume: 0,
  pan: 0,
  numScenes: 0
}
```

#### Clip
```javascript
{
  id: 0,
  name: '',
  track: {Track},
  state: 0,
  coarse: 0,
  fine: 0,
  loopstart: 0,
  loopend: 0,
  loopstate: 0,
  warping: 0,
  length: 0
}
```

#### Return
```javascript
{
  id: 0,
  name: 'A-Reverb',
  sends: [{id: 0, value: 1.0}, {id: 1, value: 1.0}, ...],
  devices: [{Device}, {Device}],
  solo: 0,
  mute: 0,
  volume: 0,
  pan: 0
}
```

#### Device
```javascript
{
  id: 0,
  name: 'Reverb',
  track: {Track},
  type: 'return',
  params: [
    {
      id: 0,
      value: 1,
      name: 'Device On',
      min: 0,
      max: 1
    },
    {
      id: 1,
      value: 0.5555555820465088,
      name: 'PreDelay',
      min: 0,
{'fraction_non_alphanumeric': 0.19943502824858758, 'fraction_numerical': 0.03954802259887006, 'mean_word_length': 2.763018065887354, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 2, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7068386', 'n_tokens_mistral': 1503, 'n_tokens_neox': 1375, 'n_words': 426}