Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.75 KB | None | 0 0
  1. #include <iostream>
  2. #include "basslib.h"
  3. #include <cmath>
  4. #include <functional>
  5.  
  6. HFX fx[4];
  7.  
  8. std::string b2s(bool value){
  9. if (value) return "true";
  10. else return "false";
  11. }
  12.  
  13. std::string updateStatus(mcap::basslib &b, std::string song) {
  14. std::string status = "[playing=" + b2s(b.playing) + "|song=" + song + "]>";
  15. return status;
  16. }
  17.  
  18. int toInteger(std::string value){
  19. int num = 0, size = value.size();
  20. for (int i = 0, j = size; i < size; ++i) num += (value[--j]-'0')*std::pow(10,i);
  21. return num;
  22. }
  23.  
  24.  
  25. void updateFX(int id, int value){
  26.  
  27. if (id<3){
  28. BASS_DX8_PARAMEQ p;
  29. BASS_FXSetParameters(fx[id], &p);
  30. p.fGain = value;
  31. BASS_FXSetParameters(fx[id], &p);
  32. }else{
  33. BASS_DX8_PARAMEQ p;
  34. BASS_DX8_REVERB r;
  35. BASS_FXSetParameters(fx[3], &p);
  36. r.fReverbMix = (value?log(value/20.0)*20:-96);
  37. BASS_FXSetParameters(fx[3], &r);
  38. }
  39.  
  40. }
  41.  
  42. int main(int argc, char *argv[]){
  43. mcap::basslib b;
  44.  
  45. std::string song, status, c;
  46. BASS_DX8_PARAMEQ p;
  47.  
  48. if(!b.initBass()) std::cout << "BASS init failed..." << "n";
  49.  
  50.  
  51. fx[0]=BASS_ChannelSetFX(b.stream, BASS_FX_DX8_PARAMEQ,1);
  52. fx[1]=BASS_ChannelSetFX(b.stream, BASS_FX_DX8_PARAMEQ,1);
  53. fx[2]=BASS_ChannelSetFX(b.stream, BASS_FX_DX8_PARAMEQ,1);
  54. fx[3]=BASS_ChannelSetFX(b.stream, BASS_FX_DX8_REVERB,1);
  55.  
  56. p.fGain = 0;
  57. p.fBandwidth = 18;
  58. p.fCenter = 125;
  59. BASS_FXSetParameters(fx[0], &p);
  60. p.fCenter = 1000;
  61. BASS_FXSetParameters(fx[1], &p);
  62. p.fCenter = 8000;
  63. BASS_FXSetParameters(fx[2], &p);
  64.  
  65. updateFX(0, 0);
  66. updateFX(1, 125);
  67. updateFX(2, 1000);
  68. updateFX(3, 8000);
  69.  
  70.  
  71. if (argc > 1){
  72. song = argv[1];
  73. }
  74.  
  75. std::cout << updateStatus(std::ref(b), song);
  76.  
  77. b.setVolume(100);
  78.  
  79. std::cin >> c;
  80. while(true){
  81.  
  82. if(c=="play") b.play(song);
  83. else if (c=="fx"){
  84. int row, gain;
  85. std::cin >> row >> gain;
  86. updateFX(row, gain);
  87. }else if(c=="fx_"){
  88. int hz, gain;
  89. std::cin >> hz >> gain;
  90. BASS_DX8_PARAMEQ p;
  91.  
  92. p.fCenter = hz;
  93. p.fGain = gain;
  94. BASS_FXSetParameters(fx[0], &p);
  95. }
  96.  
  97. std::cout << updateStatus(std::ref(b), song);
  98. std::cin >> c;
  99. }
  100.  
  101. BASS_Free();
  102. return 0;
  103. }
  104.  
  105. #include <iostream>
  106. #include "bass.h"
  107.  
  108. namespace mcap{
  109. class basslib{
  110. public:
  111. bool playing = false;
  112. bool paused = false;
  113. float gvol = 0;
  114. HSTREAM stream;
  115.  
  116. bool initBass();
  117. void play(std::string filename);
  118. void setVolume(float vol);
  119. void pause();
  120. void stop();
  121. float getPosition();
  122. void setPosition(float value);
  123. };
  124. }
  125.  
  126. #include "basslib.h"
  127.  
  128. using namespace mcap;
  129.  
  130. bool basslib::initBass(){
  131. playing = false;
  132. if(BASS_Init(-1, 44100, BASS_DEVICE_3D, 0, 0)) return true;
  133. return false;
  134. }
  135.  
  136. void basslib::play(std::string filename){
  137. if(playing == false && paused == false){
  138. stream = BASS_StreamCreateFile(false, filename.c_str(), 0,0,0);
  139. BASS_ChannelPlay(stream, false);
  140. playing = true;
  141. if (gvol == 0) setVolume(100);
  142. else setVolume(gvol);
  143. }else if (playing == true && paused == true) {
  144. paused = false;
  145. BASS_ChannelPlay(stream, false);
  146. }else if (playing == true && paused == false) stop();
  147. }
  148.  
  149. void basslib::pause(){
  150. BASS_ChannelPause(stream);
  151. paused = true;
  152. }
  153.  
  154. void basslib::setVolume(float vol){
  155. gvol = vol;
  156. BASS_ChannelSetAttribute(stream, BASS_ATTRIB_VOL, gvol/100);
  157. }
  158.  
  159. void basslib::stop(){
  160. BASS_ChannelStop(stream);
  161. playing = false;
  162. paused = false;
  163. }
  164.  
  165. float basslib::getPosition(){
  166. float full = BASS_ChannelGetLength(stream, BASS_POS_BYTE);
  167. float percent = full / 100;
  168. float current = BASS_ChannelGetPosition(stream, BASS_POS_BYTE);
  169.  
  170. return current / percent;
  171. }
  172.  
  173. void basslib::setPosition(float value){
  174. float full = BASS_ChannelGetLength(stream, BASS_POS_BYTE);
  175. float current = (value * full) / 100;
  176.  
  177. BASS_ChannelSetPosition(stream, current, BASS_POS_BYTE);
  178. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement