## IpatchDLSFile

IpatchDLSFile — DLS file object and functions

## Stability Level

Stable, unless otherwise indicated

## Synopsis

                        IpatchDLSFile;
    #define             IPATCH_DLS_FOURCC_DLS
    #define             IPATCH_DLS_FOURCC_COLH
    #define             IPATCH_DLS_FOURCC_WVPL
    #define             IPATCH_DLS_FOURCC_DWPL
    #define             IPATCH_DLS_FOURCC_PTBL
    #define             IPATCH_DLS_FOURCC_PATH
    #define             IPATCH_DLS_FOURCC_WAVE
    #define             IPATCH_DLS_FOURCC_LINS
    #define             IPATCH_DLS_FOURCC_INS
    #define             IPATCH_DLS_FOURCC_INSH
    #define             IPATCH_DLS_FOURCC_LRGN
    #define             IPATCH_DLS_FOURCC_RGN
    #define             IPATCH_DLS_FOURCC_RGNH
    #define             IPATCH_DLS_FOURCC_LART
    #define             IPATCH_DLS_FOURCC_ART1
    #define             IPATCH_DLS_FOURCC_WLNK
    #define             IPATCH_DLS_FOURCC_WSMP
    #define             IPATCH_DLS_FOURCC_VERS
    #define             IPATCH_DLS_FOURCC_RGN2
    #define             IPATCH_DLS_FOURCC_LAR2
    #define             IPATCH_DLS_FOURCC_ART2
    #define             IPATCH_DLS_FOURCC_CDL
    #define             IPATCH_DLS_FOURCC_DLID
    #define             IPATCH_DLS_FOURCC_INFO
    #define             IPATCH_DLS_FOURCC_FMT
    #define             IPATCH_DLS_FOURCC_DATA
    #define             IPATCH_DLS_FOURCC_IARL
    #define             IPATCH_DLS_FOURCC_IART
    #define             IPATCH_DLS_FOURCC_ICMS
    #define             IPATCH_DLS_FOURCC_ICMT
    #define             IPATCH_DLS_FOURCC_ICOP
    #define             IPATCH_DLS_FOURCC_ICRD
    #define             IPATCH_DLS_FOURCC_IENG
    #define             IPATCH_DLS_FOURCC_IGNR
    #define             IPATCH_DLS_FOURCC_IKEY
    #define             IPATCH_DLS_FOURCC_IMED
    #define             IPATCH_DLS_FOURCC_INAM
    #define             IPATCH_DLS_FOURCC_IPRD
    #define             IPATCH_DLS_FOURCC_ISBJ
    #define             IPATCH_DLS_FOURCC_ISFT
    #define             IPATCH_DLS_FOURCC_ISRC
    #define             IPATCH_DLS_FOURCC_ISRF
    #define             IPATCH_DLS_FOURCC_ITCH
    #define             IPATCH_DLS_VERS_SIZE
    #define             IPATCH_DLS_INSH_SIZE
    #define             IPATCH_DLS_RGNH_SIZE
    #define             IPATCH_DLS_RGNH_LAYER_SIZE
    #define             IPATCH_DLS_WLNK_SIZE
    #define             IPATCH_DLS_WSMP_HEADER_SIZE
    #define             IPATCH_DLS_WSMP_LOOP_SIZE
    #define             IPATCH_DLS_ART_HEADER_SIZE
    #define             IPATCH_DLS_CONN_SIZE
    #define             IPATCH_DLS_PTBL_HEADER_SIZE
    #define             IPATCH_DLS_POOLCUE_SIZE
    #define             IPATCH_DLS_WAVE_FMT_SIZE
    #define             IPATCH_DLS_DLID_SIZE
    #define             IPATCH_DLS_INSH_BANK_MASK
    #define             IPATCH_DLS_INSH_BANK_PERCUSSION
    #define             IPATCH_DLS_RGNH_OPTION_SELF_NON_EXCLUSIVE
    #define             IPATCH_DLS_WLNK_PHASE_MASTER
    #define             IPATCH_DLS_WLNK_MULTI_CHANNEL
    #define             IPATCH_DLS_WSMP_NO_TRUNCATION
    #define             IPATCH_DLS_WSMP_NO_COMPRESSION
    #define             IPATCH_DLS_WSMP_LOOP_FORWARD
    #define             IPATCH_DLS_WSMP_LOOP_RELEASE
    IpatchDLSFile *     ipatch_dls_file_new                 (void);

