Neu

Brainstorm Supersaw Vergleich?

Wilde Suche nach Themen, Ideen …
  • #155
Sind doch echt ein paar schöne Beispiele zustande gekommen. Auch die Pseudoversuche fand ich spannend, was da geht oder eben nicht.
 
  • #156
Noch mal mit Chords und etwas anders eingestellt (Lead mehr Detune, Chords weniger Detune):
Anhang anzeigen Jens_Groh_supersaw02.mp3
Unser Gehör scheint zu merken, dass es nicht "Das Original" ist, aber näher bin ich nicht herangekommen. War ein Experiment vor 7 Jahren, hat keinen Namen. Irgendwas hatte ich im Wavetable-Player "anders" gemacht, um das Aliasing wegzukriegen. Mein Ziel war, ohne viel Rechenlast den Sound so glatt wie möglich zu machen.
 
  • Daumen hoch
M.i.a.u.: Dagalos und rolfdegen
  • #158
So ein Vergleich ist doch sehr interessant. Jeder Synth hat so seinen eigen Klangkarakter trotz ähnlicher Technik.
Hier ist mein Versuch: Ich hatte mal diesen Software-Synth programmiert. Eigene, Wavetable-verwandte Synthese, Aufnahme ohne Effekte.
Ihr dürft raten, wieviele Oszillatoren im Einsatz sind (für beide Stereokanäle zusammen).
Anhang anzeigen 275208
Ich würde auf einen Oszillator tippen. Für die Jeannie habe ich für unseren Vergleich auch nur einen Oszillator verwendet. Dieser berechnet aus einer Saw noch 4 weitere zu einer SupperSaw.

Jeannie SuperSaw
C:
// WaveformModulated MULTISAW -------------------------------------
    case WAVEFORM_MULTISAW:
    {
        int32_t sample;
        uint8_t parameter_a;
        uint8_t parameter_b;
        parameter_a = osc_par_a; // Parameter Spread
        parameter_b = osc_par_b; // Parameter Sawmix

        phase_spread = (phase_increment >> 14) * parameter_a;
        ++phase_spread;
        saw_phase_increment = phase_increment & random(0xFFFF);
        for (uint8_t i = 0; i < 5; ++i)
        {
            saw_phase_increment += phase_spread;
            state_saw.increments[i] = saw_phase_increment;
        }
        // Phase spread and sawmix
        int32_t magnitude_a;
        int32_t magnitude_b;
        magnitude_a = magnitude * ((128 - parameter_b) * 0.004f);
        magnitude_b = magnitude * ((1 + parameter_b) * 0.002f);

        for (i = 0; i < AUDIO_BLOCK_SAMPLES; i++)
        {
            state_saw.data_qs_phase[0] -= state_saw.increments[1];
            state_saw.data_qs_phase[1] -= state_saw.increments[2];
            state_saw.data_qs_phase[2] += state_saw.increments[3];
            state_saw.data_qs_phase[3] += state_saw.increments[4];
            state_saw.phase[0] = phasedata[i];
            state_saw.phase[1] = (state_saw.phase[0] + state_saw.data_qs_phase[0]);
            state_saw.phase[2] = (state_saw.phase[1] + state_saw.data_qs_phase[1]);
            state_saw.phase[3] = (state_saw.phase[2] + state_saw.data_qs_phase[2]);
            state_saw.phase[4] = (state_saw.phase[3] + state_saw.data_qs_phase[3]);
            sample = (signed_multiply_32x16t(magnitude_a, state_saw.phase[0]));
            sample += (signed_multiply_32x16t(magnitude_b, state_saw.phase[1]));
            sample += (signed_multiply_32x16t(magnitude_b, state_saw.phase[2]));
            sample += (signed_multiply_32x16t(magnitude_b, state_saw.phase[3]));
            sample += (signed_multiply_32x16t(magnitude_b, state_saw.phase[4]));
           
            float sample_f;
            sample_f = sample * 1.2f * DIV32768;
            sample_f = 1.5f * sample_f - 0.5f * sample_f * sample_f * sample_f;
            sample = (sample_f * 32768);
            *bp++ = ~sample;
        }
    }
    break;
 
Zuletzt bearbeitet:
  • Zustimmung
M.i.a.u.: Dagalos

News

Zurück
Oben