Sync actually works. Gobsmacked. Next: seeking.
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/tag Build is passing Details

This commit is contained in:
Martyn 2020-09-24 23:00:40 +02:00
parent 5b86523b48
commit 27bf8b453a
6 changed files with 212 additions and 18 deletions

View File

@ -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

View File

@ -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"]

View File

@ -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"

View File

@ -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)

View File

@ -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"]

View File

@ -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="."]