Jump to content
Rpg²S Forum

Ambient Sound 1.0


mikb89
 Share

Recommended Posts

Ambient Sound

Descrizione

 

Con questo script puoi impostare gli eventi per riprodurre suoni se accanto al giocatore, variando volume, pitch, ecc.

Puoi anche personalizzare gli effetti cambiando le caratteristiche audio, via codice.

Per usare questo script bisogna configurare nello script gli effetti, quindi scriverne solo il nome in un commento nella pagina dell'evento voluto.

 

 

Autore

 

mikb89

 

 

Allegati

 

Demo multilingua v. 1.0 (1,33MB)

 

 

Istruzioni per l'uso

 

Copiare lo script normalmente sotto Modules e sopra Main, quindi configurare gli effetti voluti.

 

 

Script

 

# Ambient Sound v. 1.0
# VX Ace version
# by mikb89

# Dettagli:
#  Le possibilità audio di RPG Maker fanno schifo. C'è questo Audio Pump
#   Up - FMOD Ex (script che estende il sistema audio usando le librerie FMod)
#   e lo menzionerò pressoché ovunque qui e lì nella demo. Comunque questo
#   script funziona lo stesso anche senza aggiungerlo.
#  Quello che QUESTO script fa penso sia chiaro. Puoi impostare gli eventi per
#   riprodurre suoni se accanto al giocatore, variando volume, pitch, ecc.
#  Puoi anche personalizzare gli effetti, come quello sotto del gallo, cambiando
#   le caratteristiche audio, via codice.
#  Per usare questo script bisogna configurare QUI gli effetti, quindi scriverne
#   il nome in un commento nella pagina dell'evento voluto.

# Configurazioni:
module AMBISOUND
 # Impostazioni se usi Audio Pump Up - FMOD Ex.
   SOUND_CHANNEL = 3
    # Canale da usare per ogni suono. Metti 0 o negativo per disattivare.
   USE_PAN = true # Vuoi sentire i suoni da vero sistema stereo?
    # Es. se un suono viene da destra, si sentirà di più nella cassa destra.
   # Fine della configurazione APU.

 DELAY = 10
  # Consente di non aggiornare l'audio troppo spesso. Più grande il numero,
  #  minore il lag.
 EFFECTS = {
 #"name"    => ["TYPE", "filename", max_vol, pitch, range, vol_min, :def]
  "radio"   => ["BGM",  "Airship",  100,     100,   8,     10,      nil], # <- metti , finché non è l'ultimo
  "radioLow"=> ["BGM",  "Airship",  70,      100,   2,     0,       nil],
  "chicken" => ["SE",   "Chicken",  80,      80,    3,     0,       :chicken],
  "tremolo" => ["BGS",  "Wind",     80,      100,   5,     0,       :tremolo]
 }
 # Spiegazione:
 # "name" è quel che andrai a scrivere nel commento per usare l'effetto.
 # "TYPE" è uno fra "BGM", "BGS", "ME", "SE".
 # "filename" è il nome del file che vuoi ascoltare.
 # max_volume è il massimo volume che il suono può raggiungere.
 #  cioè quando il pg è sopra l'evento.
 # pitch è il pitch. Standard per BGM/BGS è 100, per ME/SE è 80.
 # range è la distanza massima in cui è possibile udire il suono.
 # volume_min è il volume minimo da avere per far partire il suono. Se il pg è
 #  nei limiti del range, ma il volume sarebbe minore di questo valore, l'audio
 #  non partirà, in modo da lasciar dissolvere meglio il precedente.
 # :def ti lascia creare una funzione per gestire l'audio. Puoi sceglierne una
 #  fra quelle di default o aggiungerne se te la cavi con gli script.

 # def di esempio
 def self.chicken(sound) # pollo! o qualcosa di simile
   return unless sound # sound è nil quando la def viene chiamata come stop.
    # scriviamo return perché non è necessario stoppare un se.
   if (@last_chick ||= 0) >= 4+rand(6) # evita di riprodurre ogni volta
     @last_chick = 0
     pitchange = rand(20)-10 # pitch cambiato a caso
     sound.pitch += pitchange
     volchange = rand(1) == 0 ? rand(30)-10 : sound.volume*-1 # evitiamo ancora (volume 0)
     sound.volume += volchange
     sound.play # DOBBIAMO chiamare questo per riprodurre il suono
   else
     @last_chick += 1
   end
 end

 def self.tremolo(sound) # questo esempio richiede Audio Pump Up - FMOD Ex
   return if !$imported || !$imported[:mikb89_apu_fmod]
   unless sound # fermiamo il suono
     return unless @trem_chan # il canale è nil???
     FMod.bgs_stop(@trem_chan) # stop
     return # ci fermiamo
   end
   return if (@last_tremolo_volume ||= sound.volume) == sound.volume
   @last_tremolo_volume = sound.volume # ultimo volume
    # evitiamo di riprodurre lo stesso bgs allo stesso volume (questo è default
    #  per bgm e bgs quando non sono specificate def)
   cv = APU::CURRENT_CHANNEL_VARIABLE # variabile canale da opzioni APU
   var = @trem_chan = $game_variables[cv] # canale corrente
   $game_variables[cv] = @trem_chan = APU::MAX_CHANNELS - 1 if var < 1
   add_eff = true # tremolo già aggiunto?
    # se il canale corrente è 0 usiamo l'ultimo, quindi:
   sound.play # prima riproduciamo il BGS (vedi documentazione APU)
   for e in 0...FMod.bgs_DSP(@trem_chan)
     t = FModEx::FMOD_DSP_TYPES[FMod.bgs_getType(@trem_chan, e)]
     if t.downcase == "tremolo" # se tremolo esiste
       add_eff = false # non aggiungerlo
       break
     end
   end
   FMod::Audio.bgs_add_effect("tremolo", @trem_chan) if add_eff
    # aggiungiamo il DSP se necessario
   $game_variables[cv] = var if var < 1 # ripristiniamo il canale
 end
end

#Codename: ambisound

($imported ||= {})[:mikb89_ambisound] = true

# Licenza:
# - Puoi chiedermi di includere il supporto per altri script, a patto che usino
#   il $imported[script] = true;
# - Puoi modificare e anche ripostare i miei script, dopo una mia risposta. Per
#   ripostarli, comunque, devi aver fatto pesanti modifiche o porting, non puoi
#   fare un post con lo script così com'è;
# - Puoi usare i miei script per fare quel che vuoi, da giochi gratis a liberi
#   a commerciali. Apprezzerei comunque essere messo al corrente di quello che
#   stai creando;
# - Devi creditarmi, se usi questo script o parte di esso.

class Game_Event
#class Game_Event#def get_audio(spn)
 def get_audio(spn)
   audio_eff = (spn[1] == "" ||
                 spn[2] <= 0) ? nil :
                 case spn[0]
                 when "BGM"; RPG::BGM.new(spn[1], spn[2], spn[3])
                 when "BGS"; RPG::BGS.new(spn[1], spn[2], spn[3])
                 when "ME"; RPG::ME.new(spn[1], spn[2], spn[3])
                 when "SE"; RPG::SE.new(spn[1], spn[2], spn[3])
                 end
 end
 alias_method(:clear_page_settings_b4_ambisound, :clear_page_settings) unless method_defined?(:clear_page_settings_b4_ambisound)
#class Game_Event#def clear_page_settings() <- aliased
 def clear_page_settings
   clear_page_settings_b4_ambisound
   @sound_type = ""
   @last_volume = 0
 end
 alias_method(:setup_page_settings_b4_ambisound, :setup_page_settings) unless method_defined?(:setup_page_settings_b4_ambisound)
#class Game_Event#def setup_page_settings() <- aliased
 def setup_page_settings
   setup_page_settings_b4_ambisound
   @sound_type = ""
   @last_volume = 0
   unless empty?
     for par in @list
       if [408, 108].include?(par.code) && AMBISOUND::EFFECTS.has_key?(par.parameters[0])
         @sound_type = par.parameters[0]
       end
     end
   end
 end
 alias_method(:updateGE_b4_ambisound, :update) unless method_defined?(:updateGE_b4_ambisound)
#class Game_Event#def update() <- aliased
 def update
   updateGE_b4_ambisound
   if (@sdelay ||= AMBISOUND::DELAY) == 0
     @sdelay = nil
     var = nil
     if @sound_type != ""
       xv = $game_map.adjust_x(@real_x) - $game_map.adjust_x($game_player.real_x)
       yv = $game_map.adjust_y(@real_y) - $game_map.adjust_y($game_player.real_y)
       v = Math.hypot(xv, yv)
       if v <= AMBISOUND::EFFECTS[@sound_type][4]
         if @ae_playing
           spn = AMBISOUND::EFFECTS[@sound_type][0..3]
           spn[2] *= 1 - v/AMBISOUND::EFFECTS[@sound_type][4]
           met = AMBISOUND::EFFECTS[@sound_type][6]
           if @last_volume != spn[2] || met
             @last_volume = spn[2]
             if spn[2] >= AMBISOUND::EFFECTS[@sound_type][5]
               at = get_audio(spn)
               # REQUIRE Audio Pump Up - FMOD Ex
                 if $imported[:mikb89_apu_fmod] && AMBISOUND::SOUND_CHANNEL > 0
                   var = $game_variables[APU::CURRENT_CHANNEL_VARIABLE]
                   $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = AMBISOUND::SOUND_CHANNEL
                 end
               # END REQUIRE
               if at != nil
                 if met
                   AMBISOUND.method(met).call(at)
                 else
                   at.play
                   # REQUIRE Audio Pump Up - FMOD Ex
                     if $imported[:mikb89_apu_fmod] && AMBISOUND::USE_PAN && $game_variables[APU::CURRENT_CHANNEL_VARIABLE] > 0
                       pan = 1.0 * case $game_player.direction
                             when 2; -xv; when 8; xv
                             when 4; yv; when 6; -yv; else; 0; end
                       pan /= AMBISOUND::EFFECTS[@sound_type][4]
                       if pan != 0
                         case AMBISOUND::EFFECTS[@sound_type][0]
                         when "BGM"; FMod.bgm_set_pan(pan, $game_variables[APU::CURRENT_CHANNEL_VARIABLE])
                         when "BGS"; FMod.bgs_set_pan(pan, $game_variables[APU::CURRENT_CHANNEL_VARIABLE])
                         when "ME"; FMod.me_set_pan(pan, $game_variables[APU::CURRENT_CHANNEL_VARIABLE])
                         when "SE"; FMod.se_set_pan(pan, $game_variables[APU::CURRENT_CHANNEL_VARIABLE], 0)
                         end
                       end
                     end
                   # END REQUIRE
                 end
               end
               # REQUIRE Audio Pump Up - FMOD Ex
                 $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = var if var != nil
               # END REQUIRE
             end
           end
         else
           if @audiowait
             @audiowait -= 1
             @ae_playing = !(@audiowait = false) if @audiowait == 0
           else
             at = get_audio(AMBISOUND::EFFECTS[@sound_type])
             # REQUIRE Audio Pump Up - FMOD Ex
               if $imported[:mikb89_apu_fmod] && AMBISOUND::SOUND_CHANNEL > 0
                 var = $game_variables[APU::CURRENT_CHANNEL_VARIABLE]
                 $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = AMBISOUND::SOUND_CHANNEL
               end
             # END REQUIRE
             if var != nil
               # REQUIRE Audio Pump Up - FMOD Ex
                 FMod::Audio.bgm_fade(20*AMBISOUND::DELAY, AMBISOUND::SOUND_CHANNEL) if at.class == RPG::BGM
                 FMod::Audio.bgs_fade(20*AMBISOUND::DELAY, AMBISOUND::SOUND_CHANNEL) if at.class == RPG::BGS
               # END REQUIRE
             else
               @ex_audio = at.class.last if [RPG::BGM, RPG::BGS].include?(at.class)
             end
             if @ex_audio != nil
               @ex_audio.class.fade(40*AMBISOUND::DELAY)
               @audiowait = 4
             else
               @ae_playing = true
             end
             # REQUIRE Audio Pump Up - FMOD Ex
               $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = var if var != nil
             # END REQUIRE
           end
         end
       else
         @ae_playing = false
         met = AMBISOUND::EFFECTS[@sound_type][6]
         # REQUIRE Audio Pump Up - FMOD Ex
           if $imported[:mikb89_apu_fmod] && AMBISOUND::SOUND_CHANNEL > 0
             var = $game_variables[APU::CURRENT_CHANNEL_VARIABLE]
             $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = AMBISOUND::SOUND_CHANNEL
           end
         # END REQUIRE
         if @ex_audio
           @ex_audio.replay if [RPG::BGM, RPG::BGS, RPG::ME].include?(@ex_audio.class)
           @ex_audio = nil
           AMBISOUND.method(met).call(nil) if met
         else
           AMBISOUND.method(met).call(nil) if met
           if !met && var != nil
             t = AMBISOUND::EFFECTS[@sound_type][0]
             # REQUIRE Audio Pump Up - FMOD Ex
               FMod::Audio.bgm_fade(20*AMBISOUND::DELAY, AMBISOUND::SOUND_CHANNEL) if t.upcase == "BGM"
               FMod::Audio.bgs_fade(20*AMBISOUND::DELAY, AMBISOUND::SOUND_CHANNEL) if t.upcase == "BGS"
             # END REQUIRE
           end
         end
         # REQUIRE Audio Pump Up - FMOD Ex
           $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = var if var != nil
         # END REQUIRE
       end
     elsif @ae_playing
       @ae_playing = false
       # REQUIRE Audio Pump Up - FMOD Ex
         if $imported[:mikb89_apu_fmod] && AMBISOUND::SOUND_CHANNEL > 0
           var = $game_variables[APU::CURRENT_CHANNEL_VARIABLE]
           $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = AMBISOUND::SOUND_CHANNEL
         end
       # END REQUIRE
       if @ex_audio
         @ex_audio.replay if [RPG::BGM, RPG::BGS, RPG::ME].include?(@ex_audio.class)
         @ex_audio = nil
       end
       # REQUIRE Audio Pump Up - FMOD Ex
         $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = var if var != nil
       # END REQUIRE
     end
   else
     @sdelay -= 1
   end
 end
end

 

Visibile anche

 

 

Bugs e Conflitti Noti

 

N/A

 

 

Altri Dettagli

 

Consiglio di usarlo in combinazione con
script.
Edited by mikb89

Script!

 

Roba scritta, guide:

 

Applicazioni:

 

Progetti!

http://img69.imageshack.us/img69/2143/userbarctaf.png http://img641.imageshack.us/img641/5227/userbartemplateb.pnghttp://i46.tinypic.com/ac6id0.png

Link to comment
Share on other sites

Ah ma questo è diverso! XD Credevo nel triplo topic! XD

Bello anche questo che permette in pratica di far sentire i suoni più forti o meno se ti avvicini o di allontani! :3

^ ^

(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)


Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^

http://i.imgur.com/KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^

http://i.imgur.com/FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^

REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^

 

SUWOnzB.jpg 🖤
http://www.rpg2s.net/dax_games/r2s_regali2s.png E:3 http://www.rpg2s.net/dax_games/xmas/gifnatale123.gif
http://i.imgur.com/FfvHCGG.png by Testament (notare dettaglio in basso a destra)! E:3
http://i.imgur.com/MpaUphY.jpg by Idriu E:3

Membro Onorario, Ambasciatore dei Coniglietti (Membro n.44)

http://i.imgur.com/PgUqHPm.png
Ufficiale
"Ad opera della sua onestà e del suo completo appoggio alla causa dei Panda, Guardian Of Irael viene ufficialmente considerato un Membro portante del Partito, e Ambasciatore del suo Popolo presso di noi"


