00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include "Core/precomp.h"
00016 #include <math.h>
00017
00018 #include <Core/Sound/Be/cardplayback_be.h>
00019
00020 CL_CardPlayback_Be::CL_CardPlayback_Be(BSimpleGameSound *buffer)
00021 {
00022 if (buffer)
00023 {
00024 if (buffer->IsPlaying())
00025 {
00026 soundbuffer = (BSimpleGameSound*)buffer->Clone();
00027 } else
00028 {
00029 soundbuffer = buffer;
00030 }
00031 if (soundbuffer->InitCheck() != B_OK)
00032 {
00033 std::cout << "Something went wrong with sound initialization" << std::endl;
00034 delete soundbuffer;
00035 soundbuffer = NULL;
00036 }
00037 } else
00038 {
00039 soundbuffer = NULL;
00040 }
00041 }
00042
00043 CL_CardPlayback_Be::~CL_CardPlayback_Be()
00044 {
00045 std::cout << "deleted" << std::endl;
00046 if (soundbuffer)
00047 delete soundbuffer;
00048 }
00049
00050
00051
00052
00053 int CL_CardPlayback_Be::get_position()
00054 {
00055 return -1;
00056 }
00057
00058 float CL_CardPlayback_Be::get_position_relative()
00059 {
00060 return 0;
00061 }
00062
00063 bool CL_CardPlayback_Be::set_position(int new_pos)
00064 {
00065 return false;
00066 }
00067
00068 bool CL_CardPlayback_Be::set_position_relative(float new_pos)
00069 {
00070 return false;
00071 }
00072
00073 int CL_CardPlayback_Be::get_length()
00074 {
00075 return 0;
00076 }
00077
00078 int CL_CardPlayback_Be::get_frequency()
00079 {
00080 if (soundbuffer==NULL) return 0;
00081
00082 gs_attribute attr;
00083 attr.attribute = B_GS_SAMPLING_RATE;
00084
00085 soundbuffer->GetAttributes(&attr,1);
00086 return (int)attr.value;
00087 }
00088
00089 bool CL_CardPlayback_Be::set_frequency(int new_freq)
00090 {
00091 if (soundbuffer==NULL) return 0;
00092
00093 gs_attribute attr;
00094 attr.attribute = B_GS_SAMPLING_RATE;
00095 attr.value = new_freq;
00096
00097 return (soundbuffer->SetAttributes(&attr,1) == B_OK);
00098 }
00099
00100 float CL_CardPlayback_Be::get_volume()
00101 {
00102 if (soundbuffer==NULL) return 0;
00103
00104 return soundbuffer->Gain();
00105 }
00106
00107 bool CL_CardPlayback_Be::set_volume(float new_volume)
00108 {
00109 if (soundbuffer==NULL) return 0;
00110
00111 return (soundbuffer->SetGain(new_volume) == B_OK);
00112 }
00113
00114 float CL_CardPlayback_Be::get_pan()
00115 {
00116 if (soundbuffer==NULL) return 0;
00117
00118 return soundbuffer->Pan();
00119 }
00120
00121 bool CL_CardPlayback_Be::set_pan(float new_pan)
00122 {
00123 if (soundbuffer==NULL) return 0;
00124
00125 return (soundbuffer->SetPan(new_pan) == B_OK);
00126 }
00127
00128 CL_SoundPlayBackDesc *CL_CardPlayback_Be::add_playback_desc(
00129 CL_SoundPlayBackDesc * desc)
00130 {
00131 return desc;
00132 }
00133
00134 bool CL_CardPlayback_Be::remove_playback_desc(
00135 CL_SoundPlayBackDesc * )
00136 {
00137 return true;
00138 }
00139
00140 void CL_CardPlayback_Be::play()
00141 {
00142 if (soundbuffer==NULL) return;
00143
00144 soundbuffer->StartPlaying();
00145 }
00146
00147 void CL_CardPlayback_Be::stop()
00148 {
00149 if (soundbuffer==NULL) return;
00150
00151 soundbuffer->StopPlaying();
00152 }
00153
00154 bool CL_CardPlayback_Be::is_playing()
00155 {
00156 return soundbuffer->IsPlaying();
00157 }