zynaddsubfx

ZynAddSubFX open source synthesizer
Log | Files | Refs | Submodules | LICENSE

LASHClient.cpp (2541B)


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