Move to new zfd format

This commit is contained in:
zawz 2020-03-03 10:25:14 +01:00
parent 22d3462f09
commit f10a6900c6
8 changed files with 17 additions and 9 deletions

View file

@ -8,9 +8,11 @@ NAME = zmidimap
LDFLAGS = -lpthread
CC=g++
CXXFLAGS= -I$(IDIR) -Wall -pedantic -std=c++17 -O2
CXXFLAGS= -I$(IDIR) -Wall -pedantic -std=c++17
ifeq ($(DEBUG),true)
CXXFLAGS += -g
else
CXXFLAGS += -O2
endif
ifeq ($(STATIC),true)
LDFLAGS += -l:libztd.a

View file

@ -14,7 +14,7 @@ Download the .deb package then run: `sudo dpkg -i zmidimap.deb ; sudo apt -f ins
### Standalone
Download ``zmidimap-static.tar.gz`` for a standalone executable without library dependency
Download ``zmidimap.tar.gz`` for a standalone executable
### From source

View file

@ -21,5 +21,6 @@ Device <name>
> mandatory
Shell command can be concatenated with \"\" or ''
Comments are written by starting a line with //
see --command-tags for optional command tags
Comments are written with // or # and end at end of line
Multiple tags can be put on the same line by separating them with ;
See --command-tags for optional command tags

View file

@ -1,5 +1,7 @@
-- [ZFD FILE FORMAT] --
ZFD format: http://zawz.net/doc/ztd/zfd.html
[<device>,<device>]
-- <device> format --

View file

@ -3,7 +3,7 @@
#include <ztd/filedat.hpp>
ztd::chunkdat mimtochk(const std::string& mim);
ztd::chunkdat mimtochk(std::string mim);
std::string file_strimport(const std::string& path);

View file

@ -1,7 +1,7 @@
#ifndef HELP_H
#define HELP_H
#define ZFD_FORMAT "zmidimap\n-- [ZFD FILE FORMAT] --\n\n[<device>,<device>]\n\n-- <device> format --\n {\n name=<name>\n commands=[<command>,<command>]\n }\n--\n*name: string referring to client name of the device\n\n<command> format\n {\n type=<type>\n shell=<shell command>\n <tag>=<value>\n <tag>=<value>\n ...\n }\n--\n*type: type of the signal: note/controller/pitch/system/connect/disconnect\n > mandatory\n*shell: shell command to be executed\n > mandatory\n\nShell command can be concatenated with \"\" or ''\nsee --command-tags for optional command tags"
#define MIM_FORMAT "zmidimap\n-- [MIM FILE FORMAT] --\n\nDevice <name>\n Command <type>\n shell=<shell command>\n <tag>=<value>\n <tag>=<value>\n ...\n\nDevice <name>\n...\n\n--\n*name: string referring to client name of the device\n > mandatory\n*type: type of the signal: note/controller/pitch/system/connect/disconnect\n > mandatory\n*shell: shell command to be executed\n > mandatory\n\nShell command can be concatenated with \"\" or ''\nsee --command-tags for optional command tags"
#define ZFD_FORMAT "zmidimap\n-- [ZFD FILE FORMAT] --\n\nZFD format: http://zawz.net/doc/ztd/zfd.html\n\n[<device>,<device>]\n\n-- <device> format --\n {\n name=<name>\n commands=[<command>,<command>]\n }\n--\n*name: string referring to client name of the device\n\n<command> format\n {\n type=<type>\n shell=<shell command>\n <tag>=<value>\n <tag>=<value>\n ...\n }\n--\n*type: type of the signal: note/controller/pitch/system/connect/disconnect\n > mandatory\n*shell: shell command to be executed\n > mandatory\n\nShell command can be concatenated with \"\" or ''\nsee --command-tags for optional command tags"
#define MIM_FORMAT "zmidimap\n-- [MIM FILE FORMAT] --\n\nDevice <name>\n Command <type>\n shell=<shell command>\n <tag>=<value>\n <tag>=<value>\n ...\n Command <type>\n ...\n\nDevice <name>\n...\n\n--\n*name: string referring to client name of the device\n > mandatory\n*type: type of the signal: note/controller/pitch/system/connect/disconnect\n > mandatory\n*shell: shell command to be executed\n > mandatory\n\nShell command can be concatenated with \"\" or ''\nComments are written with // or # and end at end of line\nMultiple tags can be put on the same line by separating them with ;\nSee --command-tags for optional command tags"
#define SHELL_FORMAT "zmidimap\n-- [SHELL FORMAT] --\n\nShell command follows regular shell format\n\n-- [Environment] --\n\n[Note]\n $id: id of the note\n $channel: channel of the note\n $velocity: velocity of the note\n\n[Controller]\n $value: value of the controller (remapped)\n $id: id of the controller\n $channel: channel of the controller\n $rawvalue: original value of the controller\n\n[Pitch]\n $value: value of the bend (remapped)\n $rawvalue: original value of the bend\n\n[System]\n $code: hexadecimal code of the system signal"
#define COMMAND_TAGS "zmidimap\n-- [COMMAND TAGS] --\n\n[Note tags]\n id=<interval>\n channel=<x/*>\n trigger=<interval>\n--\n *id: note id from 0 to 127\n > optional, default 0:127\n *channel: value from 0 to 16 for channel, * for any channel\n > optional, default *\n *trigger: note velocity from 0 to 127 that triggers the command\n > optional, default 1:127\n\n[Controller tags]\n id=<interval>\n channel=<x/*>\n range=<interval>\n remap=<interval>\n float=<true/false>\n--\n *id: controller id from 0 to 127\n > optional, default 0:127\n *channel: value from 0 to 16 for channel, * for any channel\n > optional, default *\n *range: controller value from 0 to 127 that triggers command\n > optional, default 0:127\n *remap: remaps the range to given interval\n > optional, default same as range\n *float: boolean value defining if output is a floating point value\n > optional, default false\n\n[Pitch bend tags]\n range=<interval>\n remap=<interval>\n float=<true/false>\n--\n *range: controller value from -8192 to 8191 that triggers command\n > optional, default -8192:8191\n *remap: remaps the range to given interval\n > optional, default same as range\n *float: boolean value defining if output is a floating point value\n > optional, default false\n\n[Interval Format]\n x:y range from x to y\n x single value x\n * all possible values"
#endif //HELP_H

View file

@ -71,8 +71,9 @@ ztd::chunkdat mimtochk_commands(const std::string& mim)
return chk;
}
ztd::chunkdat mimtochk(const std::string& mim)
ztd::chunkdat mimtochk(std::string mim)
{
mim = ztd::filedat::removeComments(mim);
ztd::chunkdat chk;
unsigned int i=0,j=0;
_find_next(mim,i, "Device ");

View file

@ -96,7 +96,9 @@ void announce_loop()
device_check();
}
ztd::pclose2(stream, announce_thread_pid);
int ret = WEXITSTATUS(ztd::pclose2(stream, announce_thread_pid));
if( ret != 0 )
throw std::runtime_error("ALSA error");
if(buff != NULL)
free(buff);