Sync actually works. Gobsmacked. Next: seeking.
This commit is contained in:
parent
5b86523b48
commit
27bf8b453a
|
@ -8,15 +8,26 @@ extends Control
|
|||
var spectrum_play
|
||||
var spectrum_record
|
||||
var recorder
|
||||
var recording
|
||||
var raw_recording
|
||||
var raw_recording_data
|
||||
var playable_recording_data
|
||||
|
||||
var position_changing_by_code
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
#var GDS = VideoStreamGDNative.new()
|
||||
#GDS.set_file(OS.get_user_data_dir()+"/converted.mpg")
|
||||
#$MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.set_stream(load(GDS.get_file()))
|
||||
$MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.set_stream(load(OS.get_user_data_dir()+"/converted.webm"))
|
||||
print($MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.stream.to_string())
|
||||
#$MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPosSlider.max_value = 364
|
||||
#print($MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.to_string())
|
||||
var idx = AudioServer.get_bus_index("Record")
|
||||
recorder = AudioServer.get_bus_effect(idx, 0)
|
||||
spectrum_play = AudioServer.get_bus_effect_instance(0,0)
|
||||
spectrum_record = AudioServer.get_bus_effect_instance(1,1)
|
||||
position_changing_by_code = false
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
|
@ -27,11 +38,18 @@ func _process(delta):
|
|||
magnitude = spectrum_record.get_magnitude_for_frequency_range(0,11050.0).length()
|
||||
energy = clamp((60 + linear2db(magnitude)) / 60, 0, 1)
|
||||
$MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer2/RecordMeter.value = energy * 100
|
||||
$MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/VBoxContainer2/VideoPos.text = "Video Pos : "+String($MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.stream_position)
|
||||
$MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/VBoxContainer2/AudioPos.text = "Audio Pos : "+String($AudioStreamPlayer.get_playback_position())
|
||||
if !position_changing_by_code:
|
||||
position_changing_by_code = true
|
||||
#$MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPosSlider.value = $MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.stream_position
|
||||
position_changing_by_code = false
|
||||
|
||||
|
||||
func _on_RecButton_pressed():
|
||||
if recorder.is_recording_active():
|
||||
$MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.stop()
|
||||
recording = recorder.get_recording()
|
||||
raw_recording = recorder.get_recording()
|
||||
$MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/PlayButton.disabled = false
|
||||
recorder.set_recording_active(false)
|
||||
$MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/RecordButton.text = "Record"
|
||||
|
@ -45,7 +63,39 @@ func _on_RecButton_pressed():
|
|||
|
||||
|
||||
func _on_PlayButton_pressed():
|
||||
var data = recording.get_data()
|
||||
$AudioStreamPlayer.stream = recording
|
||||
var data = raw_recording.get_data()
|
||||
$AudioStreamPlayer.stream = raw_recording
|
||||
$MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.play()
|
||||
$AudioStreamPlayer.play()
|
||||
#$MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPosSlider.editable = true
|
||||
$MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/VBoxContainer/DelaySlider.editable = true
|
||||
|
||||
|
||||
func _on_BackgroundaudioSlider_changed(value):
|
||||
$MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.volume_db = linear2db(value/100)
|
||||
|
||||
|
||||
func _on_VocalSlider_value_changed(value):
|
||||
$AudioStreamPlayer.volume_db = linear2db(value/100)
|
||||
|
||||
|
||||
func _on_DelaySlider_value_changed(value):
|
||||
$MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/VBoxContainer/Label.text = "Audio Delay: "+String(value/1000)+"s"
|
||||
$MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.paused = true
|
||||
$AudioStreamPlayer.stream_paused = true
|
||||
$AudioStreamPlayer.seek($MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.stream_position + value/1000)
|
||||
$MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.paused = false
|
||||
$AudioStreamPlayer.stream_paused = false
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
func _on_VideoPosSlider_value_changed(value):
|
||||
if !position_changing_by_code:
|
||||
$MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.paused = true
|
||||
$AudioStreamPlayer.stream_paused = true
|
||||
position_changing_by_code = true
|
||||
$MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.streamseek(value)
|
||||
$AudioStreamPlayer.seek(value + $MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/VBoxContainer/DelaySlider.value/1000)
|
||||
$MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.paused = false
|
||||
position_changing_by_code = false
|
||||
$AudioStreamPlayer.stream_paused = false
|
||||
|
|
|
@ -77,10 +77,20 @@ alignment = 1
|
|||
|
||||
[node name="VideoPlayer" type="VideoPlayer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer"]
|
||||
margin_right = 1013.0
|
||||
margin_bottom = 281.0
|
||||
margin_bottom = 261.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="VideoPosSlider" type="HSlider" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer"]
|
||||
margin_top = 265.0
|
||||
margin_right = 1013.0
|
||||
margin_bottom = 281.0
|
||||
rect_min_size = Vector2( 500, 0 )
|
||||
size_flags_horizontal = 3
|
||||
max_value = 10.0
|
||||
step = 0.01
|
||||
editable = false
|
||||
|
||||
[node name="HBoxContainer3" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
|
||||
margin_top = 309.0
|
||||
margin_right = 1013.0
|
||||
|
@ -97,28 +107,28 @@ size_flags_vertical = 3
|
|||
alignment = 1
|
||||
|
||||
[node name="RecordButton" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer"]
|
||||
margin_top = 89.0
|
||||
margin_top = 28.0
|
||||
margin_right = 1013.0
|
||||
margin_bottom = 109.0
|
||||
margin_bottom = 48.0
|
||||
text = "Record"
|
||||
|
||||
[node name="PlayButton" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer"]
|
||||
margin_top = 113.0
|
||||
margin_top = 52.0
|
||||
margin_right = 1013.0
|
||||
margin_bottom = 133.0
|
||||
margin_bottom = 72.0
|
||||
disabled = true
|
||||
text = "Play"
|
||||
|
||||
[node name="Status" type="RichTextLabel" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer"]
|
||||
margin_top = 137.0
|
||||
margin_top = 76.0
|
||||
margin_right = 1013.0
|
||||
margin_bottom = 152.0
|
||||
margin_bottom = 91.0
|
||||
fit_content_height = true
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer"]
|
||||
margin_top = 156.0
|
||||
margin_top = 95.0
|
||||
margin_right = 1013.0
|
||||
margin_bottom = 172.0
|
||||
margin_bottom = 111.0
|
||||
|
||||
[node name="Playbacklabel" type="RichTextLabel" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer"]
|
||||
margin_right = 110.0
|
||||
|
@ -141,9 +151,9 @@ texture_progress = ExtResource( 4 )
|
|||
nine_patch_stretch = true
|
||||
|
||||
[node name="HBoxContainer2" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer"]
|
||||
margin_top = 176.0
|
||||
margin_top = 115.0
|
||||
margin_right = 1013.0
|
||||
margin_bottom = 192.0
|
||||
margin_bottom = 131.0
|
||||
|
||||
[node name="Recordlabel" type="RichTextLabel" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer2"]
|
||||
margin_right = 110.0
|
||||
|
@ -162,6 +172,99 @@ size_flags_vertical = 0
|
|||
texture_progress = ExtResource( 4 )
|
||||
nine_patch_stretch = true
|
||||
|
||||
[node name="HBoxContainer3" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer"]
|
||||
margin_top = 135.0
|
||||
margin_right = 1013.0
|
||||
margin_bottom = 235.0
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3"]
|
||||
margin_right = 620.0
|
||||
margin_bottom = 100.0
|
||||
|
||||
[node name="BackgroundaudioSlider" type="VSlider" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer"]
|
||||
margin_right = 16.0
|
||||
margin_bottom = 100.0
|
||||
rect_min_size = Vector2( 0, 100 )
|
||||
value = 50.0
|
||||
|
||||
[node name="VocalSlider" type="VSlider" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer"]
|
||||
margin_left = 20.0
|
||||
margin_right = 36.0
|
||||
margin_bottom = 100.0
|
||||
rect_min_size = Vector2( 0, 100 )
|
||||
max_value = 100.0
|
||||
value = 50.0
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer"]
|
||||
margin_left = 40.0
|
||||
margin_right = 540.0
|
||||
margin_bottom = 100.0
|
||||
|
||||
[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/VBoxContainer"]
|
||||
margin_right = 500.0
|
||||
margin_bottom = 14.0
|
||||
size_flags_horizontal = 3
|
||||
text = "Audio Delay : 0s"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="DelaySlider" type="HSlider" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/VBoxContainer"]
|
||||
margin_top = 18.0
|
||||
margin_right = 500.0
|
||||
margin_bottom = 34.0
|
||||
rect_min_size = Vector2( 500, 0 )
|
||||
size_flags_horizontal = 3
|
||||
max_value = 1000.0
|
||||
editable = false
|
||||
|
||||
[node name="VBoxContainer2" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer"]
|
||||
margin_left = 544.0
|
||||
margin_right = 620.0
|
||||
margin_bottom = 100.0
|
||||
|
||||
[node name="AudioPos" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/VBoxContainer2"]
|
||||
margin_right = 76.0
|
||||
margin_bottom = 14.0
|
||||
size_flags_horizontal = 3
|
||||
text = "Audio Pos : "
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="VideoPos" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/VBoxContainer2"]
|
||||
margin_top = 18.0
|
||||
margin_right = 76.0
|
||||
margin_bottom = 49.0
|
||||
size_flags_horizontal = 3
|
||||
text = "Video Pos :
|
||||
"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="HBoxContainer4" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer"]
|
||||
margin_top = 239.0
|
||||
margin_right = 1013.0
|
||||
margin_bottom = 253.0
|
||||
|
||||
[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer4"]
|
||||
margin_right = 16.0
|
||||
margin_bottom = 14.0
|
||||
rect_min_size = Vector2( 16, 0 )
|
||||
text = "B"
|
||||
align = 1
|
||||
valign = 1
|
||||
|
||||
[node name="Label2" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer4"]
|
||||
margin_left = 20.0
|
||||
margin_right = 36.0
|
||||
margin_bottom = 14.0
|
||||
rect_min_size = Vector2( 16, 0 )
|
||||
text = "V"
|
||||
align = 1
|
||||
valign = 1
|
||||
|
||||
[node name="AudioStreamRecorder" type="AudioStreamPlayer" parent="."]
|
||||
stream = SubResource( 1 )
|
||||
autoplay = true
|
||||
|
@ -169,5 +272,9 @@ bus = "Record"
|
|||
|
||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
||||
[connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer2/Quit" to="MarginContainer/VBoxContainer/HBoxContainer2/Quit" method="_on_Quit_pressed"]
|
||||
[connection signal="value_changed" from="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPosSlider" to="." method="_on_VideoPosSlider_value_changed"]
|
||||
[connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/RecordButton" to="." method="_on_RecButton_pressed"]
|
||||
[connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/PlayButton" to="." method="_on_PlayButton_pressed"]
|
||||
[connection signal="value_changed" from="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/BackgroundaudioSlider" to="." method="_on_BackgroundaudioSlider_changed"]
|
||||
[connection signal="value_changed" from="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/VocalSlider" to="." method="_on_VocalSlider_value_changed"]
|
||||
[connection signal="value_changed" from="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/VBoxContainer/DelaySlider" to="." method="_on_DelaySlider_value_changed"]
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
resource_name = "SpectrumAnalyzer"
|
||||
|
||||
[sub_resource type="AudioEffectRecord" id=4]
|
||||
resource_name = "Record"
|
||||
|
||||
[sub_resource type="AudioEffectSpectrumAnalyzer" id=3]
|
||||
resource_name = "SpectrumAnalyzer"
|
||||
|
|
|
@ -36,9 +36,9 @@ func _on_Control_ready():
|
|||
# line = o.get_line()
|
||||
# print(line)
|
||||
#print(OS.get_user_data_dir())
|
||||
$HTTPRequest.request("http://127.0.0.1:10435/get?url=https://www.youtube.com/watch?v=x1T6QFpd0J4")
|
||||
#$HTTPRequest.request("http://127.0.0.1:10435/get?url=https://player.vimeo.com/video/459151338")
|
||||
#https://www.youtube.com/watch?v=x1T6QFpd0J4
|
||||
pass
|
||||
|
||||
|
||||
func _on_HTTPRequest_request_completed(result, response_code, headers, body):
|
||||
|
@ -58,3 +58,8 @@ func _on_HTTPRequest_request_completed(result, response_code, headers, body):
|
|||
|
||||
func _on_DownloadProgress_changed():
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
func _on_Button_pressed():
|
||||
print("http://127.0.0.1:10435/get?url="+$HBoxContainer/TextEdit.text)
|
||||
$HTTPRequest.request("http://127.0.0.1:10435/get?url="+$HBoxContainer/TextEdit.text)
|
||||
|
|
|
@ -45,7 +45,41 @@ __meta__ = {
|
|||
margin_right = 624.0
|
||||
margin_bottom = 14.0
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="."]
|
||||
margin_left = 1.0
|
||||
margin_top = 379.0
|
||||
margin_right = 1023.0
|
||||
margin_bottom = 394.0
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Label" type="Label" parent="HBoxContainer"]
|
||||
margin_right = 45.0
|
||||
margin_bottom = 20.0
|
||||
rect_min_size = Vector2( 45, 0 )
|
||||
size_flags_vertical = 3
|
||||
text = "URL: "
|
||||
valign = 1
|
||||
|
||||
[node name="TextEdit" type="TextEdit" parent="HBoxContainer"]
|
||||
margin_left = 49.0
|
||||
margin_right = 985.0
|
||||
margin_bottom = 20.0
|
||||
size_flags_horizontal = 3
|
||||
text = "https://www.youtube.com/watch?v=x1T6QFpd0J4"
|
||||
|
||||
[node name="Button" type="Button" parent="HBoxContainer"]
|
||||
margin_left = 989.0
|
||||
margin_right = 1022.0
|
||||
margin_bottom = 20.0
|
||||
text = "GO"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="HTTPRequest" type="HTTPRequest" parent="."]
|
||||
[connection signal="ready" from="." to="." method="_on_Control_ready"]
|
||||
[connection signal="changed" from="VBoxContainer2/DownloadProgress" to="." method="_on_DownloadProgress_changed"]
|
||||
[connection signal="pressed" from="HBoxContainer/Button" to="." method="_on_Button_pressed"]
|
||||
[connection signal="request_completed" from="HTTPRequest" to="." method="_on_HTTPRequest_request_completed"]
|
||||
|
|
|
@ -32,7 +32,6 @@ margin_bottom = 612.0
|
|||
texture = ExtResource( 1 )
|
||||
|
||||
[node name="SceneChangeTimer" type="Timer" parent="."]
|
||||
wait_time = 5.0
|
||||
one_shot = true
|
||||
|
||||
[node name="StartDlServerTimer" type="Timer" parent="."]
|
||||
|
|
Loading…
Reference in New Issue