Kann man eine 2d Funktion in gnuplot irgendwie als Audio Sample Datei exportieren?

Moderator Persönliche Seite #7325430
Lesenswert?

1
gnuplot> set term
2

3
Available terminal types:
4
       cairolatex  LaTeX picture environment using graphicx package and Cairo backend
5
           canvas  HTML Canvas object
6
              cgm  Computer Graphics Metafile
7
          context  ConTeXt with MetaFun (for PDF documents)
8
          domterm  DomTerm terminal emulator with embedded SVG
9
           dpu414  Seiko DPU-414 thermal printer [small medium large]
10
             dumb  ascii art for anything that prints text
11
              dxf  dxf-file for AutoCad (default size 120x80)
12
            eepic  EEPIC -- extended LaTeX picture environment
13
              emf  Enhanced Metafile format
14
            emtex  LaTeX picture environment with emTeX specials
15
         epscairo  eps terminal based on cairo
16
         epslatex  LaTeX picture environment using graphicx package
17
     epson_180dpi  Epson LQ-style 180-dot per inch (24 pin) printers
18
      epson_60dpi  Epson-style 60-dot per inch printers
19
      epson_lx800  Epson LX-800, Star NL-10, NX-1000, PROPRINTER ...
20
              fig  FIG graphics language V3.2 for XFIG graphics editor
21
              gif  GIF images using libgd and TrueType fonts
22
           hp500c  HP DeskJet 500c, [75 100 150 300] [rle tiff]
23
             hpdj  HP DeskJet 500, [75 100 150 300]
24
             hpgl  HP7475 and relatives [number of pens] [eject]
25
           hpljii  HP Laserjet series II, [75 100 150 300]
26
             hppj  HP PaintJet and HP3630 [FNT5X9 FNT9X17 FNT13X25]
27
             jpeg  JPEG images using libgd and TrueType fonts
28
            latex  LaTeX picture environment
29
              lua  Lua generic terminal driver
30
               mf  Metafont plotting standard
31
               mp  MetaPost plotting standard
32
          nec_cp6  NEC printer CP6, Epson LQ-800 [monochrome color draft]
33
          okidata  OKIDATA 320/321 Standard
34
              pbm  Portable bitmap [small medium large] [monochrome gray color]
35
             pcl5  HP Designjet 750C, HP Laserjet III/IV, etc. (many options)
36
         pdfcairo  pdf terminal based on cairo
37
              png  PNG images using libgd and TrueType fonts
38
         pngcairo  png terminal based on cairo
39
       postscript  PostScript graphics, including EPSF embedded files (*.eps)
40
          pslatex  LaTeX picture environment with PostScript \specials
41
            pstex  plain TeX with PostScript \specials
42
         pstricks  LaTeX picture environment with PSTricks macros
43
              qms  QMS/QUIC Laser printer (also Talaris 1200 and others)
44
               qt  Qt cross-platform interactive terminal
45
            sixel  Sixel Graphics
46
          sixelgd  sixel using libgd and TrueType fonts
47
            starc  Star Color Printer
48
              svg  W3C Scalable Vector Graphics
49
      tandy_60dpi  Tandy DMP-130 series 60-dot per inch graphics
50
          tek40xx  Tektronix 4010 and others; most TEK emulators
51
          tek410x  Tektronix 4106, 4107, 4109 and 420X terminals
52
          texdraw  LaTeX texdraw environment
53
             tgif  TGIF X11 [mode] [x,y] [dashed] ["font" [fontsize]]
54
             tikz  TeX TikZ graphics macros via the lua script driver
55
         tkcanvas  Tk canvas widget
56
             tpic  TPIC -- LaTeX picture environment with tpic \specials
57
          unknown  Unknown terminal type - not a plotting device
58
            vttek  VT-like tek40xx terminal emulator
59
              wxt  wxWidgets cross-platform interactive terminal
60
              x11  X11 Window System interactive terminal
61
             xlib  X11 Window System (dump of gnuplot_x11 command stream)
62
            xterm  Xterm Tektronix 4014 Mode

Sieht nicht danach aus. ;-)

Ich vermute mal, dass du mit Octave da eher was findest, wie man zumindest CSV-Daten oder sowas exportieren kann.

Gast #7325808
Lesenswert?

Audiodateien sind periodisierte Wellenformen. Mit einem Wellenformengenerator wäre man da schon eher auf der sicheren Seite: https://www.mikrocontroller.net/articles/Digitaler_Funktionsgenerator.

Man müsste das Ding etwas umbauen, um dann mit mehreren Sinuswellen Additive Sythese zu betreiben, welche sich an komplexeren Funktionen orientiert.

Es gibt auch Sythesizerprogramme, in welchen man eine Funktion einzeichnen kann, die dann in eine Audiodatei umgewandelt wird.

Ich weiß nicht, wie weit man mit solchen Fragen bei Cubase kommt, aber das ist in etwa so die Richtung, in die es geht.

https://p5r.uk/blog/2009/audio-with-gnu-octave.html

Gast #7326003
Lesenswert?

rbx schrieb:

Man müsste das Ding etwas umbauen, um dann mit mehreren Sinuswellen Additive Sythese zu betreiben, welche sich an komplexeren Funktionen orientiert.

Das ist genau das, was ich gerne machen würde. Mathematisch angegebene Sinusfunktionen mit verschiedenen Frequenzen und Amplituden addieren und dann nur die Funktion, die als Summe rauskommt, als WAV oder sonstige Audio Datei speichern.

Anschließend möchte ich es mir nur anhören und gegebenenfalls weiterverwenden.

Es gibt auch Sythesizerprogramme, in welchen man eine Funktion einzeichnen kann, die dann in eine Audiodatei umgewandelt wird.

Das wäre eine Möglichkeit, aber die beraubt mir dann die Möglichkeiten von gnuplot.

Ich weiß nicht, wie weit man mit solchen Fragen bei Cubase kommt, aber das ist in etwa so die Richtung, in die es geht.

https://p5r.uk/blog/2009/audio-with-gnu-octave.html

Das werde ich mal testen. Bin mir nur nicht gerade so sicher, ob das da: wave = sin(time2pi*freq)'; das ist, was ich möchte. (allerdings bin ich gerade zu müde, werde mir das also Morgen nochmal angucken)

Eigentlich wollte ich jedenfalls eher so etwas machen: f(x) = sin(x) + sin(2*x) + sin(x/4) usw. und f(x) soll dann als WAV ausgegeben werden.

#7329736
Lesenswert?

Nano schrieb:

Das ist genau das, was ich gerne machen würde. Mathematisch angegebene Sinusfunktionen mit verschiedenen Frequenzen und Amplituden addieren und dann nur die Funktion, die als Summe rauskommt, als WAV oder sonstige Audio Datei speichern.

Numerische Mathematik Software wie Octave, Matlab, Python etc. kann so was.

Oder sonst vielleicht mal bei den Musikern vorbeisehen, z. B. PureData, Faust, Supercollider, SonicPi, ...

#7329801
Lesenswert?

In's unreine gesprochen: Gnuplot kann Daten vor dem Plot durch externe Programme "filtern" lassen (siehe z.B. http://www.gnuplot.info/faq/#x1-300003.7).

Nun nur noch ein kurzes Filter schreiben, welches die Standart-Eingabe in die Standard-Ausgabe durchreicht und gleichzeitig aus den Daten die Wave-Datei erzeugt. Hierfür zunächst im Filter einen Header schreiben (Pascal Code der Header Definition als Beispiel hier):

1
    WaveHeader: record
2
      ChunkID : array[1..4] of CHAR;
3
      ChunkSize : longint;  // 4 byte
4
      Format  : array[1..4] of CHAR;
5
      Subchunk1ID : array[1..4] of CHAR;
6
      Subchunk1Size : longint;
7
      AudioFormat : smallint;  // 2 byte
8
      NumChannels : smallint;
9
      SampleRate : longint;
10
      ByteRate : longint;
11
      BlockAlign : smallint;
12
      BitsPerSample : smallint;
13
      Subchunk2ID : array[1..4] of CHAR;
14
      Subchunk2Size : longint;
15
    end;

und danach die Gnuplot Daten im int16_t Format anhängen - fertig. Die Daten für den Wave Header sind z.B. hier beschrieben: https://docs.fileformat.com/audio/wav/

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren