const ansi = require('ansi-styles');
const csound = require('bindings')('csound-api.node');
const path = require('path');

const textColors = {};
textColors[csound.MSG_FG_BLACK]   = ansi.black;
textColors[csound.MSG_FG_RED]     = ansi.red;
textColors[csound.MSG_FG_GREEN]   = ansi.green;
textColors[csound.MSG_FG_YELLOW]  = ansi.yellow;
textColors[csound.MSG_FG_BLUE]    = ansi.blue;
textColors[csound.MSG_FG_MAGENTA] = ansi.magenta;
textColors[csound.MSG_FG_CYAN]    = ansi.cyan;
textColors[csound.MSG_FG_WHITE]   = ansi.gray;

const backgroundColors = {};
backgroundColors[csound.MSG_BG_BLACK]   = ansi.bgBlack;
backgroundColors[csound.MSG_BG_RED]     = ansi.bgRed;
backgroundColors[csound.MSG_BG_GREEN]   = ansi.bgGreen;
backgroundColors[csound.MSG_BG_ORANGE]  = ansi.bgYellow;
backgroundColors[csound.MSG_BG_BLUE]    = ansi.bgBlue;
backgroundColors[csound.MSG_BG_MAGENTA] = ansi.bgMagenta;
backgroundColors[csound.MSG_BG_CYAN]    = ansi.bgCyan;
backgroundColors[csound.MSG_BG_GREY]    = ansi.bgWhite;

const Csound = csound.Create();
csound.SetMessageCallback(Csound, (attributes, string) => {
  let color = textColors[attributes & csound.MSG_FG_COLOR_MASK];
  if (color)
    string = color.open + string + color.close;
  if (attributes & csound.MSG_FG_BOLD)
    string = ansi.bold.open + string + ansi.bold.close;
  if (attributes & csound.MSG_FG_UNDERLINE)
    string = ansi.underline.open + string + ansi.underline.close;
  color = backgroundColors[attributes & csound.MSG_BG_COLOR_MASK];
  if (color)
    string = color.open + string + color.close;
  console.log(string);
});
csound.MessageS(
  Csound,
  csound.MSG_FG_YELLOW | csound.MSG_FG_UNDERLINE | csound.MSG_BG_BLUE,
  'Hail!'
);
csound.Destroy(Csound);

@@ -140,21 +140,11 @@
  = %7B
-%7D;%0AtextColors
+%0A  
 %5Bcso
@@ -159,25 +159,25 @@
 FG_BLACK%5D   
-=
+:
  ansi.black;
@@ -175,28 +175,20 @@
 si.black
-;%0AtextColors
+,%0A  
 %5Bcsound.
@@ -199,25 +199,25 @@
 FG_RED%5D     
-=
+:
  ansi.red;%0At
@@ -213,28 +213,20 @@
 ansi.red
-;%0AtextColors
+,%0A  
 %5Bcsound.
@@ -237,25 +237,25 @@
 FG_GREEN%5D   
-=
+:
  ansi.green;
@@ -253,28 +253,20 @@
 si.green
-;%0AtextColors
+,%0A  
 %5Bcsound.
@@ -281,17 +281,17 @@
 ELLOW%5D  
-=
+:
  ansi.ye
@@ -294,28 +294,20 @@
 i.yellow
-;%0AtextColors
+,%0A  
 %5Bcsound.
@@ -318,25 +318,25 @@
 FG_BLUE%5D    
-=
+:
  ansi.blue;%0A
@@ -333,28 +333,20 @@
 nsi.blue
-;%0AtextColors
+,%0A  
 %5Bcsound.
@@ -357,25 +357,25 @@
 FG_MAGENTA%5D 
-=
+:
  ansi.magent
@@ -375,28 +375,20 @@
 .magenta
-;%0AtextColors
+,%0A  
 %5Bcsound.
@@ -399,25 +399,25 @@
 FG_CYAN%5D    
-=
+:
  ansi.cyan;%0A
@@ -418,20 +418,12 @@
 cyan
-;%0AtextColors
+,%0A  
 %5Bcso
@@ -438,25 +438,25 @@
 FG_WHITE%5D   
-=
+:
  ansi.gray;%0A
@@ -453,16 +453,18 @@
 nsi.gray
+%0A%7D
 ;%0A%0Aconst
@@ -488,27 +488,11 @@
  = %7B
-%7D;%0AbackgroundColors
+%0A  
 %5Bcso
@@ -507,25 +507,25 @@
 BG_BLACK%5D   
-=
+:
  ansi.bgBlac
@@ -525,34 +525,20 @@
 .bgBlack
-;%0AbackgroundColors
+,%0A  
 %5Bcsound.
@@ -549,25 +549,25 @@
 BG_RED%5D     
-=
+:
  ansi.bgRed;
@@ -565,34 +565,20 @@
 si.bgRed
-;%0AbackgroundColors
+,%0A  
 %5Bcsound.
@@ -593,17 +593,17 @@
 REEN%5D   
-=
+:
  ansi.bg
@@ -607,34 +607,20 @@
 .bgGreen
-;%0AbackgroundColors
+,%0A  
 %5Bcsound.
@@ -635,17 +635,17 @@
 RANGE%5D  
-=
+:
  ansi.bg
@@ -650,34 +650,20 @@
 bgYellow
-;%0AbackgroundColors
+,%0A  
 %5Bcsound.
@@ -674,25 +674,25 @@
 BG_BLUE%5D    
-=
+:
  ansi.bgBlue
@@ -691,34 +691,20 @@
 i.bgBlue
-;%0AbackgroundColors
+,%0A  
 %5Bcsound.
@@ -719,17 +719,17 @@
 AGENTA%5D 
-=
+:
  ansi.bg
@@ -735,34 +735,20 @@
 gMagenta
-;%0AbackgroundColors
+,%0A  
 %5Bcsound.
@@ -759,25 +759,25 @@
 BG_CYAN%5D    
-=
+:
  ansi.bgCyan
@@ -780,26 +780,12 @@
 Cyan
-;%0AbackgroundColors
+,%0A  
 %5Bcso
@@ -804,17 +804,17 @@
 REY%5D    
-=
+:
  ansi.bg
@@ -818,16 +818,18 @@
 .bgWhite
+%0A%7D
 ;%0A%0Aconst

Use computed property names