<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[SDL2_mixer und deren Sample Rate]]></title><description><![CDATA[<p>Hiho,</p>
<p>Ich versuche einen perfekten MP3-Sound abzuspielen, aber das klappt nicht bei jedem Track. Mal ist der Sound perfekt, manchmal ist der Track langsamer, manchmal schneller, obwohl ich immer die korrekte Sample Rate bei Mix_OpenAudio mit angebe. Hier ein paar Zeilen Code...</p>
<p>Meine file_info (benutzt die TagLib):</p>
<pre><code class="language-cpp">struct file_info{
    int frequency;

    void get(const std::string&amp; fp){
...
        frequency = reference.audioProperties()-&gt;sampleRate();
    }
};
</code></pre>
<p>Und dann mein music_initializer mit der music-Klasse (file_info in Konjunktion mit SDL2_mixer):</p>
<pre><code class="language-cpp">struct music_initializer{
    music_initializer(const std::string&amp; file_path){
        file_info info;
        info.get(file_path);

        if(Mix_OpenAudio(info.frequency, MIX_DEFAULT_FORMAT, 2, 4096))
            throw std::runtime_error{Mix_GetError()};
    }

    ~music_initializer(){
        Mix_CloseAudio();
    }
};

class music{
...
    void open(const std::string&amp; fp){
        if(music_handle &amp;&amp; (is_playing() || is_paused()))
            stop();

        initializer.reset(new music_initializer(file_path = fp));
        music_handle.reset(Mix_LoadMUS(file_path.c_str()));
...
    }

    void play(){
        if(!music_handle)
            open(file_path);

        if(Mix_PlayMusic(music_handle.get(), -1))
            throw std::runtime_error{Mix_GetError()};
    }
};
</code></pre>
<p>Bei den lazyfoo-Tutorials wird der magische Wert 22050 als Sample Rate benutzt. Das macht den einen oder anderen Track, der ne andere Sample Rate hat, saulahm. Mit der TagLib funktioniert es nun fast so wie gewollt, aber eben nur fast.</p>
<p>Ist die TagLib vielleicht hier nicht das Richtige dafür, bzw. liefert mir die TagLib ungenaue Werte? Ich denk mal schon.</p>
<p>Was brauche ich um die genaue Sample Rate zu bekommen?<br />
Oder Allgemeiner gefragt: Wie krieg ich den perfekten Sound hin?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/338845/sdl2_mixer-und-deren-sample-rate</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 01:24:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/338845.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 14 Jul 2016 16:54:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to SDL2_mixer und deren Sample Rate on Thu, 14 Jul 2016 16:54:14 GMT]]></title><description><![CDATA[<p>Hiho,</p>
<p>Ich versuche einen perfekten MP3-Sound abzuspielen, aber das klappt nicht bei jedem Track. Mal ist der Sound perfekt, manchmal ist der Track langsamer, manchmal schneller, obwohl ich immer die korrekte Sample Rate bei Mix_OpenAudio mit angebe. Hier ein paar Zeilen Code...</p>
<p>Meine file_info (benutzt die TagLib):</p>
<pre><code class="language-cpp">struct file_info{
    int frequency;

    void get(const std::string&amp; fp){
...
        frequency = reference.audioProperties()-&gt;sampleRate();
    }
};
</code></pre>
<p>Und dann mein music_initializer mit der music-Klasse (file_info in Konjunktion mit SDL2_mixer):</p>
<pre><code class="language-cpp">struct music_initializer{
    music_initializer(const std::string&amp; file_path){
        file_info info;
        info.get(file_path);

        if(Mix_OpenAudio(info.frequency, MIX_DEFAULT_FORMAT, 2, 4096))
            throw std::runtime_error{Mix_GetError()};
    }

    ~music_initializer(){
        Mix_CloseAudio();
    }
};

class music{
...
    void open(const std::string&amp; fp){
        if(music_handle &amp;&amp; (is_playing() || is_paused()))
            stop();

        initializer.reset(new music_initializer(file_path = fp));
        music_handle.reset(Mix_LoadMUS(file_path.c_str()));
...
    }

    void play(){
        if(!music_handle)
            open(file_path);

        if(Mix_PlayMusic(music_handle.get(), -1))
            throw std::runtime_error{Mix_GetError()};
    }
};
</code></pre>
<p>Bei den lazyfoo-Tutorials wird der magische Wert 22050 als Sample Rate benutzt. Das macht den einen oder anderen Track, der ne andere Sample Rate hat, saulahm. Mit der TagLib funktioniert es nun fast so wie gewollt, aber eben nur fast.</p>
<p>Ist die TagLib vielleicht hier nicht das Richtige dafür, bzw. liefert mir die TagLib ungenaue Werte? Ich denk mal schon.</p>
<p>Was brauche ich um die genaue Sample Rate zu bekommen?<br />
Oder Allgemeiner gefragt: Wie krieg ich den perfekten Sound hin?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502371</guid><dc:creator><![CDATA[musiclover]]></dc:creator><pubDate>Thu, 14 Jul 2016 16:54:14 GMT</pubDate></item><item><title><![CDATA[Reply to SDL2_mixer und deren Sample Rate on Fri, 15 Jul 2016 06:02:14 GMT]]></title><description><![CDATA[<p><a href="http://www.mega-nerd.com/libsndfile/" rel="nofollow">http://www.mega-nerd.com/libsndfile/</a> gibt dir so ziemlich alle nützlichen Infos, auf jeden Fall die verlässlich die Sample Rate, zu Soundfiles.<br />
Die library ist auch überall vorhanden, wird in vielen prominenten Projekten verwendet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502408</guid><dc:creator><![CDATA[kurze_frage]]></dc:creator><pubDate>Fri, 15 Jul 2016 06:02:14 GMT</pubDate></item><item><title><![CDATA[Reply to SDL2_mixer und deren Sample Rate on Sat, 16 Jul 2016 12:33:28 GMT]]></title><description><![CDATA[<p>Ok, danke für die Info, aber kuck mal:</p>
<pre><code class="language-cpp">#include &lt;sndfile.hh&gt;
#include &lt;iostream&gt;

int main(){
    SndfileHandle f(&quot;track.mp3&quot;);
    std::cout &lt;&lt; f.samplerate();
}
</code></pre>
<p>Das da gibt mir ne 0 aus.<br />
Ich habs wie <a href="https://github.com/erikd/libsndfile/blob/master/examples/sndfilehandle.cc" rel="nofollow">hier</a> gemacht, ab Zeile 51.</p>
<p>Kann mir vielleicht noch einer verraten, was daran so falsch ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502551</guid><dc:creator><![CDATA[musiclover]]></dc:creator><pubDate>Sat, 16 Jul 2016 12:33:28 GMT</pubDate></item><item><title><![CDATA[Reply to SDL2_mixer und deren Sample Rate on Sat, 16 Jul 2016 12:36:31 GMT]]></title><description><![CDATA[<p>Ahja, libsndfile supportet kein MP3, hab ich grad gelesen.<br />
Muss wohl was anderes her, denn ich benutze den SDL2_mixer einzig und allein aus dem Grund, und weil es so einfach ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502552</guid><dc:creator><![CDATA[musiclover]]></dc:creator><pubDate>Sat, 16 Jul 2016 12:36:31 GMT</pubDate></item><item><title><![CDATA[Reply to SDL2_mixer und deren Sample Rate on Wed, 20 Jul 2016 12:22:14 GMT]]></title><description><![CDATA[<p>*push*</p>
<p>Gibt es noch andere Wege einen perfekten MP3-Sound hinzubekommen? Muss ja nicht SDL2_mixer sein.</p>
<p>Ich habe schon libmad versucht, der Code klappt auch, das Problem ist nur, dass ich ihn kaum zur Hälfte verstehe. Das ganze Bit Twiddling macht mich wahnsinnig und ich möchte keinen Code benutzen, den ich selber nicht verstehe.</p>
<p>Gibt es vielleicht eine Library, die +- so einfach in der Benutzung ist, wie der SDL2_mixer?</p>
<p>Ansonsten, gibt es sonst noch was, was mir weiterhelfen könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502872</guid><dc:creator><![CDATA[musiclover]]></dc:creator><pubDate>Wed, 20 Jul 2016 12:22:14 GMT</pubDate></item><item><title><![CDATA[Reply to SDL2_mixer und deren Sample Rate on Wed, 20 Jul 2016 12:38:18 GMT]]></title><description><![CDATA[<p><a href="http://www.un4seen.com/" rel="nofollow">BASS audio library</a> oder <a href="http://www.portaudio.com/" rel="nofollow">PortAudio</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502876</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Wed, 20 Jul 2016 12:38:18 GMT</pubDate></item></channel></rss>