Advertisement
Guest User

miut

a guest
Nov 25th, 2014
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.77 KB | None | 0 0
  1. #include <termios.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <fcntl.h>
  5. #include <unistd.h>
  6. #include <linux/kd.h>
  7. #include <pthread.h>
  8.  
  9. enum sound_names
  10. {
  11. c1,
  12. cis1,
  13. d1,
  14. dis1,
  15. e1,
  16. f1,
  17. fis1,
  18. g1,
  19. gis1,
  20. a1,
  21. ais1,
  22. h1,
  23.  
  24. c2,
  25. cis2,
  26. d2,
  27. dis2,
  28. e2,
  29. f2,
  30. fis2,
  31. g2,
  32. gis2,
  33. a2,
  34. ais2,
  35. h2,
  36.  
  37. c3,
  38. cis3,
  39. d3,
  40. dis3,
  41. e3,
  42. f3,
  43. fis3,
  44. g3,
  45. gis3,
  46. a3,
  47. ais3,
  48. h3
  49. };
  50.  
  51. double sounds[36] =
  52. {
  53. 261.6,
  54. 277.2,
  55. 293.7,
  56. 311.1,
  57. 329.6,
  58. 349.6,
  59. 370.0,
  60. 391.9,
  61. 415.3,
  62. 440.0,
  63. 466.2,
  64. 493.9,
  65.  
  66. 523.3,
  67. 554.4,
  68. 587.3,
  69. 622.3,
  70. 659.3,
  71. 698.5,
  72. 740.0,
  73. 784.0,
  74. 830.6,
  75. 880.0,
  76. 932.3,
  77. 987.8,
  78.  
  79. 1046.5,
  80. 1108.7,
  81. 1174.6,
  82. 1244.5,
  83. 1318.5,
  84. 1396.9,
  85. 1479.9,
  86. 1567.9,
  87. 1661.2,
  88. 1760.0,
  89. 1864.6,
  90. 1975.5
  91. };
  92.  
  93. int mygetch(void)
  94. {
  95. struct termios oldt,newt;
  96. int ch;
  97. tcgetattr( STDIN_FILENO, &oldt );
  98. newt = oldt;
  99. newt.c_lflag &= ~( ICANON | ECHO );
  100. tcsetattr( STDIN_FILENO, TCSANOW, &newt );
  101. ch = getchar();
  102. tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
  103. return ch;
  104. }
  105.  
  106. void msleep(int sec)
  107. {
  108. usleep(sec*1000);
  109. }
  110.  
  111. void play(int freq, int time)
  112. {
  113. int fd = open("/dev/tty10", O_RDONLY);
  114. ioctl(fd, KDMKTONE, ((time)<<16)+(1193180/(int)sounds[freq]));
  115. msleep(time);
  116. }
  117.  
  118. int sound;
  119.  
  120. void *keys()
  121. {
  122. while(1)
  123. {
  124. int key = mygetch();
  125.  
  126.  
  127. switch(key)
  128. {
  129. case 'z': { play(c1, 100); break; }
  130. case 'x': { play(d1, 100); break; }
  131. case 'c': { play(e1, 100); break; }
  132. case 'v': { play(f1, 100); break; }
  133. case 'b': { play(g1, 100); break; }
  134. case 'n': { play(a1, 100); break; }
  135. case 'm': { play(h1, 100); break; }
  136. case ',': { play(c2, 100); break; }
  137. case 's': { play(cis1, 100); break; }
  138. case 'd': { play(dis1, 100); break; }
  139. case 'g': { play(fis1, 100); break; }
  140. case 'h': { play(gis1, 100); break; }
  141. case 'j': { play(ais1, 100); break; }
  142. }
  143.  
  144. }
  145. }
  146.  
  147. int main(int argc, char *argv[])
  148. {
  149. pthread_t thread;
  150.  
  151. pthread_create(&thread, NULL, keys, NULL);
  152. pthread_join(thread, NULL);
  153.  
  154. /* play(c2, 220);
  155. play(e2, 180);
  156. msleep(40);
  157. play(e2, 180);
  158. msleep(40);
  159. play(e2, 180);
  160. msleep(40);
  161. play(e2, 180);
  162. msleep(40);
  163. play(e2, 220);
  164. play(d2, 220);
  165.  
  166. msleep(220);
  167.  
  168. play(d2, 220);
  169. play(e2, 180);
  170. msleep(40);
  171. play(e2, 180);
  172. msleep(40);
  173. play(e2, 180);
  174. play(d2, 180);
  175. msleep(40);
  176. play(d2, 220);
  177.  
  178. msleep(440);
  179.  
  180. play(h1, 220);
  181. play(d2, 220);
  182. play(h1, 220);
  183. play(d2, 220);
  184. play(h1, 220);
  185. play(d2, 220);
  186. play(h1, 240);
  187.  
  188. play(g2, 440);
  189. play(fis2, 440);
  190. play(e2, 440);
  191. play(d2, 440);
  192.  
  193. msleep(220);
  194.  
  195. */
  196. return 0;
  197. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement