Audio plugin host https://kx.studio/carla
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

95 lines
2.5KB

  1. /*
  2. ZynAddSubFX - a software synthesizer
  3. LASHClient.cpp - LASH support
  4. Copyright (C) 2006-2009 Lars Luthman
  5. Author: Lars Luthman
  6. This program is free software; you can redistribute it and/or
  7. modify it under the terms of the GNU General Public License
  8. as published by the Free Software Foundation; either version 2
  9. of the License, or (at your option) any later version.
  10. */
  11. #include <unistd.h>
  12. #include <iostream>
  13. #include <string>
  14. #include "LASHClient.h"
  15. LASHClient::LASHClient(int *argc, char ***argv)
  16. {
  17. client = lash_init(lash_extract_args(argc, argv), "ZynAddSubFX",
  18. LASH_Config_File, LASH_PROTOCOL(2, 0));
  19. }
  20. void LASHClient::setalsaid(int id)
  21. {
  22. if(lash_enabled(client))
  23. if(id != -1)
  24. lash_alsa_client_id(client, id);
  25. }
  26. void LASHClient::setjackname(const char *name)
  27. {
  28. if(lash_enabled(client))
  29. if(name != NULL) {
  30. lash_jack_client_name(client, name);
  31. lash_event_t *event = lash_event_new_with_type(LASH_Client_Name);
  32. lash_event_set_string(event, name);
  33. lash_send_event(client, event);
  34. }
  35. }
  36. LASHClient::Event LASHClient::checkevents(std::string &filename)
  37. {
  38. if(!lash_enabled(client))
  39. return NoEvent;
  40. Event received = NoEvent;
  41. lash_event_t *event;
  42. while((event = lash_get_event(client))) {
  43. // save
  44. if(lash_event_get_type(event) == LASH_Save_File) {
  45. std::cerr << "LASH event: LASH_Save_File" << std::endl;
  46. filename = std::string(lash_event_get_string(event))
  47. + "/master.xmz";
  48. received = Save;
  49. break;
  50. }
  51. // restore
  52. else
  53. if(lash_event_get_type(event) == LASH_Restore_File) {
  54. std::cerr << "LASH event: LASH_Restore_File" << std::endl;
  55. filename = std::string(lash_event_get_string(event))
  56. + "/master.xmz";
  57. received = Restore;
  58. break;
  59. }
  60. // quit
  61. else
  62. if(lash_event_get_type(event) == LASH_Quit) {
  63. std::cerr << "LASH event: LASH_Quit" << std::endl;
  64. received = Quit;
  65. break;
  66. }
  67. lash_event_destroy(event);
  68. }
  69. return received;
  70. }
  71. void LASHClient::confirmevent(Event event)
  72. {
  73. if(event == Save)
  74. lash_send_event(client, lash_event_new_with_type(LASH_Save_File));
  75. else
  76. if(event == Restore)
  77. lash_send_event(client, lash_event_new_with_type(LASH_Restore_File));
  78. }