Wavetables für Microfreak bzw allgemein

polysix

|||||
Ein herzliches Hallo in die Runde,

nachdem ich jetzt doch meinen microfreak schmerzlich vermisse kommt er Morgen zurück bloß in weiß :cool:


Ich hatte angefangen mit Audioterm erste eigene Wavetables zu bauen. Bzw eher experementiert.
Jetzt mal eine Frage an Euch Experten wie bekomme ich denn Rauschen als Wavetable gebaut?
Dann noch eine Frage. Ich habe glesen das ein Buchla Modul auch wavetables besitzt (Modul 259 habe ich gesehen) wisst ihr wie man sowas nachbaut?
Und kennt ihr eine gute Seite oder tutorial wo das erstellen von Wavetables gut und einfach (soweit das überhaupt geht) erklärt wird.

Freue mich über jeden Hinweis wie ich an die Materie rangehen sollte..
 
Schau doch z.B. https://synthtech.com/waveedit/ dir mal an unten sind auch Videos

Und hier gibts auch einiges an Waves http://waveeditonline.com

Achso du kannst glaube ich auch ganz normale Audiodateien in den MF laden, Rauschen Recorden reinladen fertig

Super danke. Mein neuer Freak ist jetzt auch da. Waveedit und audioterm hab ich laufen.

Schade das sich forum sich niemand meldet der sich intensiv mit dem erstelle beschäftigt hat und gezielt tables erstellt. 😊
 
Hallo,

ich beschäftige mich auch schon einige Zeit damit. Habe seit einer Woche einen MicroFreak und bin feste am Ausprobieren.

Habe auch schon vergeblich nach Tutorials zum Thema Wavetable-Bau gesucht, bisher leider nichts gescheites gefunden.

Probiere gerade mit den Wavetables von WaveEditOnline herum...
 
@polysix
Hast Du inzwischen etwas zum Thema "Wavetable erstellen" gefunden oder bist Du evtl. selber weiter gekommen?
 
@polysix
Hast Du inzwischen etwas zum Thema "Wavetable erstellen" gefunden oder bist Du evtl. selber weiter gekommen?

Wenn Du mich meinst... Leider nicht so wie ich mir das vorgestellt habe. Auf jedenfall kamen die besten Ergebnisse wenn ich meine wav in der Tonhöhe tiefer gepitcht hatte. Und die Länge war auch entscheidend. Osc shrink oder wie der youtuber heisst hatte das ausgerechnet. Mit Audioterm hat es Spaß gemacht Additive sounds zu bauen. Die bässe hatten richtig Rums 😁 aber es war mir dann doch zu anstrengend und der wavetable synth in bitwig hat den freak abgelöst..
Ich glaube mit den andren tools passt das nicht da die wavetable Dann nicht die länge hat und dann bei der Übertragung gestaucht wird.. Aber ich kenn mich da zu wenig aus. Reine Spekulation.
Schade ich hatte immer gehofft das Arturia da einen Editor rausbringen.
 
zur ausgangsfrage aus dem april: nicht anders als ein kontinuierliches rauschen auch.

dass sehr kurze wavetables kein "ideales" rauschen darstellen können liegt dabei in der natur der sache und ist nicht zu vermeiden.
 
Osc shrink oder wie der youtuber heisst hatte das ausgerechnet.
Yup, Oscillator Sink heißt er. Das Video über deinem Post.

aber es war mir dann doch zu anstrengend
Yup. Definitiv zu viel Raketenmagie. OSC Sink schreibt dazu:

Clarification: on the point of the number of samples per cycle - this is what the Midi Control Centre expects as an audio import format - not what appears to be ultimately stored on the Microfreak (which is 256 samples per cycle). From the perspective of generating your own wavetables from audio files, this isn't particularly relevant, but it's interesting to note that your audio is internally resampled before it goes to the Microfreak.

Ich werd's irgendwann trotzdem versuchen, um rauszufinden, welche Relevanz die Länge wirklich hat. Und weil ich die "Werkstables" ziemlich lame finde.
 
Das mit dem Erstellen von eigenen Wavetables scheint nicht so einfach zu sein.
Doch, hab's gerade probiert:

- 16 kurze Monosamples erstellt (alle ca. anderthalb Sekunden lang)
- Freak via USB mit dem Rechner verbunden
- MIDI Control Center gestartet
- dort unter Wavetables eine neue Bank erstellt
- die 16 Samples in diese Bank kopiert (drag & drop)

Das ist alles. Der MF konvertiert sie dann automatisch.

1665426805523.png
 
Doch, hab's gerade probiert:

- 16 kurze Monosamples erstellt (alle ca. anderthalb Sekunden lang)
- Freak via USB mit dem Rechner verbunden
- MIDI Control Center gestartet
- dort unter Wavetables eine neue Bank erstellt
- die 16 Samples in diese Bank kopiert (drag & drop)

Das ist alles. Der MF konvertiert sie dann automatisch.

Anhang anzeigen 154425

Ja, solche Wellenformen hatte ich auch schnell. Aber veruch mal welche mit wenig Spitzen zu erzeugen. wo der scanner (ich meine die blaue welle) eben nur langsam durchläuft.. ich glaube die sind nämlich einfach von der freq zu viel hochtönig..
 
Ich hatte mich bei OSC Sink völlig verlesen.

From the perspective of generating your own wavetables from audio files, this isn't particularly relevant

Ich las IS relevant. Also werden die beim Importieren alle auf 256 gekürzt?
 
Ich hatte mich bei OSC Sink völlig verlesen.



Ich las IS relevant. Also werden die beim Importieren alle auf 256 gekürzt?

So wie ich das verstehe werden die gestaucht. Ich fand die immer von der transposition zu hoch.. Nimm mal audioterm da passt das glaube ich in die tabelle. 32 slots oder so.. Aber richtig weiß ich das aber auch nicht
 
Wenn man auf "Recall to Computer" klickt, transferiert er die irgendwo hin. Jemand 'ne Ahnung wo hin?

1665431051038.png
 
diese sache mit dem "konvertieren" ist aber nur eine notlösung. es ist schon besser das zeug so gestalten wie es das jeweilige gerät verlangt.
 
So wie ich das verstehe werden die gestaucht.

Dazu steht auch etwas im Handbuch, hier mal der ganze Abschnitt (Seite 96 aus dem engl. User Manual):

MicroFreak works some magic when you import Wavetables. Its Wavetables each have 32
cycles (individual waveforms), and each cycle is 2,048 samples long. When you import a
WAV or AIFF file, MicroFreak resamples it and converts it to an MFW file the MicroFreak can
use. Here is what happens during that process:

• MicroFreak counts every set of 2,048 samples as a cycle.

• The first and last cycles of the source file remain unchanged, and become cycles
1 and 32.

• If the source has more than 8 cycles, MicroFreak builds a continuous Wavetable
with all the cycles evenly spread out, with linear crossfading between them. This
means the resulting Wavetable will represent the original content from beginning
to end — MicroFreak does not simply stop resampling when it hits the end of 8
cycles.

• If the source has fewer than 8 cycles, MicroFreak uses a custom algorithm to
spread them across all the slots. This ensures that the Wave knob will reach all
the cycles as you turn it to scroll through the Wavetable.

Musically, all this means that you don’t have to perform editing surgery to make audio files
work as MicroFreak Wavetables. You certainly can if you want, but you can also just grab
files you think offer creative possibilities and let MicroFreak take care of the rest.
 
Dazu steht auch etwas im Handbuch, hier mal der ganze Abschnitt (Seite 96 aus dem engl. User Manual):

Ich glaube die meisten wavetable Editoren haben 64 slots und daher passt das oft nicht. Die files werden gestaucht, erhalten hohe Wellen und daher saust der Scanner so nervös hin und her.
Audioterm baut die adfitiven in 32 slots und wenn vorsichtig eingezeichnet wird gibt es "schöne" Wavetables mit leichten Verläufen.
Ich muss gestehen das es ein Grund war den freak dann doch nicht zu behalten da ich spannend aber auch alsbanstrengend entfand Wavetables selber zu bauen die musikalisch für mich passten.
Mein oben geschriebenes bitte mit Vorsicht verwursten ich hab da auch keine wirkliche Ahnung...
 
Ich glaube die meisten wavetable Editoren haben 64 slots und daher passt das oft nicht. Die files werden gestaucht, erhalten hohe Wellen und daher saust der Scanner so nervös hin und her.
Ich glaube, die Darstellung des Scanners im MIDI Control Center ist nur eine einfache Animation. Das "Verhalten" ändert sich ja nicht, egal was du einstellst. Selbst die Wellenform ändert sich nur, wenn man sie im Center anklickt.
 
Mit GNU Octave kann man solche Wavetables auf den Punkt genau rendern. Man muss halt Ahnung von trigonometrischen Funktionen haben. Ich hab vor zwei Jahren damit mal herum gespielt und ne ziemlich fiese Nummer (siehe Octave-Script + mp3 weiter unten) damit erzeugt. Das sollte die grundsätzliche Machbarkeit belegen. Im Detail gibt's dann hier ne Anleitung, wie man damit Wavetables erzeugt:

https://www.kimurataro.com/blog/basics-of-creating-wavetables-in-octave-vol1
https://www.kimurataro.com/blog/the-basics-of-creating-wavetables-in-octave-vol2
https://www.kimurataro.com/blog/basics-of-creating-wavetables-in-octave-vol3
https://www.kimurataro.com/blog/basics-of-creating-wavetables-in-octave-vol4envelope


# Einzeiliger Kommentar
#{ Mehrzeiliger Kommentar

#}

Code:
#{

# COMMA = TAB
matrix_a = [row-element , row-element , row-element]
# ==> 1 row, 3 columns

# SEMICOLON = RETURN (=CR&LF)
matrix_b = [column-element ; column-element ; column-element]
# ==> 3 rows, 1 column

#---------------------------------------------------------------

a = [1;1;1]
b = [2;2;2]

a = horzcat(a,b) #<<< append matrix 'b' to matrix 'a' horizontally

a = [1,2;1,2;1,2]

#}

pkg load signal;

#octave-multipliers
o2 = 2;
o3 = 4;
o4 = 8;
o5 = 16;
o6 = 32;
o7 = 64;
o8 = 128;
o9 = 256;

#base-frequencies // AKA piano roll
c1            =    32.7032;     #first octave
  cis1 = des1 =    34.6478; ###
d1            =    36.7081;
  dis1 =  es1 =    38.8909; ###
e1     = fes1 =    41.2034;
f1     = eis1 =    43.6535;
  fis1 = ges1 =    46.2493; ###
g1            =    48.9994;
  gis1 =  as1 =    51.9131; ###
a1            =    55.0;
  b1   = ais1 =    58.2705; ###
h1            =    61.7354;
c2            = o2 * c1   ;     #second octave
  cis2 = des2 = o2 * cis1 ; ###
d2            = o2 * d1   ;
  dis2 =  es2 = o2 * dis1 ; ###
e2     = fes2 = o2 * e1   ;
f2     = eis2 = o2 * f1   ;
  fis2 = ges2 = o2 * fis1 ; ###
g2            = o2 * g1   ;
  gis2 =  as2 = o2 * gis1 ; ###
a2            = o2 * a1   ;
    b2 = ais2 = o2 * b1   ; ###
h2            = o2 * h1   ;
c3            = o3 * c1   ;     #third octave
  cis3 = des3 = o3 * cis1 ; ###
d3            = o3 * d1   ;
  dis3 =  es3 = o3 * dis1 ; ###
e3     = fes3 = o3 * e1   ;
f3     = eis3 = o3 * f1   ;
  fis3 = ges3 = o3 * fis1 ; ###
g3            = o3 * g1   ;
  gis3 =  as3 = o3 * gis1 ; ###
a3            = o3 * a1   ;
    b3 = ais3 = o3 * b1   ; ###
