extends Node # Declare member variables here. Examples: # var a = 2 # var b = "text" var SongTitle = "" var SongArtist = "" var CompletionType var Tags = "" var OriginalURL = "" var PartsURLs = [] var PartsVolumes = [] var PartsDelays = [] var PartsOthers = [] var BackVolume = 0 enum CompletionTypeOptions { OpenSeed, SoloCompletion, DuetCompletion, AllHarmony, AllMelody } # Called when the node enters the scene tree for the first time. func _ready(): print(unBundle("""Hey, I sang part of Don't Give Up by Peter Gabriel at https://no.where and it's not complete until you sing the rest of it with me! With #ASingCrow, you can join it and other songs. The audio track(s) are attached. Backing volume recommendation: 1db. Parts volume recommendations: 40db, 40db. Audio delay recommendations: 0.166s #test #ignore """)) pass # Replace with function body. func setSongTitle(value): SongTitle = value func setSongArtist(value): SongArtist = value func setCompletionType(value): CompletionType = value func setTags(value): Tags = value func setOriginalURL(value): OriginalURL = value func setPartsURLs(value): PartsURLs = value func setPartsVolumes(value): PartsVolumes = value func setPartsDelays(value): PartsDelays = value func setBackVolume(value): BackVolume = value func getFinalText(): var completiontext = "" var partof = "" var i = 0 match CompletionType : CompletionTypeOptions.OpenSeed: completiontext = " and it's not complete until you sing the rest of it with me!" partof = "part of " CompletionTypeOptions.SoloCompletion: completiontext = " let me know what you think!" CompletionTypeOptions.DuetCompletion: completiontext = " with "+PartsOthers+" and it sounds great, don't you think!?" CompletionTypeOptions.AllHarmony: partof = "only the harmonies of " completiontext = " and would love someone to put the melody on top!" CompletionTypeOptions.AllMelody: partof = "only the melody of " completiontext = " and would love someone to put some harmonies underneath!" var partstext = "The audio track(s) are attached" if len(PartsURLs) > 0: partstext = "The audio track urls are :" for parturl in PartsURLs: partstext += " "+parturl partstext += ".\n" var volumetext = "Backing volume recommendation: "+String(BackVolume)+"db.\nParts volume recommendations: " i = 0 for partvolume in PartsVolumes: volumetext += String(partvolume)+"db" if len(PartsVolumes) > i+1: volumetext += ", " i += 1 volumetext += ".\n" var partdelaytext = "Audio delay recommendations: " i = 0 for partDelay in PartsDelays: partdelaytext += String(partDelay)+"s" if len(PartsDelays) > i+1: partdelaytext += ", " return "Hey, I sang "+partof+SongTitle+" by "+SongArtist+" at "+OriginalURL+completiontext+" "+\ "\nWith #ASingCrow, you can join it and other songs.\n"+partstext+volumetext+partdelaytext+"\n"+Tags func unBundle(text): var result = {} var regex = RegEx.new() regex.compile("(part of|only the (?\\w) of) (?.+) by (?.+) at (?[^ ]*) (and[^!]*!|let[^!]*!|with[^!]*!)") var search = regex.search(text) result.parttype = search.get_string("parttype") result.trackname = search.get_string("trackname") result.originalartist = search.get_string("originalartist") result.trackurl = search.get_string("trackurl") regex.compile("(?audio track(s|\\(s\\))? are attached)|audio track urls are : (?.*)") search = regex.search(text) if search.get_string("embeddedaudio"): result.embeddedaudio = true else: result.embeddedaudio = false regex.compile("Backing volume recommendation: (?[^d]+)db") search = regex.search(text) result.mainvol = search.get_string("mainvol") regex.compile("Parts volume recommendations: (?([^d]+db(, )?)+)") search = regex.search(text) var partsstr = search.get_string("partvol") regex.compile("(?[\\d\\.]+)db") search = regex.search_all(partsstr) var partvols = [] for each in search: partvols.append(each.get_string("db")) result.partvols = partvols regex.compile("Audio delay recommendations: (?([\\d\\.]+s(, )?)+)") search = regex.search(text) partsstr = search.get_string("partsdelays") regex.compile("(?[\\d\\.]+)s") search = regex.search_all(partsstr) var partsdelays = [] for each in search: partsdelays.append(each.get_string("seconds")) result.partsdelays = partsdelays return result # Called every frame. 'delta' is the elapsed time since the previous frame. #func _process(delta): # pass