http://i.imgur.com/TbRr4iS.png<- Grazie Testament E:3
Ricorda...se rivolgi il tuo sguardo ^ ^ a Guardian anche Guardian volge il suo sguardo ^ ^ a te ^ ^
http://i.imgur.com/u8UJ4Vm.gifby Flame ^ ^
http://i.imgur.com/VbggEKS.gifhttp://i.imgur.com/2tJmjFJ.gifhttp://projectste.altervista.org/Our_Hero_adotta/ado2.png
Grazie Testament XD Fan n°1 ufficiale di PQ! :D

Viva
il Rhaxen! <- Folletto te lo avevo detto (fa pure rima) che non
avevo programmi di grafica per fare un banner su questo pc XD (ora ho di
nuovo il mio PC veramente :D)

Rosso Guardiano della
http://i.imgur.com/Os5rvhx.png

Rpg2s RPG BY FORUM:

Nome: Darth Reveal

 

PV totali 2
PA totali 16

Descrizione: ragazzo dai lunghi capelli rossi ed occhi dello stesso colore. Indossa una elegante giacca rossa sopra ad una maglietta nera. Porta pantaloni rossi larghi, una cintura nera e degli stivali dello stesso colore. E' solito trasportare lo spadone dietro la schiena in un fodero apposito. Ha un pendente al collo e tiene ben legato un pezzo di stoffa (che gli sta particolarmente a cuore) intorno al braccio sinistro sotto la giacca, copre una cicatrice.
Bozze vesti non definitive qui.

Equipaggiamento:
Indossa:
60$ e 59$ divisi in due tasche interne
Levaitan

Spada a due mani elsa lunga

Guanti del Defender (2PA)
Anello del linguaggio animale (diventato del Richiamo)

Scrinieri da lanciere (2 PA)

Elmo del Leone (5 PA)

Corazza del Leone in Ferro Corrazzato (7 PA)

ZAINO (20) contenente:
Portamonete in pelle di cinghiale contenente: 100$
Scatola Sanitaria Sigillata (può contenere e tenere al sicuro fino a 4 oggetti curativi) (contiene Benda di pronto soccorso x3, Pozione di cura)
Corda
Bottiglia di idromele
Forma di formaggio
Torcia (serve ad illuminare, dura tre settori)

Fiasca di ceramica con Giglio Amaro (Dona +1PN e Velocità all'utilizzatore)
Ampolla Bianca

Semi di Balissa

 

CAVALLO NORMALE + SELLA (30 +2 armi) contentente:
66$
Benda di pronto soccorso x3
Spada a due mani

Fagotto per Adara (fazzoletto ricamato)


 

Link to comment
Share on other sites

  • 3 weeks later...

In realtà sarebbe stato anche quadruplo xD

 

 

Script di questo tipo ne esistevano già, però ci volevo mettere le mani anch'io xD

Mi pare di capire comunque che gli script sulla parte sonora non interessino molto, mmm

Script!

 

Roba scritta, guide:

 

Applicazioni:

 

Progetti!

http://img69.imageshack.us/img69/2143/userbarctaf.png http://img641.imageshack.us/img641/5227/userbartemplateb.pnghttp://i46.tinypic.com/ac6id0.png

Link to comment
Share on other sites

Eppure di questo genere ogni tanto lo hanno cercato! Con tanto di metodo dispendioso di farlo ad eventi! ^ ^

(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)


Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^

http://i.imgur.com/KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^

http://i.imgur.com/FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^

REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^

 

SUWOnzB.jpg 🖤
http://www.rpg2s.net/dax_games/r2s_regali2s.png E:3 http://www.rpg2s.net/dax_games/xmas/gifnatale123.gif
http://i.imgur.com/FfvHCGG.png by Testament (notare dettaglio in basso a destra)! E:3
http://i.imgur.com/MpaUphY.jpg by Idriu E:3

Membro Onorario, Ambasciatore dei Coniglietti (Membro n.44)

http://i.imgur.com/PgUqHPm.png
Ufficiale
"Ad opera della sua onestà e del suo completo appoggio alla causa dei Panda, Guardian Of Irael viene ufficialmente considerato un Membro portante del Partito, e Ambasciatore del suo Popolo presso di noi"


http://i.imgur.com/TbRr4iS.png<- Grazie Testament E:3
Ricorda...se rivolgi il tuo sguardo ^ ^ a Guardian anche Guardian volge il suo sguardo ^ ^ a te ^ ^
http://i.imgur.com/u8UJ4Vm.gifby Flame ^ ^
http://i.imgur.com/VbggEKS.gifhttp://i.imgur.com/2tJmjFJ.gifhttp://projectste.altervista.org/Our_Hero_adotta/ado2.png
Grazie Testament XD Fan n°1 ufficiale di PQ! :D

Viva
il Rhaxen! <- Folletto te lo avevo detto (fa pure rima) che non
avevo programmi di grafica per fare un banner su questo pc XD (ora ho di
nuovo il mio PC veramente :D)

Rosso Guardiano della
http://i.imgur.com/Os5rvhx.png

Rpg2s RPG BY FORUM:

Nome: Darth Reveal

 

PV totali 2
PA totali 16

Descrizione: ragazzo dai lunghi capelli rossi ed occhi dello stesso colore. Indossa una elegante giacca rossa sopra ad una maglietta nera. Porta pantaloni rossi larghi, una cintura nera e degli stivali dello stesso colore. E' solito trasportare lo spadone dietro la schiena in un fodero apposito. Ha un pendente al collo e tiene ben legato un pezzo di stoffa (che gli sta particolarmente a cuore) intorno al braccio sinistro sotto la giacca, copre una cicatrice.
Bozze vesti non definitive qui.

Equipaggiamento:
Indossa:
60$ e 59$ divisi in due tasche interne
Levaitan

Spada a due mani elsa lunga

Guanti del Defender (2PA)
Anello del linguaggio animale (diventato del Richiamo)

Scrinieri da lanciere (2 PA)

Elmo del Leone (5 PA)

Corazza del Leone in Ferro Corrazzato (7 PA)

ZAINO (20) contenente:
Portamonete in pelle di cinghiale contenente: 100$
Scatola Sanitaria Sigillata (può contenere e tenere al sicuro fino a 4 oggetti curativi) (contiene Benda di pronto soccorso x3, Pozione di cura)
Corda
Bottiglia di idromele
Forma di formaggio
Torcia (serve ad illuminare, dura tre settori)

Fiasca di ceramica con Giglio Amaro (Dona +1PN e Velocità all'utilizzatore)
Ampolla Bianca

Semi di Balissa

 

CAVALLO NORMALE + SELLA (30 +2 armi) contentente:
66$
Benda di pronto soccorso x3
Spada a due mani

Fagotto per Adara (fazzoletto ricamato)


 

Link to comment
Share on other sites

È geniale! :O

Vedrò di usarlo nel progetto!

"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]

http://holyres.altervista.org/UserBoard/BannerOverdrive35.png
http://holyres.altervista.org/UserBoard/Cap3.png

http://www.indiexpo.net/signature/578.png

Miei script per RPG Maker VX Ace:


*NB Tutti i miei script sono protetti da licenza CC - BY http://i.creativecommons.org/l/by/3.0/88x31.png

Questa licenza permette a terzi di distribuire, modificare, ottimizzare ed utilizzare la tua opera come base, anche commercialmente, fino a che ti diano il credito per la creazione originale. Questa è la più accomodante delle licenze offerte. É raccomandata per la diffusione e l'uso massimo di materiali coperti da licenza.

 

 



I miei tutorial:


Come distribuire il gioco - e anche come creare un'installazione professionale!
RGSS in pillole - Guida completa e facile all'RGSS2 e RGSS3 per novizi ed esperti
Come mappare con VX (e VX Ace) - guida base all'uso degli strumenti del mapping
Loop delle musiche - come tagliarle in modo da far venire musiche continue senza interruzioni finali
Creare backup dei progetti - per evitare di uccidervi dopo un errore che ha fatto perdere tutto!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...