## Object Hierarchy

      GObject
       +----IpatchItem
             +----IpatchFile
                   +----IpatchDLSFile
                         +----IpatchGigFile

## Description

Object type for DLS files and other constants and functions dealing with them.

## Details

### IpatchDLSFile

    typedef struct _IpatchDLSFile IpatchDLSFile;

### IPATCH_DLS_FOURCC_DLS

    #define IPATCH_DLS_FOURCC_DLS   IPATCH_FOURCC ('D','L','S',' ')

### IPATCH_DLS_FOURCC_COLH

    #define IPATCH_DLS_FOURCC_COLH  IPATCH_FOURCC ('c','o','l','h')

### IPATCH_DLS_FOURCC_WVPL

    #define IPATCH_DLS_FOURCC_WVPL  IPATCH_FOURCC ('w','v','p','l')

### IPATCH_DLS_FOURCC_DWPL

    #define IPATCH_DLS_FOURCC_DWPL  IPATCH_FOURCC ('d','w','p','l')

### IPATCH_DLS_FOURCC_PTBL

    #define IPATCH_DLS_FOURCC_PTBL  IPATCH_FOURCC ('p','t','b','l')

### IPATCH_DLS_FOURCC_PATH

    #define IPATCH_DLS_FOURCC_PATH  IPATCH_FOURCC ('p','a','t','h')

### IPATCH_DLS_FOURCC_WAVE

    #define IPATCH_DLS_FOURCC_WAVE  IPATCH_FOURCC ('w','a','v','e')

### IPATCH_DLS_FOURCC_LINS

    #define IPATCH_DLS_FOURCC_LINS  IPATCH_FOURCC ('l','i','n','s')

### IPATCH_DLS_FOURCC_INS

    #define IPATCH_DLS_FOURCC_INS   IPATCH_FOURCC ('i','n','s',' ')

### IPATCH_DLS_FOURCC_INSH

    #define IPATCH_DLS_FOURCC_INSH  IPATCH_FOURCC ('i','n','s','h')

### IPATCH_DLS_FOURCC_LRGN

    #define IPATCH_DLS_FOURCC_LRGN  IPATCH_FOURCC ('l','r','g','n')

### IPATCH_DLS_FOURCC_RGN

    #define IPATCH_DLS_FOURCC_RGN   IPATCH_FOURCC ('r','g','n',' ')

### IPATCH_DLS_FOURCC_RGNH

    #define IPATCH_DLS_FOURCC_RGNH  IPATCH_FOURCC ('r','g','n','h')

### IPATCH_DLS_FOURCC_LART

    #define IPATCH_DLS_FOURCC_LART  IPATCH_FOURCC ('l','a','r','t')

### IPATCH_DLS_FOURCC_ART1

    #define IPATCH_DLS_FOURCC_ART1  IPATCH_FOURCC ('a','r','t','1')

### IPATCH_DLS_FOURCC_WLNK

    #define IPATCH_DLS_FOURCC_WLNK  IPATCH_FOURCC ('w','l','n','k')

### IPATCH_DLS_FOURCC_WSMP

    #define IPATCH_DLS_FOURCC_WSMP  IPATCH_FOURCC ('w','s','m','p')

### IPATCH_DLS_FOURCC_VERS

    #define IPATCH_DLS_FOURCC_VERS  IPATCH_FOURCC ('v','e','r','s')

