#include <fstream>
#include <math.h>
#include <string>
#include <algorithm>
using namespace std;
class wavfile {
string path;
unsigned int bitsPerSample, sampleRate, filesize, bytesPerSecond, filelength;
fstream file;
float* samples;
public:
wavfile (string);
unsigned int bitspersample ();
unsigned int samplerate ();
unsigned int size ();
unsigned int length ();
unsigned int byterate ();
private:
void instantiate ();
void sampleArray (int, int);
};
wavfile::wavfile(const string p){
path = p;
wavfile::instantiate();
}
void wavfile::instantiate(){
file.open(path.c_str(), ios::in|ios::binary);
file.seekg(0, ios::end);
filesize = (int) file.tellg();
file.seekg(24, ios::beg);
file.read ((char *)&sampleRate, sizeof(sampleRate));
file.seekg(34, ios::beg);
bitsPerSample = (unsigned int) file.get();
file.seekg (28, ios::beg);
file.read ((char *)&bytesPerSecond, sizeof(bytesPerSecond));
filelength = ceil((double )(filesize-44)/ (double) bytesPerSecond);
samples = new float[300];
sampleArray(300, 256);
for(unsigned int i = 0; i < 300; i++){
cout << samples[i] << endl;
}
}
unsigned int wavfile::bitspersample(){
return bitsPerSample;
}
unsigned int wavfile::samplerate(){
return sampleRate;
}
unsigned int wavfile::size(){
return filesize;
}
unsigned int wavfile::length(){
return filelength;
}
unsigned int wavfile::byterate(){
return bytesPerSecond;
}
void wavfile::sampleArray(int amount, int precision){
//Sikre at hvert skridt er et multiplicit af 4, sådan så vi rammer et sample (og ikke lander midt i ét)
unsigned int steplength = (((filesize-44) / (amount*precision))/4)*4;
unsigned int stepAmount = amount*precision;
unsigned int counter = 0;
int pcounter = 1;
int currentValue = 0;
for(unsigned int i = 0; i < stepAmount; i++){
file.seekg(44+(i*steplength), ios::beg);
short int left;
short int right;
file.read ((char *)&left, 2);
file.read ((char *)&right, 2);
int tempValue = max(left, right);
if(tempValue > currentValue){
currentValue = tempValue;
}
if(pcounter == precision){
samples[counter] = (float) currentValue / (float) 32767;
pcounter = 1;
counter++;
} else {
pcounter++;
}
}
}
Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.
Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.
Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...
Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.
Her har du de mest banebrydende håndholdte computere gennem alle tider.