So ich bin schon am umbauen. Funktioniert soweit. Nur habe ich irgendwie so das Gefühl das man bei deiner Variante nicht so gut sieht wie bei meiner.

Generell, warum ist die dieser von unten nach Oben zeichen Variante lieber wie die die ich genommen hate? Nach meiner Variante wird es doch auch in anderen Soundprogrammen angezeigt.

Code:
#include <iostream>
#include <vector>
#include <fstream>
#include <string>

#include <stdio.h>
#include <limits.h>
#include <math.h>

#include <VG/openvg.h>
#include <VG/vgu.h>
#include <fontinfo.h>
#include <shapes.h>

#include "diaSound.hpp"

bool ausgabe = true;

int _width_=1024, _height_=600;

void initOpenVG() 
{
	initWindowSize(0, 0, _width_, _height_);
	init(&_width_, &_height_);               
	Start(_width_, _height_);                   
	Background(0, 0, 0);                             
	StrokeWidth(1.0);
	WindowClear();
}

void plotArray(int32_t *array, int32_t arrlength, int y0) 
{
	float xscale=1.0, border=100.0;
	xscale = (float) (arrlength-border)/_width_;

	int i;

 	Fill(0, 255, 255, 1); 
	Stroke(0, 255, 255, 1);
	     
	for(i=0;i<arrlength;i++)
	{		
		Line((VGfloat)xscale*i, (VGfloat) y0, (VGfloat)xscale*i, (VGfloat)(y0+array[i]));
	}
	End();  
}

void analyse(int32_t *array, int32_t arrlength)
{
	int32_t     sbuf[128];
	int32_t     bias, minr, maxr, baseline, 
				signalstart, signalend;

	int32_t maximum = array[0];
	int32_t minimum = array[0];
	
	int32_t maxpos, minpos;
	
	int32_t i;

	for(i=0;i<arrlength;i++)
	{
		if(array[i] > maximum)
		{
			maximum = array[i];
			
			maxpos = i;
		}

		if(array[i] < minimum)
		{
			minimum = array[i];
			
			minpos = i;
		}
	}
	
	maximum = array[0];
	minimum = array[0]; 

	for(i=0;i<arrlength; ++i)
	{
	 if(array[i] > maximum)    
	 {
		maximum = array[i];      
		maxpos = i;
	 }
	 if(array[i] < minimum)     
	 {
	   minimum = array[i];      
	   minpos = i;
	 }
	}


	// calculate baseline from last 100 array cells:
	// init vars
	baseline=(array[minpos] + array[maxpos]) / 2;  // init baseline by (min+max)/2

	minr=baseline - 1;
	maxr=baseline + 1;

	// auto-adjust:  
	for(i=arrlength-100; i<arrlength; ++i) 
	{    
	 // mean baseline
	 baseline = round((0.5*(float)array[i]  + 0.5*(float)baseline)) ;

	 // smoothed out max noise
	 if(array[i] >= baseline) maxr = round((0.6*(float)array[i]  + 0.4*(float)maxr)) +1 ;

	 // smoothed out min noise
	 if(array[i] <= baseline) minr = round((0.6*(float)array[i]  + 0.4*(float)minr)) -1 ;       
	}

	bias = max(baseline-minr, maxr-baseline) +1;  

	// noise reduction start/end 
	// drop small noise

	for(i=0;i<arrlength;++i) 
	{
	  if((array[i]>baseline) && (array[i] <= baseline + bias)) array[i] = baseline ; // little higher value => drop to baseline
	  else
	  if((array[i]<baseline) && (array[i] >= baseline - bias)) array[i] = baseline ; // little lower value => rise to baseline
	}


	// signalstart, signalend: threshold = bias + (bias/2)   
	signalstart = 0;

	i = 0;

	while((array[i]<=baseline + 4 * bias/3) && (i<SHRT_MAX-1)) ++i;

	signalstart = i;

	if(i > 0) signalstart -= 1;   

	signalend=arrlength-1;

	i=arrlength-1;

	while((array[i]<=baseline + + 4*bias/3) && (i>signalstart)) --i;

	signalend = i;

	if(i<arrlength-1) signalstart +=1;     

	if(ausgabe) 
	{
		cout << "Bias: " << bias << endl;
		cout << "Maximal: " << maximum << endl;
		cout << "Minimal: " << minimum << endl;
		cout << "Signalstart: " << signalstart << endl;
		cout << "Signalende: " << signalend << endl;
	}
}

int main(int argc, char *argv[])
{
	fstream datei;
	
	int32_t waveBuffer[SHRT_MAX];

	int32_t i;

	char s[3];

	initOpenVG();

	if(argc <= 1) audioCapture(waveBuffer, SHRT_MAX, "plughw:1,0", 1, 12000, 8);
	else
	{
		datei.open(argv[1], ios::in);
		
		for(i=0;i<SHRT_MAX;++i)
		{
			datei >> waveBuffer[i];
		}
		
		datei.close();
	}
	
	for(i=0;i<SHRT_MAX;i++)
	{
		waveBuffer[i] = waveBuffer[i] & 0x00ff;
	} 
	
	plotArray(waveBuffer, SHRT_MAX, 0);

	analyse(waveBuffer, SHRT_MAX);

	plotArray(waveBuffer, SHRT_MAX, 255);

	if(ausgabe)
	{
		uint8_t *wave;
	
		wave = (uint8_t *) malloc(SHRT_MAX+1);
		
		for(i=0;i<SHRT_MAX;i++) wave[i] = waveBuffer[i];
	
		playCaptured(wave, SHRT_MAX, "plughw:1,0", 1, 12000, 8);
	
		free(wave);
	}

	fgets(s, 2, stdin);

	finish();
	
	return 1;
}
Was ssh angeht. Ja es mag eine Linux Geschichte sein, nur verstehe ich dein Problem damit nicht ganz. Ich nehme mal stark an du startest das compilierte Programm jetzt auch in einem Terminal auf dem Raspi. Dann ist der Unterschied eigentlich super gering. Mittels Putty kannst du eine Verbindung zum Raspi aufbauen- Dabei hast du dann ja einen Terminal der eben nur auf deinem Windows läuft anstatt auf dem Raspi. Nicht einmal auf deinem Windows läuft sondern nur auf diesem angezeigt wird. Wenn du dort dann

Code:
geany &
startet geany auf dem Raspi und leitet seine GUI auf dein Windows um. Es läuft also prinzipiell Alles genau so wie auf dem Raspi.Wäre ja zumindest für den Übergang sinnvoll.