### IPATCH_DLS_FOURCC_RGN2

    #define IPATCH_DLS_FOURCC_RGN2  IPATCH_FOURCC ('r','g','n','2')

### IPATCH_DLS_FOURCC_LAR2

    #define IPATCH_DLS_FOURCC_LAR2  IPATCH_FOURCC ('l','a','r','2')

### IPATCH_DLS_FOURCC_ART2

    #define IPATCH_DLS_FOURCC_ART2  IPATCH_FOURCC ('a','r','t','2')

### IPATCH_DLS_FOURCC_CDL

    #define IPATCH_DLS_FOURCC_CDL   IPATCH_FOURCC ('c','d','l',' ')

### IPATCH_DLS_FOURCC_DLID

    #define IPATCH_DLS_FOURCC_DLID  IPATCH_FOURCC ('d','l','i','d')

### IPATCH_DLS_FOURCC_INFO

    #define IPATCH_DLS_FOURCC_INFO  IPATCH_FOURCC ('I','N','F','O')

### IPATCH_DLS_FOURCC_FMT

    #define IPATCH_DLS_FOURCC_FMT   IPATCH_FOURCC ('f','m','t',' ')

### IPATCH_DLS_FOURCC_DATA

    #define IPATCH_DLS_FOURCC_DATA  IPATCH_FOURCC ('d','a','t','a')

### IPATCH_DLS_FOURCC_IARL

    #define IPATCH_DLS_FOURCC_IARL  IPATCH_FOURCC ('I','A','R','L')

### IPATCH_DLS_FOURCC_IART

    #define IPATCH_DLS_FOURCC_IART  IPATCH_FOURCC ('I','A','R','T')

### IPATCH_DLS_FOURCC_ICMS

    #define IPATCH_DLS_FOURCC_ICMS  IPATCH_FOURCC ('I','C','M','S')

### IPATCH_DLS_FOURCC_ICMT

    #define IPATCH_DLS_FOURCC_ICMT  IPATCH_FOURCC ('I','C','M','T')

### IPATCH_DLS_FOURCC_ICOP

    #define IPATCH_DLS_FOURCC_ICOP  IPATCH_FOURCC ('I','C','O','P')

### IPATCH_DLS_FOURCC_ICRD

    #define IPATCH_DLS_FOURCC_ICRD  IPATCH_FOURCC ('I','C','R','D')

### IPATCH_DLS_FOURCC_IENG

    #define IPATCH_DLS_FOURCC_IENG  IPATCH_FOURCC ('I','E','N','G')

### IPATCH_DLS_FOURCC_IGNR

    #define IPATCH_DLS_FOURCC_IGNR  IPATCH_FOURCC ('I','G','N','R')

### IPATCH_DLS_FOURCC_IKEY

    #define IPATCH_DLS_FOURCC_IKEY  IPATCH_FOURCC ('I','K','E','Y')

### IPATCH_DLS_FOURCC_IMED

    #define IPATCH_DLS_FOURCC_IMED  IPATCH_FOURCC ('I','M','E','D')

### IPATCH_DLS_FOURCC_INAM

    #define IPATCH_DLS_FOURCC_INAM  IPATCH_FOURCC ('I','N','A','M')

### IPATCH_DLS_FOURCC_IPRD

    #define IPATCH_DLS_FOURCC_IPRD  IPATCH_FOURCC ('I','P','R','D')

### IPATCH_DLS_FOURCC_ISBJ

    #define IPATCH_DLS_FOURCC_ISBJ  IPATCH_FOURCC ('I','S','B','J')

### IPATCH_DLS_FOURCC_ISFT

    #define IPATCH_DLS_FOURCC_ISFT  IPATCH_FOURCC ('I','S','F','T')

### IPATCH_DLS_FOURCC_ISRC

    #define IPATCH_DLS_FOURCC_ISRC  IPATCH_FOURCC ('I','S','R','C')

### IPATCH_DLS_FOURCC_ISRF

    #define IPATCH_DLS_FOURCC_ISRF  IPATCH_FOURCC ('I','S','R','F')

