/[svn]/liblscp/trunk/examples/example_server.c
ViewVC logotype

Diff of /liblscp/trunk/examples/example_server.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 963 by capela, Sun Dec 3 18:30:04 2006 UTC revision 985 by capela, Mon Dec 18 16:42:33 2006 UTC
# Line 31  Line 31 
31  static WSADATA _wsaData;  static WSADATA _wsaData;
32  #endif  #endif
33    
34    
35  ////////////////////////////////////////////////////////////////////////  ////////////////////////////////////////////////////////////////////////
36    
37  lscp_status_t server_callback ( lscp_connect_t *pConnect, const char *pchBuffer, int cchBuffer, void *pvData )  lscp_status_t server_callback ( lscp_connect_t *pConnect, const char *pchBuffer, int cchBuffer, void *pvData )
# Line 43  lscp_status_t server_callback ( lscp_con Line 44  lscp_status_t server_callback ( lscp_con
44          static int iSamplerChannel = 0;          static int iSamplerChannel = 0;
45          static int iAudioDevice = 0;          static int iAudioDevice = 0;
46          static int iMidiDevice  = 0;          static int iMidiDevice  = 0;
47            static int iMidiMaps = 0;
48          static int iMidiInstruments = 0;          static int iMidiInstruments = 0;
49    
50          if (pchBuffer == NULL) {          if (pchBuffer == NULL) {
# Line 417  lscp_status_t server_callback ( lscp_con Line 419  lscp_status_t server_callback ( lscp_con
419                          sprintf(szTemp, "%d\r\n", iMidiInstruments);                          sprintf(szTemp, "%d\r\n", iMidiInstruments);
420                          pszResult = szTemp;                          pszResult = szTemp;
421                  }                  }
422                  if (lscp_parser_test2(&tok, "MIDI_INSTRUMENT", "INFO")) {                  else if (lscp_parser_test(&tok, "MIDI_INSTRUMENT_MAPS")) {
423                            // Get the total count of MIDI instrument maps:
424                            // GET MIDI_INSTRUMENT_MAPS
425                            sprintf(szTemp, "%d\r\n", iMidiMaps);
426                            pszResult = szTemp;
427                    }
428                    else if (lscp_parser_test2(&tok, "MIDI_INSTRUMENT_MAP", "INFO")) {
429                          // Getting information about a MIDI instrument map entry:                          // Getting information about a MIDI instrument map entry:
430                          // GET MIDI_INSTRUMENT INFO <midi-bank-msb> <midi-bank-lsb> <midi-prog>                          // GET MIDI_INSTRUMENT_MAP INFO <midi-map>
431                            strcpy(szTemp, "NAME: ");
432                            switch (lscp_parser_nextint(&tok)) {
433                            case 0:
434                                    strcat(szTemp, "Chromatic\r\n");
435                                    break;
436                            case 1:
437                                    strcat(szTemp, "Drum Kits\r\n");
438                                    break;
439                            }
440                            strcat(szTemp, ".\r\n");
441                            pszResult = szTemp;
442                    }
443                    else if (lscp_parser_test2(&tok, "MIDI_INSTRUMENT", "INFO")) {
444                            // Getting information about a MIDI instrument map entry:
445                            // GET MIDI_INSTRUMENT INFO <midi-map> <midi-bank> <midi-prog>
446                          pszResult = "NAME: DummyName\r\n"                          pszResult = "NAME: DummyName\r\n"
447                                                  "ENGINE_NAME: DummyEngine\r\n"                                                  "ENGINE_NAME: DummyEngine\r\n"
448                                                  "INSTRUMENT_FILE: DummyInstrument.gig\r\n"                                                  "INSTRUMENT_FILE: DummyInstrument.gig\r\n"
# Line 435  lscp_status_t server_callback ( lscp_con Line 458  lscp_status_t server_callback ( lscp_con
458                  if (lscp_parser_test(&tok, "CHANNELS")) {                  if (lscp_parser_test(&tok, "CHANNELS")) {
459                          // Getting all created sampler channel list.                          // Getting all created sampler channel list.
460                          // LIST CHANNELS                          // LIST CHANNELS
461                            szTemp[0] = (char) 0;
462                          for (i = 0; i < iSamplerChannel && strlen(szTemp) < sizeof(szTemp) - 8; i++) {                          for (i = 0; i < iSamplerChannel && strlen(szTemp) < sizeof(szTemp) - 8; i++) {
463                                  if (i > 0)                                  if (i > 0)
464                                          strcat(szTemp, ",");                                          strcat(szTemp, ",");
# Line 461  lscp_status_t server_callback ( lscp_con Line 485  lscp_status_t server_callback ( lscp_con
485                  else if (lscp_parser_test(&tok, "AUDIO_OUTPUT_DEVICES")) {                  else if (lscp_parser_test(&tok, "AUDIO_OUTPUT_DEVICES")) {
486                          // Getting all created audio output device list.                          // Getting all created audio output device list.
487                          // LIST AUDIO_OUTPUT_DEVICES                          // LIST AUDIO_OUTPUT_DEVICES
488                            szTemp[0] = (char) 0;
489                          for (i = 0; i < iAudioDevice && strlen(szTemp) < sizeof(szTemp) - 8; i++) {                          for (i = 0; i < iAudioDevice && strlen(szTemp) < sizeof(szTemp) - 8; i++) {
490                                  if (i > 0)                                  if (i > 0)
491                                          strcat(szTemp, ",");                                          strcat(szTemp, ",");
# Line 472  lscp_status_t server_callback ( lscp_con Line 497  lscp_status_t server_callback ( lscp_con
497                  else if (lscp_parser_test(&tok, "MIDI_INPUT_DEVICES")) {                  else if (lscp_parser_test(&tok, "MIDI_INPUT_DEVICES")) {
498                          // Getting all created MID input device list.                          // Getting all created MID input device list.
499                          // LIST MIDI_INPUT_DEVICES                          // LIST MIDI_INPUT_DEVICES
500                            szTemp[0] = (char) 0;
501                          for (i = 0; i < iMidiDevice && strlen(szTemp) < sizeof(szTemp) - 8; i++) {                          for (i = 0; i < iMidiDevice && strlen(szTemp) < sizeof(szTemp) - 8; i++) {
502                                  if (i > 0)                                  if (i > 0)
503                                          strcat(szTemp, ",");                                          strcat(szTemp, ",");
# Line 483  lscp_status_t server_callback ( lscp_con Line 509  lscp_status_t server_callback ( lscp_con
509                  else if (lscp_parser_test(&tok, "MIDI_INSTRUMENTS")) {                  else if (lscp_parser_test(&tok, "MIDI_INSTRUMENTS")) {
510                          // Getting indeces of all MIDI instrument map entries:                          // Getting indeces of all MIDI instrument map entries:
511                          // LIST MIDI_INSTRUMENTS                          // LIST MIDI_INSTRUMENTS
512                            szTemp[0] = (char) 0;
513                          for (i = 0; i < iMidiInstruments && strlen(szTemp) < sizeof(szTemp) - 16; i++) {                          for (i = 0; i < iMidiInstruments && strlen(szTemp) < sizeof(szTemp) - 16; i++) {
514                                  if (i > 0)                                  if (i > 0)
515                                          strcat(szTemp, ",");                                          strcat(szTemp, ",");
# Line 491  lscp_status_t server_callback ( lscp_con Line 518  lscp_status_t server_callback ( lscp_con
518                          strcat(szTemp, "\r\n");                          strcat(szTemp, "\r\n");
519                          pszResult = szTemp;                          pszResult = szTemp;
520                  }                  }
521                    else if (lscp_parser_test(&tok, "MIDI_INSTRUMENT_MAPS")) {
522                            // Getting indeces of all MIDI instrument map entries:
523                            // LIST MIDI_INSTRUMENT_MAPS
524                            szTemp[0] = (char) 0;
525                            for (i = 0; i < iMidiMaps && strlen(szTemp) < sizeof(szTemp) - 8; i++) {
526                                    if (i > 0)
527                                            strcat(szTemp, ",");
528                                    sprintf(szTemp + strlen(szTemp), "%d", i);
529                            }
530                            strcat(szTemp, "\r\n");
531                            pszResult = szTemp;
532                    }
533                  else ret = LSCP_FAILED;                  else ret = LSCP_FAILED;
534          }          }
535          else if (lscp_parser_test(&tok, "SET")) {          else if (lscp_parser_test(&tok, "SET")) {
# Line 535  lscp_status_t server_callback ( lscp_con Line 574  lscp_status_t server_callback ( lscp_con
574                                  // Setting MIDI input channel:                                  // Setting MIDI input channel:
575                                  // SET CHANNEL MIDI_INPUT_CHANNEL <sampler-channel> <midi-input-chan>                                  // SET CHANNEL MIDI_INPUT_CHANNEL <sampler-channel> <midi-input-chan>
576                          }                          }
577                            else if (lscp_parser_test(&tok, "MIDI_INSTRUMENT_MAP")) {
578                                    // Setting MIDI instrument mapl:
579                                    // SET CHANNEL MIDI_INSTRUMENT_MAP <sampler-channel> <midi-map>
580                            }
581                          else ret = LSCP_FAILED;                          else ret = LSCP_FAILED;
582                  }                  }
583                    else if (lscp_parser_test2(&tok, "MIDI_INSTRUMENT_MAP", "NAME")) {
584                            // Setting MIDI instrument map name:
585                            // SET MIDI_INSTRUMENT_MAP NAME <midi-map> <map-name>
586                    }
587                  else ret = LSCP_FAILED;                  else ret = LSCP_FAILED;
588          }          }
589          else if (lscp_parser_test(&tok, "LOAD")) {          else if (lscp_parser_test(&tok, "LOAD")) {
# Line 550  lscp_status_t server_callback ( lscp_con Line 597  lscp_status_t server_callback ( lscp_con
597                  }                  }
598                  else ret = LSCP_FAILED;                  else ret = LSCP_FAILED;
599          }          }
600          else if (lscp_parser_test2(&tok, "ADD", "CHANNEL")) {          else if (lscp_parser_test(&tok, "ADD")) {
601                  // Adding a new sampler channel:                  if (lscp_parser_test(&tok, "CHANNEL")) {
602                  // ADD CHANNEL                          // Adding a new sampler channel:
603                  if (iSamplerChannel < 16) {                          // ADD CHANNEL
604                          sprintf(szTemp, "OK[%d]\r\n", iSamplerChannel++);                          if (iSamplerChannel < 16) {
605                          pszResult = szTemp;                                  sprintf(szTemp, "OK[%d]\r\n", iSamplerChannel++);
606                  } else {                                  pszResult = szTemp;
607                          iSamplerChannel = 0;                          } else {
608                          ret = LSCP_FAILED;                                  iSamplerChannel = 0;
609                                    ret = LSCP_FAILED;
610                            }
611                    }
612                    else if (lscp_parser_test(&tok, "MIDI_INSTRUMENT_MAP")) {
613                            // Adding a new MIDI instrument map:
614                            // ADD MIDI_INSTRUMENT_MAP <map-name>
615                            if (iMidiMaps < 2) {
616                                    sprintf(szTemp, "OK[%d]\r\n", iMidiMaps++);
617                                    pszResult = szTemp;
618                            } else {
619                                    iMidiMaps = 0;
620                                    ret = LSCP_FAILED;
621                            }
622                  }                  }
623          }          }
624          else if (lscp_parser_test2(&tok, "REMOVE", "CHANNEL")) {          else if (lscp_parser_test(&tok, "REMOVE")) {
625                  // Removing a sampler channel:                  if (lscp_parser_test(&tok, "CHANNEL")) {
626                  // REMOVE CHANNEL <sampler-channel>                          // Removing a sampler channel:
627                  if (lscp_parser_nextint(&tok) < iSamplerChannel)                          // REMOVE CHANNEL <sampler-channel>
628                          iSamplerChannel--;                          if (lscp_parser_nextint(&tok) >= 0)
629                  else                                  iSamplerChannel--;
630                          ret = LSCP_FAILED;                          else
631                                    ret = LSCP_FAILED;
632                    }
633                    else if (lscp_parser_test(&tok, "MIDI_INSTRUMENT_MAP")) {
634                            // Removing a MIDI instrument map:
635                            // REMOVE MIDI_INSTRUMENT_MAP <midi-map>
636                            if (lscp_parser_nextint(&tok) >= 0)
637                                    iMidiMaps--;
638                            else
639                                    ret = LSCP_FAILED;
640                    }
641          }          }
642          else if (lscp_parser_test(&tok, "RESET")) {          else if (lscp_parser_test(&tok, "RESET")) {
643                  if (lscp_parser_test(&tok, "CHANNEL")) {                  if (lscp_parser_test(&tok, "CHANNEL")) {
# Line 629  lscp_status_t server_callback ( lscp_con Line 699  lscp_status_t server_callback ( lscp_con
699          }          }
700          else if (lscp_parser_test2(&tok, "MAP", "MIDI_INSTRUMENT")) {          else if (lscp_parser_test2(&tok, "MAP", "MIDI_INSTRUMENT")) {
701                  // Create or replace a MIDI instrumnet map entry:                  // Create or replace a MIDI instrumnet map entry:
702                  // MAP MIDI_INSTRUMENT <midi-bank-msb> <midi-bank-lsb> <midi-prog>                  // MAP MIDI_INSTRUMENT <midi-map> <midi-bank> <midi-prog>
703                  // <engine-name> <filename> <instr-index> <volume> <load-mode> [<name>]                  // <engine-name> <filename> <instr-index> <volume> <load-mode> [<name>]
704                  iMidiInstruments++;                  iMidiInstruments++;
705          }          }
706          else if (lscp_parser_test2(&tok, "UNMAP", "MIDI_INSTRUMENT")) {          else if (lscp_parser_test2(&tok, "UNMAP", "MIDI_INSTRUMENT")) {
707                  // Remove an entry from the MIDI instrument map:                  // Remove an entry from the MIDI instrument map:
708                  // UNMAP MIDI_INSTRUMENT <midi-bank-msb> <midi-bank-lsb> <midi-prog>                  // UNMAP MIDI_INSTRUMENT <midi-map> <midi-bank> <midi-prog>
709                  if (iMidiInstruments > 0)                  if (iMidiInstruments > 0)
710                          iMidiInstruments--;                          iMidiInstruments--;
711                  else                  else
# Line 673  lscp_status_t server_callback ( lscp_con Line 743  lscp_status_t server_callback ( lscp_con
743          return lscp_server_result(pConnect, pszResult, strlen(pszResult));          return lscp_server_result(pConnect, pszResult, strlen(pszResult));
744  }  }
745    
746    
747  ////////////////////////////////////////////////////////////////////////  ////////////////////////////////////////////////////////////////////////
748    
749    

Legend:
Removed from v.963  
changed lines
  Added in v.985

  ViewVC Help
Powered by ViewVC