diff options
| author | Takamichi Horikawa <takamichiho@gmail.com> | 2017-04-03 22:25:21 +0900 | 
|---|---|---|
| committer | Takamichi Horikawa <takamichiho@gmail.com> | 2017-04-03 22:25:21 +0900 | 
| commit | 813ed6d6c17d4b3c99e3d237872041f1a0047f97 (patch) | |
| tree | 8dbb1431ebc2c6e14010689bcad6fe42ede0480b /tonedata | |
| parent | 21c6232b797baaad10c305f98cd96765876505c1 (diff) | |
add VOPM tone format
Diffstat (limited to 'tonedata')
| -rw-r--r-- | tonedata/tonedata.c | 25 | ||||
| -rw-r--r-- | tonedata/tonedata.h | 26 | 
2 files changed, 50 insertions, 1 deletions
| diff --git a/tonedata/tonedata.c b/tonedata/tonedata.c index 0d5daa6..874047b 100644 --- a/tonedata/tonedata.c +++ b/tonedata/tonedata.c @@ -100,6 +100,31 @@ void tonedata_ch_string(              ch->alg, ch->fb      );      break; +  case FMPLAYER_TONEDATA_FMT_VOPM: +    snprintf(buf, FMPLAYER_TONEDATA_STR_SIZE, +            "@:%d\n" +            "LFO:  0   0   0   0   0\n" +            "CH: 64 %3d %3d   0   0 120   0\n" +            "M1:%3d %3d %3d %3d %3d %3d %3d %3d %3d   0   0\n" +            "C1:%3d %3d %3d %3d %3d %3d %3d %3d %3d   0   0\n" +            "M2:%3d %3d %3d %3d %3d %3d %3d %3d %3d   0   0\n" +            "C2:%3d %3d %3d %3d %3d %3d %3d %3d %3d   0   0", +            tonenum, +            ch->fb, ch->alg,  +            ch->slot[0].ar, ch->slot[0].dr, ch->slot[0].sr, ch->slot[0].rr, +            ch->slot[0].sl, ch->slot[0].tl, ch->slot[0].ks, ch->slot[0].ml, +            ch->slot[0].dt, +            ch->slot[1].ar, ch->slot[1].dr, ch->slot[1].sr, ch->slot[1].rr, +            ch->slot[1].sl, ch->slot[1].tl, ch->slot[1].ks, ch->slot[1].ml, +            ch->slot[1].dt, +            ch->slot[2].ar, ch->slot[2].dr, ch->slot[2].sr, ch->slot[2].rr, +            ch->slot[2].sl, ch->slot[2].tl, ch->slot[2].ks, ch->slot[2].ml, +            ch->slot[2].dt, +            ch->slot[3].ar, ch->slot[3].dr, ch->slot[3].sr, ch->slot[3].rr, +            ch->slot[3].sl, ch->slot[3].tl, ch->slot[3].ks, ch->slot[3].ml, +            ch->slot[3].dt +    ); +    break;    default:      buf[0] = 0;      break; diff --git a/tonedata/tonedata.h b/tonedata/tonedata.h index c8dd03c..5a7cd12 100644 --- a/tonedata/tonedata.h +++ b/tonedata/tonedata.h @@ -2,6 +2,7 @@  #define MYON_FMPLAYER_TONEDATA_H_INCLUDED  #include <stdint.h> +#include <stdbool.h>  struct fmplayer_tonedata {    struct fmplayer_tonedata_channel { @@ -22,6 +23,28 @@ struct fmplayer_tonedata {    } ch[6];  }; +static inline bool fmplayer_tonedata_channel_isequal( +  const struct fmplayer_tonedata_channel *a, +  const struct fmplayer_tonedata_channel *b) { +  if (a->fb != b->fb) return false; +  if (a->alg != b->alg) return false; +  for (int s = 0; s < 4; s++) { +    const struct fmplayer_tonedata_slot *sa = &a->slot[s]; +    const struct fmplayer_tonedata_slot *sb = &b->slot[s]; +    if (sa->ar != sb->ar) return false; +    if (sa->dr != sb->dr) return false; +    if (sa->sr != sb->sr) return false; +    if (sa->rr != sb->rr) return false; +    if (sa->sl != sb->sl) return false; +    if (sa->tl != sb->tl) return false; +    if (sa->ks != sb->ks) return false; +    if (sa->ml != sb->ml) return false; +    if (sa->dt != sb->dt) return false; +    if (sa->ams != sb->ams) return false; +  } +  return true; +} +  struct opna;  void tonedata_from_opna(    struct fmplayer_tonedata *tonedata, @@ -30,7 +53,8 @@ void tonedata_from_opna(  enum fmplayer_tonedata_format {    FMPLAYER_TONEDATA_FMT_PMD, -  FMPLAYER_TONEDATA_FMT_FMP +  FMPLAYER_TONEDATA_FMT_FMP, +  FMPLAYER_TONEDATA_FMT_VOPM,  };  enum { | 