h3            = o3 * h1   ;     #fourth octave
c4            = o4 * c1   ;
  cis4 = des4 = o4 * cis1 ; ###
d4            = o4 * d1   ;
  dis4 =  es4 = o4 * dis1 ; ###
e4     = fes4 = o4 * e1   ;
f4     = eis4 = o4 * f1   ;
  fis4 = ges4 = o4 * fis1 ; ###
g4            = o4 * g1   ;
  gis4 =  as4 = o4 * gis1 ; ###
a4            = o4 * a1   ;
    b4 = ais4 = o4 * b1   ; ###
h4            = o4 * h1   ;    #fifth octave
c5            = o5 * c1   ;
  cis5 = des5 = o5 * cis1 ; ###
d5            = o5 * d1   ;
  dis5 =  es5 = o5 * dis1 ; ###
e5     = fes5 = o5 * e1   ;
f5     = eis5 = o5 * f1   ;
  fis5 = ges5 = o5 * fis1 ; ###
g5            = o5 * g1   ;
  gis5 =  as5 = o5 * gis1 ; ###
a5            = o5 * a1   ;
    b5 = ais5 = o5 * b1   ; ###
h5            = o5 * h1   ;
c6            = o6 * c1   ;     #sixth octave
  cis6 = des6 = o6 * cis1 ; ###
d6            = o6 * d1   ;
  dis6 =  es6 = o6 * dis1 ; ###
e6     = fes6 = o6 * e1   ;
f6     = eis6 = o6 * f1   ;
  fis6 = ges6 = o6 * fis1 ; ###
g6            = o6 * g1   ;
  gis6 =  as6 = o6 * gis1 ; ###
a6            = o6 * a1   ;
    b6 = ais6 = o6 * b1   ; ###
h6            = o6 * h1   ;
c7            = o7 * c1   ;     #seventh octave
  cis7 = des7 = o7 * cis1 ; ###
d7            = o7 * d1   ;
  dis7 =  es7 = o7 * dis1 ; ###
e7     = fes7 = o7 * e1   ;
f7     = eis7 = o7 * f1   ;
  fis7 = ges7 = o7 * fis1 ; ###
g7            = o7 * g1   ;
  gis7 =  as7 = o7 * gis1 ; ###
a7            = o7 * a1   ;
    b7 = ais7 = o7 * b1   ; ###
h7            = o7 * h1   ;
c8            = o8 * c1   ;     #eighth octave
  cis8 = des8 = o8 * cis1 ; ###
d8            = o8 * d1   ;
  dis8 =  es8 = o8 * dis1 ; ###
e8     = fes8 = o8 * e1   ;
f8     = eis8 = o8 * f1   ;
  fis8 = ges8 = o8 * fis1 ; ###
g8            = o8 * g1   ;
  gis8 =  as8 = o8 * gis1 ; ###
a8            = o8 * a1   ;
    b8 = ais8 = o8 * b1   ; ###
h8            = o8 * h1   ;
c9            = o9 * c1   ;     #ninth octave
  cis9 = des9 = o9 * cis1 ; ###
d9            = o9 * d1   ;
  dis9 =  es9 = o9 * dis1 ; ###
e9     = fes9 = o9 * e1   ;
f9     = eis9 = o9 * f1   ;
  fis9 = ges9 = o9 * fis1 ; ###
g9            = o9 * g1   ;
  gis9 =  as9 = o9 * gis1 ; ###
a9            = o9 * a1   ;
    b9 = ais9 = o9 * b1   ; ###
h9            = o9 * h1   ;

# ------------------

bps = 16;       % bits per sample
sps = 44100;     % sample rate [samples/s]
#freq = 1;       % frequency of the tone [Hz]
nsecs = 240;      % number of seconds of the audio file

nsamples = sps*nsecs;

# linspace(lower limit, upper limit, number of steps between limits);
# hier konkret:
# linspace(0, 240, 240*44100);

time = linspace(0, nsecs, nsamples);

#{
working function-generators:
chirp (t) #<--- WEIRD!
sawtooth(t)
square(t)
sin(t)
#}


#12 OSC - Madness - try 240 seconds!
#{}
thenote = a1;

wave =                 sawtooth(time * 2 * pi *  thenote * 1.0000 )';
wave = horzcat(wave,   sawtooth(time * 2 * pi *  thenote * 1.0106 )');
wave = horzcat(wave,   sawtooth(time * 2 * pi *  thenote * 1.0059 )');
wave = horzcat(wave,   sawtooth(time * 2 * pi *  thenote * 1.0027 )');
wave = horzcat(wave,   sawtooth(time * 2 * pi *  thenote * 1.0102 )');
wave = horzcat(wave,   sawtooth(time * 2 * pi *  thenote * 1.0045 )');
wave = horzcat(wave,   sawtooth(time * 2 * pi *  thenote * 1.0013 )');
wave = horzcat(wave,   sawtooth(time * 2 * pi *  thenote * 1.0110 )');
wave = horzcat(wave,   sawtooth(time * 2 * pi *  thenote * 1.0063 )');
wave = horzcat(wave, sin(time * 2 * pi *  thenote * 1.0163 )');
wave = horzcat(wave, sin(time * 2 * pi *  thenote * 1.0073 )');
wave = horzcat(wave, sin(time * 2 * pi *  thenote * 1.003 )');
#}


#SQUARE
#{
wave =               square(time * 2 * pi *  h3  )';
wave = horzcat(wave, square(time * 2 * pi *  d4  )');
wave = horzcat(wave, square(time * 2 * pi *  fis4  )');
wave = horzcat(wave, square(time * 2 * pi *  h4  )');
#}

#SAWTOOTH
#{
wave =               sawtooth(time * 2 * pi *  h3  )';
wave = horzcat(wave, sawtooth(time * 2 * pi *  d4  )');
wave = horzcat(wave, sawtooth(time * 2 * pi *  fis4  )');
wave = horzcat(wave, sawtooth(time * 2 * pi *  h4  )');
#}

#SINE
#{
wave =               sin(time * 2 * pi *  h3  )';
wave = horzcat(wave, sin(time * 2 * pi *  d4  )');
wave = horzcat(wave, sin(time * 2 * pi *  fis4  )');
wave = horzcat(wave, sin(time * 2 * pi *  h4  )');
wave = horzcat(wave, sin(time * 2 * pi *  h4  )');
wave = horzcat(wave, sin(time * 2 * pi *  b3  )');
wave = horzcat(wave, sin(time * 2 * pi *  cis3  )');
#}

#create complex waveform: add all columns horizontally into a sum-matrixsum (= (wave, 2) )
#volume compensation: divide by count of OSCs (= columns(wave) )
wave_sum = sum(wave, 2)/columns(wave);

% create the amplitude window (creates the fade in and fade out when multiplied with the sine wave)
# a = b = floor(.3*nsamples);
# window = [linspace(0,1,a), ones(1,nsamples-a-b), linspace(1,0,b)]';

#use a window-function from the signal pkg instead!
window = blackmanharris(rows(wave_sum));


#{

sound(dot(wave_sum, window, 2),sps,bps);

/|\
 |
EQUIVALENT!
 |
\|/

sound(wave_sum .* window,sps,bps);

#}


#AUDIO FILE SAVE!
#audiowrite('.\supersaw.wav', wave_sum .* window, sps);


#AUDIO OUTPUTS!
sound(dot(wave_sum, window, 2),sps,bps);

#sound(wave_sum .* window,sps,bps);


#sound(wave_sum,sps,bps);


Wichtige Anmerkung zum Audiofile, welches von diesem Script erzeugt wird, eurer Hardware und eure Ohren: Springt NICHT mitten rein, weil ihr anfangs noch nix hört! Das Ding ist vier Minuten lang und wird langsam lauter und langsam wieder leiser. Lasst eure Monitorlevels auf normalen Pegel und regelt da nix hoch!
 

Anhänge

  • supersaw.mp3
    9,2 MB
Zuletzt bearbeitet:


News

Zurück
Oben