Selaa lähdekoodia

implemented fft size and fft window count variable to parameters to allow the parameters to operate as a percentage of these

Jonathan Higgins 3 kuukautta sitten
vanhempi
sitoutus
b3bbd9b746
3 muutettua tiedostoa jossa 304 lisäystä ja 94 poistoa
  1. 273 91
      scenes/main/process_help.json
  2. 4 0
      scenes/main/scripts/graph_edit.gd
  3. 27 3
      scenes/main/scripts/run_thread.gd

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 273 - 91
scenes/main/process_help.json


+ 4 - 0
scenes/main/scripts/graph_edit.gd

@@ -142,6 +142,8 @@ func _make_node(command: String, skip_undo_redo := false) -> GraphNode:
 						var min = param_data.get("min", false)
 						var max = param_data.get("max", false)
 						var flag = param_data.get("flag", "")
+						var fftwindowsize = param_data.get("fftwindowsize", false)
+						var fftwindowcount = param_data.get("fftwindowcount", false)
 						var minrange = param_data.get("minrange", 0)
 						var maxrange = param_data.get("maxrange", 10)
 						var step = param_data.get("step", 0.01)
@@ -163,6 +165,8 @@ func _make_node(command: String, skip_undo_redo := false) -> GraphNode:
 						hslider.set_meta("max", max)
 						hslider.set_meta("flag", flag)
 						hslider.set_meta("default_value", value)
+						hslider.set_meta("fftwindowsize", fftwindowsize)
+						hslider.set_meta("fftwindowcount", fftwindowcount)
 						
 						#set slider params
 						hslider.min_value = minrange

+ 27 - 3
scenes/main/scripts/run_thread.gd

@@ -1067,7 +1067,7 @@ func match_pvoc_channels(dict: Dictionary) -> void:
 func _get_slider_values_ordered(node: Node) -> Array:
 	var results := []
 	if node.has_meta("command") and node.get_meta("command") == "pvoc_anal_1":
-		results.append(["slider", "-c", fft_size, false, [], 2, 32768, false])
+		results.append(["slider", "-c", fft_size, false, [], 2, 32768, false, false])
 		return results
 	for child in node.get_children():
 		if child is Range:
@@ -1077,9 +1077,21 @@ func _get_slider_values_ordered(node: Node) -> Array:
 			var min_slider = child.min_value
 			var max_slider = child.max_value
 			var exp = child.exp_edit
+			var fftwindowsize = child.get_meta("fftwindowsize")
+			var fftwindowcount = child.get_meta("fftwindowcount")
+			var value = child.value
+			
 			if child.has_meta("brk_data"):
 				brk_data = child.get_meta("brk_data")
-			results.append(["slider", flag, child.value, time, brk_data, min_slider, max_slider, exp])
+			#if this slider is a percentage of the fft size just calulate this here as fft size is a global value
+			if fftwindowsize == true:
+				if value == 100:
+					value = fft_size
+				else:
+					value = max(int(fft_size * (value/100)), 1)
+				min_slider = max(int(fft_size * (min_slider/100)), 1)
+				max_slider = int(fft_size * (max_slider/100))
+			results.append(["slider", flag, value, time, brk_data, min_slider, max_slider, exp, fftwindowcount])
 		elif child is CheckButton:
 			var flag = child.get_meta("flag") if child.has_meta("flag") else ""
 			results.append(["checkbutton", flag, child.button_pressed])
@@ -1176,6 +1188,14 @@ func make_process(node: Node, process_count: int, current_infile: Array, slider_
 				var min_slider = entry[5]
 				var max_slider = entry[6]
 				var exp = entry[7]
+				var fftwindowcount = entry[8]
+				var window_count
+				if fftwindowcount == true:
+					var analysis_file_data = get_analysis_file_properties(current_infile[0])
+					window_count = analysis_file_data["windowcount"]
+					min_slider = int(max(window_count * (min_slider / 100), 1))
+					max_slider = int(window_count * (max_slider / 100))
+				
 				if brk_data.size() > 0: #if breakpoint data is present on slider
 					#Sort all points by time
 					var sorted_brk_data = []
@@ -1244,7 +1264,11 @@ func make_process(node: Node, process_count: int, current_infile: Array, slider_
 							value = infile_length - 0.1
 						else:
 							value = infile_length * (value / 100) #calculate percentage time of the input file
-					#line += ("%s%.2f " % [flag, value]) if flag.begins_with("-") else ("%.2f " % value)
+					if fftwindowcount == true:
+						if value == 100:
+							value = window_count
+						else:
+							value = int(window_count * (value / 100))
 					args.append(("%s%.2f " % [flag, value]) if flag.begins_with("-") else str(value))
 					
 			elif entry[0] == "checkbutton":

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä