1670 |
lscp_status_t lscp_map_midi_instrument ( lscp_client_t *pClient, lscp_midi_instrument_t *pMidiInstr, const char *pszEngineName, const char *pszFileName, int iInstrIndex, float fVolume, lscp_load_mode_t load_mode, const char *pszName ) |
lscp_status_t lscp_map_midi_instrument ( lscp_client_t *pClient, lscp_midi_instrument_t *pMidiInstr, const char *pszEngineName, const char *pszFileName, int iInstrIndex, float fVolume, lscp_load_mode_t load_mode, const char *pszName ) |
1671 |
{ |
{ |
1672 |
char szQuery[LSCP_BUFSIZ]; |
char szQuery[LSCP_BUFSIZ]; |
1673 |
|
|
1674 |
if (pMidiInstr->bank_msb < 0 || pMidiInstr->bank_msb > 127) |
if (pMidiInstr->bank_msb < 0 || pMidiInstr->bank_msb > 127) |
1675 |
return LSCP_FAILED; |
return LSCP_FAILED; |
1676 |
if (pMidiInstr->bank_lsb < 0 || pMidiInstr->bank_lsb > 127) |
if (pMidiInstr->bank_lsb < 0 || pMidiInstr->bank_lsb > 127) |
1679 |
return LSCP_FAILED; |
return LSCP_FAILED; |
1680 |
if (pszEngineName == NULL || pszFileName == NULL) |
if (pszEngineName == NULL || pszFileName == NULL) |
1681 |
return LSCP_FAILED; |
return LSCP_FAILED; |
1682 |
|
|
1683 |
if (fVolume < 0.0f) |
if (fVolume < 0.0f) |
1684 |
fVolume = 1.0f; |
fVolume = 1.0f; |
1685 |
|
|
1686 |
sprintf(szQuery, "MAP MIDI_INSTRUMENT %d %d %d %s '%s' %d %g", |
sprintf(szQuery, "MAP MIDI_INSTRUMENT %d %d %d %s '%s' %d %g", |
1687 |
pMidiInstr->bank_msb, pMidiInstr->bank_lsb, pMidiInstr->program, |
pMidiInstr->bank_msb, pMidiInstr->bank_lsb, pMidiInstr->program, |
1688 |
pszEngineName, pszFileName, iInstrIndex, fVolume); |
pszEngineName, pszFileName, iInstrIndex, fVolume); |
1689 |
|
|
1690 |
switch (load_mode) { |
switch (load_mode) { |
1691 |
case LSCP_LOAD_PERSISTENT: |
case LSCP_LOAD_PERSISTENT: |
1692 |
strcat(szQuery, " PERSISTENT"); |
strcat(szQuery, " PERSISTENT"); |
1695 |
strcat(szQuery, " ON_DEMAND_HOLD"); |
strcat(szQuery, " ON_DEMAND_HOLD"); |
1696 |
break; |
break; |
1697 |
case LSCP_LOAD_ON_DEMAND: |
case LSCP_LOAD_ON_DEMAND: |
1698 |
strcat(szQuery, " ON_DEMAND_HOLD"); |
strcat(szQuery, " ON_DEMAND"); |
1699 |
break; |
break; |
1700 |
case LSCP_LOAD_DEFAULT: |
case LSCP_LOAD_DEFAULT: |
1701 |
default: |
default: |
1702 |
break; |
break; |
1703 |
} |
} |
1704 |
|
|
1705 |
if (pszName) |
if (pszName) |
1706 |
sprintf(szQuery + strlen(szQuery), " '%s'", pszName); |
sprintf(szQuery + strlen(szQuery), " '%s'", pszName); |
1707 |
|
|
1708 |
strcat(szQuery, "\r\n"); |
strcat(szQuery, "\r\n"); |
1709 |
|
|
1710 |
return lscp_client_query(pClient, szQuery); |
return lscp_client_query(pClient, szQuery); |
1711 |
} |
} |
1712 |
|
|
1816 |
const char *pszCrlf = "\r\n"; |
const char *pszCrlf = "\r\n"; |
1817 |
char *pszToken; |
char *pszToken; |
1818 |
char *pch; |
char *pch; |
1819 |
|
|
1820 |
if (pMidiInstr->bank_msb < 0 || pMidiInstr->bank_msb > 127) |
if (pMidiInstr->bank_msb < 0 || pMidiInstr->bank_msb > 127) |
1821 |
return NULL; |
return NULL; |
1822 |
if (pMidiInstr->bank_lsb < 0 || pMidiInstr->bank_lsb > 127) |
if (pMidiInstr->bank_lsb < 0 || pMidiInstr->bank_lsb > 127) |
1823 |
return NULL; |
return NULL; |
1824 |
if (pMidiInstr->program < 0 || pMidiInstr->program > 127) |
if (pMidiInstr->program < 0 || pMidiInstr->program > 127) |
1825 |
return NULL; |
return NULL; |
1826 |
|
|
1827 |
// Lock this section up. |
// Lock this section up. |
1828 |
lscp_mutex_lock(pClient->mutex); |
lscp_mutex_lock(pClient->mutex); |
1829 |
|
|
1830 |
pInstrInfo = &(pClient->midi_instrument_info); |
pInstrInfo = &(pClient->midi_instrument_info); |
1831 |
lscp_midi_instrument_info_reset(pInstrInfo); |
lscp_midi_instrument_info_reset(pInstrInfo); |
1832 |
|
|
1833 |
sprintf(szQuery, "GET MIDI_INSTRUMENT INFO %d %d %d\r\n", |
sprintf(szQuery, "GET MIDI_INSTRUMENT INFO %d %d %d\r\n", |
1834 |
pMidiInstr->bank_msb, pMidiInstr->bank_lsb, pMidiInstr->program); |
pMidiInstr->bank_msb, pMidiInstr->bank_lsb, pMidiInstr->program); |
1835 |
if (lscp_client_call(pClient, szQuery, 1) == LSCP_OK) { |
if (lscp_client_call(pClient, szQuery, 1) == LSCP_OK) { |
1886 |
} |
} |
1887 |
} |
} |
1888 |
else pInstrInfo = NULL; |
else pInstrInfo = NULL; |
1889 |
|
|
1890 |
// Unlock this section down. |
// Unlock this section down. |
1891 |
lscp_mutex_unlock(pClient->mutex); |
lscp_mutex_unlock(pClient->mutex); |
1892 |
|
|
1893 |
return pInstrInfo; |
return pInstrInfo; |
1894 |
} |
} |
1895 |
|
|