### IPATCH_DLS_FOURCC_ITCH

    #define IPATCH_DLS_FOURCC_ITCH  IPATCH_FOURCC ('I','T','C','H')

### IPATCH_DLS_VERS_SIZE

    #define IPATCH_DLS_VERS_SIZE        8 /* version chunk size */

### IPATCH_DLS_INSH_SIZE

    #define IPATCH_DLS_INSH_SIZE        12 /* instrument header chunk size */

### IPATCH_DLS_RGNH_SIZE

    #define IPATCH_DLS_RGNH_SIZE        12 /* region header size */

### IPATCH_DLS_RGNH_LAYER_SIZE

    #define IPATCH_DLS_RGNH_LAYER_SIZE  14 /* with optional Layer field */

### IPATCH_DLS_WLNK_SIZE

    #define IPATCH_DLS_WLNK_SIZE        12 /* wave link chunk size */

### IPATCH_DLS_WSMP_HEADER_SIZE

    #define IPATCH_DLS_WSMP_HEADER_SIZE 20	/* sample info chunk without loops */

### IPATCH_DLS_WSMP_LOOP_SIZE

    #define IPATCH_DLS_WSMP_LOOP_SIZE   16 /* sample loop size */

### IPATCH_DLS_ART_HEADER_SIZE

    #define IPATCH_DLS_ART_HEADER_SIZE  8 /* articulator header size */

### IPATCH_DLS_CONN_SIZE

    #define IPATCH_DLS_CONN_SIZE        12 /* connection block size */

### IPATCH_DLS_PTBL_HEADER_SIZE

    #define IPATCH_DLS_PTBL_HEADER_SIZE 8 /* default pool table header size */

### IPATCH_DLS_POOLCUE_SIZE

    #define IPATCH_DLS_POOLCUE_SIZE     4 /* size of a pool cue offset */

### IPATCH_DLS_WAVE_FMT_SIZE

    #define IPATCH_DLS_WAVE_FMT_SIZE    16	/* PCM wave fmt chunk size */

### IPATCH_DLS_DLID_SIZE

    #define IPATCH_DLS_DLID_SIZE        16 /* DLID unique ID chunk size */

### IPATCH_DLS_INSH_BANK_MASK

    #define IPATCH_DLS_INSH_BANK_MASK 0x3FFF

### IPATCH_DLS_INSH_BANK_PERCUSSION

    #define IPATCH_DLS_INSH_BANK_PERCUSSION (1 << 31)

### IPATCH_DLS_RGNH_OPTION_SELF_NON_EXCLUSIVE

    #define IPATCH_DLS_RGNH_OPTION_SELF_NON_EXCLUSIVE 0x0001

### IPATCH_DLS_WLNK_PHASE_MASTER

    #define IPATCH_DLS_WLNK_PHASE_MASTER  0x0001

### IPATCH_DLS_WLNK_MULTI_CHANNEL

    #define IPATCH_DLS_WLNK_MULTI_CHANNEL 0x0002

### IPATCH_DLS_WSMP_NO_TRUNCATION

    #define IPATCH_DLS_WSMP_NO_TRUNCATION  0x0001

### IPATCH_DLS_WSMP_NO_COMPRESSION

    #define IPATCH_DLS_WSMP_NO_COMPRESSION 0x0002

### IPATCH_DLS_WSMP_LOOP_FORWARD

    #define IPATCH_DLS_WSMP_LOOP_FORWARD  0x0000

### IPATCH_DLS_WSMP_LOOP_RELEASE

    #define IPATCH_DLS_WSMP_LOOP_RELEASE  0x0001

### ipatch_dls_file_new ()

    IpatchDLSFile *     ipatch_dls_file_new                 (void);

Create a new DLS file object.

Returns : | New DLS file object (derived from IpatchFile) with a reference count of 1. Caller owns the reference and removing it will destroy the item.