Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include "basslib.h"
- #include <cmath>
- #include <functional>
- HFX fx[4];
- std::string b2s(bool value){
- if (value) return "true";
- else return "false";
- }
- std::string updateStatus(mcap::basslib &b, std::string song) {
- std::string status = "[playing=" + b2s(b.playing) + "|song=" + song + "]>";
- return status;
- }
- int toInteger(std::string value){
- int num = 0, size = value.size();
- for (int i = 0, j = size; i < size; ++i) num += (value[--j]-'0')*std::pow(10,i);
- return num;
- }
- void updateFX(int id, int value){
- if (id<3){
- BASS_DX8_PARAMEQ p;
- BASS_FXSetParameters(fx[id], &p);
- p.fGain = value;
- BASS_FXSetParameters(fx[id], &p);
- }else{
- BASS_DX8_PARAMEQ p;
- BASS_DX8_REVERB r;
- BASS_FXSetParameters(fx[3], &p);
- r.fReverbMix = (value?log(value/20.0)*20:-96);
- BASS_FXSetParameters(fx[3], &r);
- }
- }
- int main(int argc, char *argv[]){
- mcap::basslib b;
- std::string song, status, c;
- BASS_DX8_PARAMEQ p;
- if(!b.initBass()) std::cout << "BASS init failed..." << "n";
- fx[0]=BASS_ChannelSetFX(b.stream, BASS_FX_DX8_PARAMEQ,1);
- fx[1]=BASS_ChannelSetFX(b.stream, BASS_FX_DX8_PARAMEQ,1);
- fx[2]=BASS_ChannelSetFX(b.stream, BASS_FX_DX8_PARAMEQ,1);
- fx[3]=BASS_ChannelSetFX(b.stream, BASS_FX_DX8_REVERB,1);
- p.fGain = 0;
- p.fBandwidth = 18;
- p.fCenter = 125;
- BASS_FXSetParameters(fx[0], &p);
- p.fCenter = 1000;
- BASS_FXSetParameters(fx[1], &p);
- p.fCenter = 8000;
- BASS_FXSetParameters(fx[2], &p);
- updateFX(0, 0);
- updateFX(1, 125);
- updateFX(2, 1000);
- updateFX(3, 8000);
- if (argc > 1){
- song = argv[1];
- }
- std::cout << updateStatus(std::ref(b), song);
- b.setVolume(100);
- std::cin >> c;
- while(true){
- if(c=="play") b.play(song);
- else if (c=="fx"){
- int row, gain;
- std::cin >> row >> gain;
- updateFX(row, gain);
- }else if(c=="fx_"){
- int hz, gain;
- std::cin >> hz >> gain;
- BASS_DX8_PARAMEQ p;
- p.fCenter = hz;
- p.fGain = gain;
- BASS_FXSetParameters(fx[0], &p);
- }
- std::cout << updateStatus(std::ref(b), song);
- std::cin >> c;
- }
- BASS_Free();
- return 0;
- }
- #include <iostream>
- #include "bass.h"
- namespace mcap{
- class basslib{
- public:
- bool playing = false;
- bool paused = false;
- float gvol = 0;
- HSTREAM stream;
- bool initBass();
- void play(std::string filename);
- void setVolume(float vol);
- void pause();
- void stop();
- float getPosition();
- void setPosition(float value);
- };
- }
- #include "basslib.h"
- using namespace mcap;
- bool basslib::initBass(){
- playing = false;
- if(BASS_Init(-1, 44100, BASS_DEVICE_3D, 0, 0)) return true;
- return false;
- }
- void basslib::play(std::string filename){
- if(playing == false && paused == false){
- stream = BASS_StreamCreateFile(false, filename.c_str(), 0,0,0);
- BASS_ChannelPlay(stream, false);
- playing = true;
- if (gvol == 0) setVolume(100);
- else setVolume(gvol);
- }else if (playing == true && paused == true) {
- paused = false;
- BASS_ChannelPlay(stream, false);
- }else if (playing == true && paused == false) stop();
- }
- void basslib::pause(){
- BASS_ChannelPause(stream);
- paused = true;
- }
- void basslib::setVolume(float vol){
- gvol = vol;
- BASS_ChannelSetAttribute(stream, BASS_ATTRIB_VOL, gvol/100);
- }
- void basslib::stop(){
- BASS_ChannelStop(stream);
- playing = false;
- paused = false;
- }
- float basslib::getPosition(){
- float full = BASS_ChannelGetLength(stream, BASS_POS_BYTE);
- float percent = full / 100;
- float current = BASS_ChannelGetPosition(stream, BASS_POS_BYTE);
- return current / percent;
- }
- void basslib::setPosition(float value){
- float full = BASS_ChannelGetLength(stream, BASS_POS_BYTE);
- float current = (value * full) / 100;
- BASS_ChannelSetPosition(stream, current, BASS_POS_BYTE);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement