game maker
Gebruikersnaam:
Wachtwoord:
Home Info Forums Help
Welkom, Gast. Alsjeblieft inloggen of registreren.
De activerings e-mail gemist?
+  Forums
|-+  Werken met Game Maker
| |-+  Gevorderden (Moderators: Erik Leppen, ericlegomeer, BlueMoonProductions)
| | |-+  Audio Visualizer
Pagina's: [1]
« vorige volgende »
Print
Advertenties

sanofmisan
Gebruiker

Offline Offline

Berichten: 60


« Gepost op: 10 Januari 2016, 13:00:53 »

Hallo,

Ik ben all langere tijd bezig met het maken van games in GameMaker:Studio. Laats wou ik voor een game een audio 'Visualizer' hebben voor het generen van een level. Is er een plugin of dergelijken voor in Studio?

Of is er een andere manier om de hoogte van de toon en het formule te kunnen krijgen? (Net als bij de sin() functie bijvoorbeeld, zo weet ik wel hoe je een level er op kan generaten.) Ik heb all meerderen dingen gevonden voor gamemaker 8, maar daar heb ik de pro versie niet van Verdrietig.

Alvast bedankt,

ps: Ik heb voor mijn games nog nooit plugins gebruikt.


Naar boven Gelogd

sir_hendro
Gebruiker


Offline Offline

Berichten: 117

Project Leader @ MeerFX


WWW
« Antwoord #1 Gepost op: 10 Januari 2016, 13:11:03 »

Je kunt PCM audio in een buffer laden en afspelen. Niet alleen dat maar je kunt ook deze data grafisch weergeven op het scherm of er inderdaad iets interactiefs mee maken.

Je kunt hierdoor bijvoorbeeld dit laten weergeven op basis van zo een audio buffer:


Werkt aan Julia 3D Studio (SDK) en Julia 3D Engine voor Game Maker.
Naar boven Gelogd

sanofmisan
Gebruiker

Offline Offline

Berichten: 60


« Antwoord #2 Gepost op: 10 Januari 2016, 13:43:02 »

Je kunt PCM audio in een buffer laden en afspelen. Niet alleen dat maar je kunt ook deze data grafisch weergeven op het scherm of er inderdaad iets interactiefs mee maken.

Je kunt hierdoor bijvoorbeeld dit laten weergeven op basis van zo een audio buffer:

dankje. Maar is er nog een tutorial/example waar word uitgelegd hoe ik dit moet doen? in de docs leggen ze uit hoe je de buffer kan maken. Maar hoe speel ik het liedje af? En hoe krijg ik zon soortgelijk plaatje?Vragend Is hier all een topic/tutorial van die dit uitlegt, ik er niks over gevonden met google? Misschien is dit boven mijn niveau door gebrek aan kennis van audio files Verdrietig.

Alweer alvast bedankt!

ps: Zelf vind ik alleen tuts over hoe je een mic kan toevoegen aan de game maar niks over het visualiseren..


Naar boven Gelogd

ShroomProductions
Gebruiker


Offline Offline

Berichten: 1374


« Antwoord #3 Gepost op: 10 Januari 2016, 13:54:10 »

Interessant topic, even een aanvullende vraag: Bestaat er ook een manier om het omgekeerde te doen? Niet van een afbeelding, maar een curve omzetten naar een geluidsgolf.
Op yoyogames had iemand geloof ik eens een synth gepost, maar er niet bij verteld hoe het werkte

« Laatste verandering: 10 Januari 2016, 13:57:01 door ShroomProductions »

Naar boven Gelogd

Flumble
Gebruiker


Offline Offline

Berichten: 2018


« Antwoord #4 Gepost op: 11 Januari 2016, 01:03:48 »

GM heeft helaas geen ingebouwde functie audio_sound_get_current_amplitude(sound) of audio_sound_get_amplitude (sound, pos) of zo, maar alleen audio_sound_get_track_position (sound).
En natuurlijk heeft GM ook geen manier om een geluid om te zetten naar een buffer. Verdrietig

Nou is de makkelijke optie voor jou om een JSON-bestand te vereisen met een array/map van alle momenten waarop er iets speciaals gebeurt in de muziek. Dan kan je met behulp van audio_sound_get_track_position telkens kijken of het al tijd is voor de volgende actie in je array/map.
Het gaat niet volautomatisch, maar JSON is nog wel begrijpbaar voor gebruikers. Voor veel spellen die iets met geluid doen (zie guitar hero en zo) moet dit ook, want mensen zijn beter in het beoordelen van geluiden dan een simpel algoritme.


Zo niet, dan wordt het wat sir_hendro zegt: PCM-audio in een buffer zetten (het makkelijkst hiervoor is *.wav vereisen, want dat zijn gewoon kale samples in een RIFF-container; anders heb je weer een extensie nodig met een decoder) en die uitlezen.
Voor het herkennen van toonhoogtes e.d. moet je vervolgens fouriertransformaties uitvoeren op je buffer. Maar laten we daar pas op ingaan als je zeker weet dat je dat wil. Tong


Interessant topic, even een aanvullende vraag: Bestaat er ook een manier om het omgekeerde te doen? Niet van een afbeelding, maar een curve omzetten naar een geluidsgolf.
Op yoyogames had iemand geloof ik eens een synth gepost, maar er niet bij verteld hoe het werkte
Dit is makkelijk nu je buffers gewoon kan omzetten naar audio:
GML:
var sampleRate, sampleDepth, sampleChannels, duration, frequency, sampleSize, amplitudeScale, samples, buffer, sound, i;
sampleRate     = 48000;      //standaard samplefrequentie is 48KHz
sampleDepth    = buffer_s16; //standaard samplediepte is 16 bits
sampleChannels = audio_mono; //voor het gemak doen we 1 kanaal
duration       = 1.5;        //anderhalve seconde lang
frequency      = 500;        //500Hz

samples        = duration*sampleRate;
sampleSize     = 2; //(1 sample in 16b mono kost 2 bytes)
amplitudeScale = (1 << (16-1))-1; //(i.p.v. een amplitude van -1 tot 1 moeten we schalen met de maximale waarde van een 16b signed integer)
buffer         = buffer_create(samples*sampleSize, buffer_fixed, 2);

for (i = 0; i < duration; i += 1/sampleRate)
  buffer_write(buffer, sampleDepth, sin(frequency*i*2*pi)*amplitudeScale);

sound = audio_create_buffer_sound(buffer, sampleDepth, sampleRate, 0, duration*sampleRate, sampleChannels);

///////////////////////////////////////////////////
audio_play_sound(sound, 10, false);

///////////////////////////////////////////////////
audio_free_buffer_sound(sound);
buffer_delete(buffer);

[edit] sampleType vervangen door sampleDepth

« Laatste verandering: 11 Januari 2016, 16:40:59 door Flumble »
Naar boven Gelogd

sir_hendro
Gebruiker


Offline Offline

Berichten: 117

Project Leader @ MeerFX


WWW
« Antwoord #5 Gepost op: 11 Januari 2016, 09:02:08 »

Bij deze heb je deze links naar de broncode  van mijn test creaties omtrent GM Audio:

GameMaker Studio: Waveform Visualisation (source)
Download: http://www.hmdlive.com/gm/waveform.zip




GameMaker Studio: Synthesizer (source)
Download: http://www.hmdlive.com/gm/synth.zip



Je mag de voorbeelden verder uitwerken en gebruiken in je eigen creaties zonder credits te geven. Gemoedelijk

Binairy audio (PCM)
Het beste kijk je net zoals ik hoe een .wav file eruit ziet op binair niveau. Je zult zien dat er een header in zit (44 bytes uit mijn hoofd) en de rest is data. Deze data kun je in een buffer kopieren. Je krijgt dan waardes zoals:

0, 106, 1708, 10770, 1013, 125, 4

wat dan bijvoorbeeld een soort sinus moet voorstellen. Je kunt dus een gedeelte van de buffer in een draw_loop gooien in combinatie met draw_line of draw_triangle om zo een grafische weergave als hierboven te bereiken.

Bijvoorbeeld:
GML:
// buffer_create(...)
audio_data = buffer_create(...)
// Gooi hier de PCM audio data in.


// audio_create_buffer_sound(...)
my_sound = audio_create_buffer_sound(...)
// Gebruik dit om een geluid marker te maken voor de buffer 'audio_data'.


// Grafische weergave:
amp1 = buffer_read(audio_data, ...);
amp2 = buffer_read(audio_data, ...);
draw_line(xx+(i*4), yy+amp1, xx+((i+1)*4), yy+amp2);

Zo een draw loop, afhankelijk van hoeveel data je tegelijk op je scherm wil laten tonen kan behoorlijk wat cpu vreten. Dit is echter simpel op te lossen zit ik mij zojuist te bedenken. Je kan namelijk deze golven omzetten tot een d3d_model (pr_linelist / pr_trianglelist) en deze met slechts 1 draw call laten tekenen op het scherm. Mijn workstation zou hierdoor twee volledige minuten aan mono PCM audio samples in realtime kunnen weergeven op 60fps. Normaal gesproken kijk je mee op basis van een sample per x aantal miliseconden (zoom op het geluidsfragment) ipv alle samples achter elkaar.


Synth
Ook kun je een virtuele synthesizer maken door een sample in te laden (key 49 / frequency a440 werkt het makkelijkst om te vertalen). Door de Sample Rate  te wijzigen kun je alle tonen afspelen en dus een complete synth maken. De complete lijst met alle frequencies kun je hier lezen:
https://en.wikipedia.org/wiki/Piano_key_frequencies

Om dit allemaal goed te begrijpen kun je het beste eerst goed inlezen over buffers en audio in GM en hoe een .wav bestand werkt op binair niveau.

Meer info:
http://www.topherlee.com/software/pcm-tut-wavformat.html
http://soundfile.sapp.org/doc/WaveFormat/

Een kleine muziek programma met virtuele synth en een audio editor worden tevens onderdeel van Julia 3D Studio waarvan ik binnenkort de eerste versie online gooi. Deze versie zal de deze functies nog niet hebben maar komen in een latere versie wel erbij. Ik heb al een paar losse programma's geschreven puur om met audio te spelen. De ene was een programma om geluiden te maken en de andere een virtuele synth. Beide werken uitstekend Gemoedelijk

« Laatste verandering: 11 Januari 2016, 18:19:33 door sir_hendro »

Werkt aan Julia 3D Studio (SDK) en Julia 3D Engine voor Game Maker.
Naar boven Gelogd

ShroomProductions
Gebruiker


Offline Offline

Berichten: 1374


« Antwoord #6 Gepost op: 11 Januari 2016, 15:12:29 »

awesome, ik heb de methode van flumble net getest. de variabele sampleType ontbrak, maar als ik die als waarde buffer_u32 geef komt er iets uit dat wel als 500Hz klinkt (ik probeerde eerst een aantal andere buffer types die noise achtige geluiden opleverden. Ook leuk, maar niet de bedoeling)

Bedankt voor de links sir_hendero, die lijst met frequenties komt zeker van pas, en die info over wav bestanden had ik ook nog niet zo uitgebreid gevonden.

edit: die examples ga ik zeker binnenkort bekijken, bedankt!

« Laatste verandering: 11 Januari 2016, 15:56:53 door ShroomProductions »

Naar boven Gelogd

sir_hendro
Gebruiker


Offline Offline

Berichten: 117

Project Leader @ MeerFX


WWW
« Antwoord #7 Gepost op: 11 Januari 2016, 15:24:17 »

Ja ik heb mijn oude creaties net geupload. Als je wil kan je in de GML duiken en meer leren over wat mogelijk is met GM en geluid. Je kunt bij een synth door tonen van key1 tm 88 laten creëren door een loop te gebruiken. Echter krijg je het niet helemaal perfect getuned op deze manier. Als je kijkt naar de screenshot hierboven zie je dat er een hele kleine afwijking in frequency zal ontstaan. Je kunt dit eventueel oplossen de alle keys direct een vaste waarde te geven (die hele lijst gewoon copy / paste van wiki).

Ik vind het echt heel leuk om te ontdekken wat er wel niet allemaal mogelijk is met GM audio en zal daarom in de toekomst nog meer leuke dingen maken. Zo wil ik in de toekomst nog een zeer beperkte muziek programma schrijven waar ik dan alle samples van mijn Roland SC50 en mijn Roland MT32 zal zetten. Vervolgens krijg je dan tracks waarin je muziek kunt maken. Vervolgens je creatie opslaan als een WAV file. Een beetje soort van mini Fruity Loops Studio moet het worden.

Zoiets dus maar dan uiteraard veel minder uitgebreid:

« Laatste verandering: 11 Januari 2016, 15:26:23 door sir_hendro »

Werkt aan Julia 3D Studio (SDK) en Julia 3D Engine voor Game Maker.
Naar boven Gelogd

sanofmisan
Gebruiker

Offline Offline

Berichten: 60


« Antwoord #8 Gepost op: 11 Januari 2016, 18:19:25 »

@sir_hendro The Waveform Visualisation project is precies hetgeen waar ik naar zocht. Ik heb je code doorgekeken en begrijp een groot gedeelte van je code.

Alleen ik snap niet welk getal ik moet vergroten voor grotere liedjes, om meer bytes te weergeven. Als ik bijvoorbeeld een liedje heb van 3 min. Dan weergeeft het alleen de eerste twee minuten? En welke tone/liedje heb je gebruikt voor het voorbeeld plaatje van Waveform Visualisation? Vragend

Het spijt me dat ik zo veel vraag, maar zou je de Waveform Visualisation willen updaten met comments van wat je doet. (en vooral in het draw event in het gedeelte dat de lijn maakt.)
GML:
  repeat(data_on_screen){ //data_on_screen kon ik zo aanpassen zodat het volledig een 1920x1080 scherm kon vullen.
      y1 = (buffer_read(buffer, buffer_s16)/1000); //De hoogte/lengte dus van de golf.
      y2 = (buffer_read(buffer, buffer_s16)/1000); //De lengte dus van de golf.
      buffer_seek(buffer, buffer_seek_relative, -2); //???
      draw_triangle(xx+80+(i*4), yy+120+(hh/2.5)-y1,      xx+80+((i+1)*4), yy+120+(hh/2.5)-y2,      xx+80+((i)*4),   yy+120+(hh/2), false); //hij tekent een gedeelte van de lijn. (toch?)
      draw_triangle(xx+80+(i*4), yy+120+(hh-(hh/2.5))+y1, xx+80+((i+1)*4), yy+120+(hh-(hh/2.5))+y2, xx+80+((i+1)*4), yy+120+(hh/2), false); //hij tekent een gedeelte van de lijn. (toch?) (de onderste helft?(toch?))
      i++ //is dus het zelfde als i = i + 1. Maar ik kan hier geen i = i + 4 want dan slaat hij gewoon stapjes over. Kan er voor zorgen dat hij meer laat zien?
      }
Waar verandert het programma dan de hh, xx, yy en etc variable? Niet in de functie toch? Vragend

(Sorry voor de héél wat minder gevorderde vragen, maar mijn begrip van dit gedeelte van gamemaker ligt heel laag.)

« Laatste verandering: 11 Januari 2016, 19:44:44 door sanofmisan »

Naar boven Gelogd

sir_hendro
Gebruiker


Offline Offline

Berichten: 117

Project Leader @ MeerFX


WWW
« Antwoord #9 Gepost op: 11 Januari 2016, 18:29:11 »

Ik heb je comments bewerkt:
GML:
repeat(data_on_screen){ //Hoeveel data er uit het geheel kan worden weergeven.
      y1 = (buffer_read(buffer, buffer_s16)/1000); //Amp van sample punt 1 (2 bytes).
      y2 = (buffer_read(buffer, buffer_s16)/1000); //Amp van sample punt 2 (2 bytes).
      buffer_seek(buffer, buffer_seek_relative, -2); //Buffer positie 2 bytes terug zetten want de volgende lijn start bij punt 2 en niet 3.
      draw_triangle(xx+80+(i*4), yy+120+(hh/2.5)-y1,      xx+80+((i+1)*4), yy+120+(hh/2.5)-y2,      xx+80+((i)*4),   yy+120+(hh/2), false); // Twee punten volgen de lijn, en eentje naar het midden (0).
      draw_triangle(xx+80+(i*4), yy+120+(hh-(hh/2.5))+y1, xx+80+((i+1)*4), yy+120+(hh-(hh/2.5))+y2, xx+80+((i+1)*4), yy+120+(hh/2), false); //hij tekent de onderste helft.
      i++ // Hiermee kan je het volgende punt op het scherm laten tekenen, niet aanpassen.
      }

Je ziet bij draw_triangle i*4 staan, ipv i te veranderen moet je juist de 4 aanpassen. Die 4 staat voor 4 pixels afstand tussen iedere waarde. Als je dit kleiner maakt past er meer op je scherm. Vergeet daarbij dan niet data_on_screen mee te wijzigen Gemoedelijk

Vergeet niet dat het gebruiken van heel veel draw calls je programma traag zal maken als je er steeds meer gaat gebruiken. Zoals eerder gezegd kun je eventueel een d3d model laten bouwen van je geluid en deze in 1 draw call weergeven (d3d_model_draw). Dit gaat als volgt:

GML:
var i = 0;
my_waveform = d3d_model_create();
d3d_model_primitive_begin(my_waveform, pr_linelist);
repeat(data_length){
   d3d_model_vertex_colour(my_waveform,  i, amp, 0,  c_gray, 1)
   i++
   }
d3d_model_primitive_end(my_waveform);

zodra deze gemaakt is kun je met 1 simpele code je hele fragment op het scherm tonen:
GML:
d3d_model_draw(my_waveform, 0, 0, 0, -1);
Je kunt deze ook gewoon weergeven zonder daar d3d voor te hoeven starten alhoewel dat niet altijd werkt op iedere PC geloof ik. Volgens mij werkt dit niet altijd op Intel intergrated graphics maar wel prima nVidia kaarten, en mogelijk dan ook ATi kaarten.

Mocht je het veilig willen spelen start je toch d3d en gebruik je een ortho view om tijdens d3d in 2d te kunnen werken.

« Laatste verandering: 11 Januari 2016, 18:48:52 door sir_hendro »

Werkt aan Julia 3D Studio (SDK) en Julia 3D Engine voor Game Maker.
Naar boven Gelogd

sanofmisan
Gebruiker

Offline Offline

Berichten: 60


« Antwoord #10 Gepost op: 13 Januari 2016, 13:33:38 »

