今まで使った技術で↓のカウントダウンが作れます。
 やってることとしては、その時間の時刻を表示し、文字の透明度をsinで変えているだけです。多分もっとスマートな方法があります。

 ↓にこれのコードを貼っておくのでこれをコピペして、コピペした先の.pdeと同じ階層にフォントの.ttfファイルを入れれば動きます。また、OBSに入れることを前提として制作していたのでFHDになってますが、小さくしたいときはsize(,)の中身で調節してください。その時多少文字がずれてしまう時は、121行目のrect(,,,)の係数を少しずつ変えてください。

  1. import ddf.minim.*;
  2. import ddf.minim.analysis.*; 
  3. import ddf.minim.effects.*;
  4. import ddf.minim.signals.*;
  5. import ddf.minim.spi.*;
  6. import ddf.minim.ugens.*;

  7. PFont D14;
  8. int[] now = new int[5];
  9. char[] mode = new char[2];
  10. int target;
  11. String s;

  12. Minim minim; 
  13. AudioOutput out;
  14. Oscil oscil;

  15. void setup() {
  16.   size(1920, 1080);
  17.   D14 = createFont("DSEG14Modern-Regular.ttf", 60);
  18.   colorMode(HSB, 360, 255, 255, 255);
  19.   textAlign(CENTER, CENTER);

  20.   strokeWeight(5);

  21.   minim = new Minim(this);
  22.   out = minim.getLineOut(Minim.STEREO);
  23.   oscil = new Oscil(440, 0.5, Waves.SQUARE);
  24. }

  25. void draw() {
  26.   background(0);
  27.   if (mode[1] != mode[0]) {
  28.     update();
  29.     mode[1] = mode[0];
  30.   }
  31.   switch(mode[0]) {
  32.   case 'c':
  33.     count();
  34.     break;
  35.   default:
  36.     break;
  37.   }
  38. }

  39. void count() {
  40.   now[0] = target - millis();
  41.   now[1] = int( map( sin( map( now[0] / 2 % 1000, 0, 1000, 0, 2*PI) + PI / 4), -1, 1, 0, 255));
  42.   now[2] = now[0] % 1000;
  43.   now[4] = now[0];
  44.   if (now[0]<10) {
  45.     mode[0] = 'b';
  46.     return;
  47.   }
  48.   if (now[0] % 1000 <10) {
  49.     s = "00" + str(now[0] % 1000);
  50.   } else {
  51.     if (now[0] % 1000 < 100) {
  52.       s = "0" + str(now[0] % 1000);
  53.     } else {
  54.       s = str(now[0] % 1000);
  55.     }
  56.   }
  57.   now[0] = now[0] / 1000;
  58.   if (now[0] % 60 <10) {
  59.     s = "0" + str(now[0] % 60) + ":" + s;
  60.   } else {
  61.     s = str(now[0] % 60) + ":" + s;
  62.   }
  63.   now[0] = now[0] / 60;
  64.   if (now[0] % 60 <10) {
  65.     s = "0" + str(now[0] % 60) + ":" + s;
  66.   } else {
  67.     s = str(now[0] % 60) + ":" + s;
  68.   }
  69.   now[0] = now[0] / 60;
  70.   if (now[0] % 60 <10) {
  71.     s = "0" + str(now[0] % 60) + ":" + s;
  72.   } else {
  73.     s = str(now[0] % 60) + ":" + s;
  74.   }

  75.   if (now[4] >10000) {
  76.     if (now[2] < 100) {
  77.       if (now[3] != 1) {
  78.         oscil.patch(out);
  79.         now[3] = 1;
  80.       }
  81.     } else {
  82.       oscil.unpatch(out);
  83.       now[3] = 0;
  84.     }
  85.   } else {
  86.     if (now[4] > 5000) {
  87.       if (now[2] < 100 || (now[2] > 500 && now[2] < 600)) {
  88.         if (now[3] != 1) {
  89.           oscil.patch(out);
  90.           now[3] = 1;
  91.         }
  92.       } else {
  93.         oscil.unpatch(out);
  94.         now[3] = 0;
  95.       }
  96.     } else {
  97.       if (now[4] > 1000) {
  98.         if (now[2] < 100 || (now[2] > 500 && now[2] < 600) || (now[2] > 250 && now[2] < 350) || (now[2] > 750 && now[2] < 850)) {
  99.           if (now[3] != 1) {
  100.             oscil.patch(out);
  101.             now[3] = 1;
  102.           }
  103.         } else {
  104.           oscil.unpatch(out);
  105.           now[3] = 0;
  106.         }
  107.       }
  108.     }
  109.   }

  110.   stroke(0, 0, 255, map( now[1], 0, 255, 100, 255));
  111.   fill(0, 0, 0, 0);
  112.   rect(width / 2 - textWidth(s) / 2, height / 2 - (textAscent() + textDescent()) / 2 - 5, textWidth(s), textAscent() + textDescent() + 10);
  113.   textFont(D14);
  114.   fill(0, 0, 255, now[1]);
  115.   text(s, width / 2, height / 2);
  116. }

  117. void update() {
  118.   switch(mode[1]) {
  119.   case 'c':
  120.     stroke(0, 0, 0, 255);
  121.     oscil.unpatch(out);
  122.     break;
  123.   default:
  124.     break;
  125.   }
  126.   switch(mode[0]) {
  127.   case 'c':
  128.     if (mode[1] != mode[0]) {
  129.       target = millis() + (((((0 * 60) + 1) * 60) + 0) * 1000);
  130.     }
  131.     break;
  132.   default:
  133.     break;
  134.   }
  135. }

  136. void keyPressed() {
  137.   mode[0] = key;
  138. }