You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

117 lines
2.9KB

  1. /**********************************************/
  2. /** Utility to make various flavors of **/
  3. /** sine wave (rectified, etc), and **/
  4. /** other commonly needed waveforms, like **/
  5. /** triangles, ramps, etc. **/
  6. /** The files generated are all 16 bit **/
  7. /** linear signed integer, of length **/
  8. /** as defined by LENGTH below **/
  9. /**********************************************/
  10. #include <math.h>
  11. #include <stdio.h>
  12. #include <stdlib.h>
  13. #define LENGTH 256
  14. #define PI 3.14159265358979323846
  15. void main()
  16. {
  17. int i,j;
  18. double temp;
  19. short data[LENGTH + 2];
  20. FILE *fd;
  21. /////////// Yer Basic TX81Z Waves, Including Sine ///////////
  22. fd = fopen("halfwave.raw","wb");
  23. for (i=0;i<LENGTH/2;i++)
  24. data[i] = 32767 * sin(i * 2 * PI / (double) LENGTH);
  25. for (i=LENGTH/2;i<LENGTH;i++)
  26. data[i] = 0;
  27. fwrite(&data,2,LENGTH,fd);
  28. fclose(fd);
  29. fd = fopen("sinewave.raw","wb");
  30. for (i=LENGTH/2;i<LENGTH;i++)
  31. data[i] = 32767 * sin(i * 2 * PI / (double) LENGTH);
  32. fwrite(&data,2,LENGTH,fd);
  33. fclose(fd);
  34. fd = fopen("sineblnk.raw","wb");
  35. for (i=0;i<LENGTH/2;i++)
  36. data[i] = data[2*i];
  37. for (i=LENGTH/2;i<LENGTH;i++)
  38. data[i] = 0;
  39. fwrite(&data,2,LENGTH,fd);
  40. fclose(fd);
  41. fd = fopen("fwavblnk.raw","wb");
  42. for (i=0;i<LENGTH/4;i++)
  43. data[i+LENGTH/4] = data[i];
  44. fwrite(&data,2,LENGTH,fd);
  45. fclose(fd);
  46. fd = fopen("snglpeak.raw","wb");
  47. for (i=0;i<=LENGTH/4;i++)
  48. data[i] = 32767 * (1.0 - cos(i * 2 * PI / (double) LENGTH));
  49. for (i=0;i<=LENGTH/4;i++)
  50. data[LENGTH/2-i] = data[i];
  51. for (i=LENGTH/2;i<LENGTH;i++)
  52. data[i] = 0;
  53. fwrite(&data,2,LENGTH,fd);
  54. fclose(fd);
  55. fd = fopen("twopeaks.raw","wb");
  56. for (i=0;i<=LENGTH/2;i++) {
  57. data[LENGTH/2+i] = -data[i];
  58. }
  59. fwrite(&data,2,LENGTH,fd);
  60. fclose(fd);
  61. fd = fopen("peksblnk.raw","wb");
  62. for (i=0;i<=LENGTH/2;i++)
  63. data[i] = data[i*2];
  64. for (i=LENGTH/2;i<LENGTH;i++)
  65. data[i] = 0;
  66. fwrite(&data,2,LENGTH,fd);
  67. fclose(fd);
  68. fd = fopen("ppksblnk.raw","wb");
  69. for (i=0;i<=LENGTH/4;i++)
  70. data[i+LENGTH/4] = data[i];
  71. fwrite(&data,2,LENGTH,fd);
  72. fclose(fd);
  73. /////////// Impulses of various bandwidth ///////////
  74. fd = fopen("impuls10.raw","wb");
  75. for (i=0;i<LENGTH;i++) {
  76. temp = 0.0;
  77. for (j=1;j<=10;j++)
  78. temp += cos(i * j * 2 * PI / (double) LENGTH);
  79. data[i] = 32767 / 10.0 * temp;
  80. }
  81. fwrite(&data,2,LENGTH,fd);
  82. fclose(fd);
  83. fd = fopen("impuls20.raw","wb");
  84. for (i=0;i<LENGTH;i++) {
  85. temp = 0.0;
  86. for (j=1;j<=20;j++)
  87. temp += cos(i * j * 2 * PI / (double) LENGTH);
  88. data[i] = 32767 / 20.0 * temp;
  89. }
  90. fwrite(&data,2,LENGTH,fd);
  91. fclose(fd);
  92. fd = fopen("impuls40.raw","wb");
  93. for (i=0;i<LENGTH;i++) {
  94. temp = 0.0;
  95. for (j=1;j<=40;j++)
  96. temp += cos(i * j * 2 * PI / (double) LENGTH);
  97. data[i] = 32767 / 40.0 * temp;
  98. }
  99. fwrite(&data,2,LENGTH,fd);
  100. fclose(fd);
  101. }