bad-apple.c (6218B)
1 #include <ctype.h> 2 #include <stdio.h> 3 #include "tones.h" 4 5 #define SIZE(arr) (sizeof(arr)/sizeof(arr[0])) 6 7 typedef struct block { 8 int notes[4][26]; 9 } block; 10 11 static const char song[][4][28] = { 12 {"4D--D-D--DC-dD--D-D--DC-dD-"}, 13 {"4-D-D--DC-dD--D-FG--F-GD--D"}, 14 {"4-D--DC-dD--D-D--DC-dD--D-D"}, 15 {"4--DC-dG--F-GF--D-FD--D-D--"}, 16 {"4DC-dD--D-D--DC-dD--D-D--DC"}, 17 {"4-dD--D-FG--F-GD--D-D--DC-d"}, 18 {"4D--D-D--DC-dD--D-D--DC-dG-"}, 19 {"4F-G-F-D-F-D--f--F--G--A---"}, 20 {"5--D--C--------------------","4--------A-----D-----A--G--"}, 21 {"4F--f--D--f--F--G--A-----G-"}, 22 {"4-F--f--D--f--F--f--D--d--f"}, 23 {"5--------------------D--C--","4--D--f--F--G--A-----------"}, 24 {"4A-----D-----A--G--F--f--D-"}, 25 {"4-f--F--G--A-----G--F--f---"}, 26 {"4--F-----G-----A-----D--f--"}, 27 {"5------------D--C----------","4D--f--D-----F--A--F-----D-","4F--G--A-----------A-------","3------------------------A-"}, 28 {"4----F--G--F--f--D--f--F--G","4----A---------------------"}, 29 {"4--A-----G--F--f--D--f--F--"}, 30 {"4f--D--d--f--D--f--D--f--D-","4------------------F--G--A-"}, 31 {"5----D--C------------------","4----F--A--F-----D-----F--G","4----------A-----------A---","3----------------A---------"}, 32 {"4--F--f--D--f--F--G--A-----"}, 33 {"4G--F--f-----F-----G-----A-"}, 34 {"5----C--D------------------","4----------A--G--A-----G--A"}, 35 {"5--C--D--------------------","4--------A--G--A-----G--A--"}, 36 {"4G--F--f--C--D-----C--D--f-"}, 37 {"5-------------------C--C--D","4-F--G--A--D-----A---------"}, 38 {"5--------------------C--D--","4--A--G--A-----G--A--------"}, 39 {"4a--g--A-----G--A--G--F--f-"}, 40 {"4-C--D-----C--D--f--F--G--A"}, 41 {"5-----------C--C--D--------","4--D-----A-----------A--G--"}, 42 {"5------------C--D----------","4A-----G--A--------A--G--A-"}, 43 {"4----G--A--G--F--f--C--D---"}, 44 {"4--C--D--f--F--G--A--D-----"}, 45 {"5---C--C--D----------------","4A-----------A--G--A-----G-"}, 46 {"5----C--D--------------D--f","4-A--------A--G--A---------"}, 47 {"5--F--f--D--C--------------","4--------------A-----G--A--"}, 48 {"6---------------------C--C-","5------------------A-------","4G--F--f--C--D-------------"}, 49 {"6-D--------------------C--D","5----A--G--A-----G--A------"}, 50 {"5--A--G--A-----G--A--G--F--"}, 51 {"5f--C--D-----C--D--f--F--G-"}, 52 {"6-------------C--C--D------","5-A--D-----A-----------A--G"}, 53 {"6--------------C--D--------","5--A-----G--A--------A--G--"}, 54 {"5A-----G--A--G--F--f--C--D-"}, 55 {"5----C--D--f--F--G--A--D---"}, 56 {"6-----C--C--D--------------","5--A-----------A--G--A-----"}, 57 {"6------C--D----------------","5G--A--------A--G--A-----G-"}, 58 {"5-A--G--F--f--C--D-----C--D"}, 59 {"6-----------------------C--","5--f--F--G--A--D-----A-----"}, 60 {"6C--D--------------------C-","5------A--G--A-----G--A----"}, 61 {"6-D--------------D--f--F--f","5----A--G--A---------------"}, 62 {"6--D--C--------------------","5--------A-----G--A--G--F--"}, 63 {"5f--C--D-------------------","4------------------D--D-D--"}, 64 {"4DC-dD--D-D--DC-dD--D-D--DC"}, 65 {"4-dD--D-FG--F-GD--D-D--DC-d"}, 66 {"4D--D-D--DC-dD--D-D--DC-dG-"}, 67 {"4-F-GF--D-FD--D-D--DC-dD--D"}, 68 {"4-D--DC-dD--D-D--DC-dD--D-F"}, 69 {"4G--F-GD--D-D--DC-dD--D-D--"}, 70 {"5--------------------C-D-F-","4DC-dD--D-D--DC-dG-A-------"}, 71 {"5A-G-----------------A-GF--"}, 72 {"5G-Ff--F-fD--f-DC--D-------","4------------------------A-"}, 73 {"5----C---------------------","4-------A--G--a--G-----F---"}, 74 {"6--------------------C-----","5--------C--D--F--A--------","4--G--A--------------------"}, 75 {"6---D-----D-----F--------f-","5A-------------------------"}, 76 {"6-f--f--F--f--D--C--D------","5---------------------AA---"}, 77 {"6-C-----------------C------","5-------G--A--G--A--------A"}, 78 {"5GG-A--G--F--------FfDf--bA","4------------fDCD----------"}, 79 {"6----DC-C------------------","5GA----b---bAGA--FfDf------","4----------------------FfDf"}, 80 {"5-----------C-C---------C-C","4--DC-C--A-A---b-bA-Ab-b---","3----b---------------------"}, 81 {"5D-Df--G-----F--------f----"}, 82 {"5-G-----F--f--G--F--f--G--F"}, 83 {"5--f-G-F-f-G-F-f-G-F-f-G-F-"}, 84 {"6-------C----D-----f-----F-","5A-----A-------------------"}, 85 {"6-f--f-----D-----C-----C-dD"}, 86 {"6--------------------C--D--","5--A--G--A-----G--A--------"}, 87 {"5A--G--A-----G--A--G--F--f-"}, 88 {"5-C--D-----C--D--f--F--G--A"}, 89 {"6-----------C--C--D--------","5--D-----A-----------A--G--"}, 90 {"6------------C--D----------","5A-----G--A--------A--G--A-"}, 91 {"5----G--A--G--F--f--C--D---"}, 92 {"5--C--D--f--F--G--A--D-----"}, 93 {"6---C--C--D----------------","5A-----------A--G--A-----G-"}, 94 {"6----C--D------------------","5-A--------A--G--A-----G--A"}, 95 {"5--G--F--f--C--D-----C--D--"}, 96 {"6---------------------C--C-","5f--F--G--A--D-----A-------"}, 97 {"6-D--------------------C--D","5----A--G--A-----G--A------"}, 98 {"6--------------D--f--F--f--","5--A--G--A-----------------"}, 99 {"6D--C----------------------","5------A-----G--A--G--F--f-"}, 100 {"6-------------d--d--e------","5-C--D-----b-----------b--a"}, 101 {"6--------------d--e--------","5--b-----a--b--------b--a--"}, 102 {"5b-----a--b--a--g--F--d--e-"}, 103 {"5----d--e--F--g--a--b--e---"}, 104 {"6-----d--d--e--------------","5--b-----------b--a--b-----"}, 105 {"6------d--e----------------","5a--b--------b--a--b-----a-"}, 106 {"5-b--a--g--F--d--e-----d--e"}, 107 {"6-----------------------d--","5--F--g--a--b--e-----b-----"}, 108 {"6d--e--------------------d-","5------b--a--b-----a--b----"}, 109 {"6-e------------------------","5----b--a--b-----a--b--a--g"}, 110 {"5--F--d--e-----d--e--F--g--"}, 111 {"6---------------d--d--e----","5a--b--e-----b-----------b-"}, 112 {"6----------------d--e------","5-a--b-----a--b--------b--a"}, 113 {"6--------e--F--g--F--e--d--","5--b-----------------------"}, 114 {"5b-----a--b--a--g--F--d--e-"} 115 }; 116 117 118 119 void makeBlock(const char blk[28]) { 120 if (blk[0] == 0) { 121 printf("{"); 122 for (int n = 0; n < 26; n++) 123 printf("0, "); 124 printf("},\n"); 125 return; 126 } 127 128 int oc = blk[0] - 48; 129 printf("{"); 130 for (int n = 1; n < 27; n++) { 131 if (blk[n] == '-') 132 printf("0, "); 133 else if (isupper(blk[n])) 134 printf("NOTE_%cS%d, ", toupper(blk[n]), oc); 135 else 136 printf("NOTE_%c%d, ", toupper(blk[n]), oc); 137 } 138 printf("},\n"); 139 } 140 141 int main() { 142 for (int ch = 0; ch < 4; ch++) { 143 printf("int ch%d[][26] = {\n", ch); 144 for (int i = 0; i < SIZE(song); i++) { 145 makeBlock(song[i][ch]); 146 } 147 printf("}\n"); 148 } 149 } 150 151