GML:
repeat(data_on_screen){ //Hoeveel data er uit het geheel kan worden weergeven.
      y1 = (buffer_read(buffer, buffer_s16)/1000); //Amp van sample punt 1 (2 bytes). <-- Waar bepaalt het programma welke sample punt (bestaand dus uit 2 bytes)?
//Hoe kan ik vragen om bijvoorbeeld de Ampiltude van 4 seconden in het liedje.
      y2 = (buffer_read(buffer, buffer_s16)/1000); //Amp van sample punt 2 (2 bytes). <-- Waar bepaalt het programma welk sample punt?
      buffer_seek(buffer, buffer_seek_relative, -2); //Buffer positie 2 bytes terug zetten want de volgende lijn start bij punt 2 en niet 3.
      draw_triangle(xx+80+(i*4), yy+120+(hh/2.5)-y1,      xx+80+((i+1)*4), yy+120+(hh/2.5)-y2,      xx+80+((i)*4),   yy+120+(hh/2), false); // Twee punten volgen de lijn, en eentje naar het midden (0).
      draw_triangle(xx+80+(i*4), yy+120+(hh-(hh/2.5))+y1, xx+80+((i+1)*4), yy+120+(hh-(hh/2.5))+y2, xx+80+((i+1)*4), yy+120+(hh/2), false); //hij tekent de onderste helft.
      i++ // Hiermee kan je het volgende punt op het scherm laten tekenen, niet aanpassen.
      }
Wat vragen: Waar bepaalt het programma welke 2 bytes er worden gekozen om te drawen, Geeft y1 en y2 dan niet altijd dezelfde output? Of word het liedje echt in de buffer afgespeeld? En hoe kan ik vragen om bijvoorbeeld de Ampiltude van de 3e seconden in het liedje/fragment? (In secondes omdat de audio_sound_get_track_position( .., ..) in secondes zijn waarde geeft.) Bijvoorbeeld een script zoals:
GML:
amp = buffer_get_amp(buffer, 3)
En dan zou het script de data omzeten naar een punt in het bestand en daarvan de ampiltude terug geven in zijn return value.

Ik heb nog een klein probleem: Op het moment dat ik een liedje (.wav) download (of converteer van uit .mp3) krijg ik gewoon een balk i.p.v. curved lijnen. Licht dit aan het bestand of begrijp ik het hier verkeerd?


Naar boven Gelogd

sir_hendro
Gebruiker


Offline Offline

Berichten: 117

Project Leader @ MeerFX


WWW
« Antwoord #11 Gepost op: 13 Januari 2016, 15:17:09 »

Je geluid staat in de data_buffer die tevens ook door de audio_buffer wordt gebruikt. De audio_buffer klinkt alsof het een eigen buffer maakt maar dat is niet zo, het maakt slechts een pointers in de data_buffer en zorgt ervoor dat je geluiden kunt afspelen uit de data_buffer.

Een geluid bestaat uit een reeks samples. In de meeste gevallen werken we met 16 bit audio waardoor iedere sample 2 bytes in de buffer verbruikt bij mono, en 4 bytes bij stereo.

Ook speelt de sample rate een belangrijke rol. Dit is namelijk het aantal samples per seconde.

Track Length: 10 seconden.
Bit depth: 16.
Sample Rate: 44100.
Buffer_size(mono): 882000 bytes.
Buffer_size(stereo): 1764000 bytes.

Als je dan netjes de tijd bijhoudt in een variable wanneer je een geluidafspeelt kun je het tekenen van de data op het scherm sychroom laten weergeven.

In de demo die je hebt gedownload tekent hij vanaf 0 tot waar jij wil eindigen. Als je een variable current_postion(+de rest) laten tekenen zal hij dat op je scherm laten zien wat er nu wordt afgespeeld.

Hier heb je nodig:
GML:
var current_play_pos = blablabla...
buffer_seek(data_buffer, buffer_seek_start, current_play_pos)
Hierdoor tekent hij dus niet meer vanaf 0 maar vanaf de huidige positie.

Hoe hoog de golfjes zijn in de weergave is afhankelijk van de hoeveelheid amp op de betreffende positie. Is je geluid heel hoog dan kan je een dikke balk, is het heel zacht kan je wellicht vrijwel niks zien. Ook deze variable kan je aanpassen naar wens.

GML:
y1 = (buffer_read(buffer, buffer_s16)/waarde);

Als je de waarde aanpast kun je bepalen hoe groot alles op je scherm is (lager getal = groter, hoger getal = kleinere weergave op het scherm.)


Lol tip:
Als je MSPaint.exe inlaadt in een buffer en deze als audio afspeelt moet je dit krijgen:
https://www.youtube.com/watch?v=2xZgCVG_Bzk

Misschien ook wel grappig om eens te maken is dit:
https://www.youtube.com/watch?v=t8g-iYGHpEA

« Laatste verandering: 13 Januari 2016, 18:06:38 door sir_hendro »

Werkt aan Julia 3D Studio (SDK) en Julia 3D Engine voor Game Maker.
Naar boven Gelogd

sanofmisan
Gebruiker

Offline Offline

Berichten: 60


« Antwoord #12 Gepost op: 14 Januari 2016, 15:02:26 »

Ik heb het nu zon beetje uit gevogeld alleen krijg ik na een tijdje (zonder dat er iets gebeurd) deze error:
GML:
___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of Draw Event
for object obj_wave_editor:

Fatal Error: Can not create vertex buffer of size 393216 bytes
4227 vertex buffers allocated with total size of 1622528 KB
 at gml_Script_wave_editor_draw (line 36) -       draw_triangle(xx+80+(i/2205), yy+120+(hh-(hh/2.5))+y1, xx+80+((i+1)/2205), yy+120+(hh-(hh/2.5))+y2, xx+80+((i+1)/2205), yy+120+(hh/2), false);
############################################################################################
--------------------------------------------------------------------------------------------
stack frame is
gml_Script_wave_editor_draw (line 36)
called from - gml_Object_obj_wave_editor_DrawEvent_1 (line 1) - wave_editor_draw();
Normaliter lukt het me wel om alle errors te begrijpen. Maar deze heb ik nog nooit gezien. Komt dit omdat hij gewoon door blijft rekenen maar niks meer drawed? Zat deze error dan ook in @sir_hendro s code, alleen moest je dan gewoon (absurd lang) wachten?


Naar boven Gelogd

sir_hendro
Gebruiker


Offline Offline

Berichten: 117

Project Leader @ MeerFX


WWW
« Antwoord #13 Gepost op: 14 Januari 2016, 15:56:06 »

ik zie dat je gebruik maakt van vertex_buffers, iets waar ik op dit moment nog niet in verdiept heb. Ik kan je wel garanderen dat het werkt met een standaard model systeem wat ook werkt op GM Studio. Gewoon de stappen zoals beschreven doorvoeren om een model te maken in het create event en daarna deze drawen in het draw_event. Ik denk dat het genereren van deze modellen inderdaad even kan duren. Game Maker kan wel iets van een paar duizend stukjes per seconde verwerken maar een lange track kan al gauw een miljoen of meer in lengte. Dan zou een wave -> model omzetten al gauw een paar minuten kunnen duren. Vergeet niet dat ook de kwaliteit een rol speelt. Als je echt iedere sample gaat gebruiken voor je model dan duurt het erg lang. Wellicht kun je beter een aantal bytes steeds overslaan om een wat simpelere versie te krijgen qua model (bijvoorbeeld steeds per 16 bytes 1 sample uitlezen, nog steeds een mooi model maar wel 16x sneller klaar!).


Werkt aan Julia 3D Studio (SDK) en Julia 3D Engine voor Game Maker.
Naar boven Gelogd

Advertenties
« vorige volgende »
Pagina's: [1]
Print


Topic Informatie
0 geregistreerde leden en 1 gast bekijken dit topic.

Ga naar:  

Powered by SMF 1.1.21 | SMF © 2006-2007, Simple Machines
www.game-maker.nl © 2003-2020 Nederlandse Game Maker Community