From 712bdfa6139658a1708eda5a411c29671df6cde8 Mon Sep 17 00:00:00 2001 From: Tanasart Date: Tue, 23 Apr 2024 09:59:59 +0700 Subject: [PATCH] - [WAV File In] Add more format checker. --- .../o_dialog_group_input_order.yy.backup0 | 2 +- .../o_dialog_group_input_order.yy.backup1 | 2 +- .../scripts/node_value/node_value.gml.backup0 | 4 +- .../scripts/node_value/node_value.gml.backup1 | 4 +- .../node_wav_file_read.gml.backup0 | 276 ++++++++++++++++++ .../wav_file_read/wav_file_read.gml.backup0 | 130 +++++++++ .../wav_file_read/wav_file_read.gml.backup1 | 130 +++++++++ scripts/node_value/node_value.gml | 2 +- .../node_wav_file_read/node_wav_file_read.gml | 34 +-- scripts/wav_file_read/wav_file_read.gml | 30 +- 10 files changed, 565 insertions(+), 49 deletions(-) create mode 100644 #backups/scripts/node_wav_file_read/node_wav_file_read.gml.backup0 create mode 100644 #backups/scripts/wav_file_read/wav_file_read.gml.backup0 create mode 100644 #backups/scripts/wav_file_read/wav_file_read.gml.backup1 diff --git a/#backups/objects/o_dialog_group_input_order/o_dialog_group_input_order.yy.backup0 b/#backups/objects/o_dialog_group_input_order/o_dialog_group_input_order.yy.backup0 index 6c687b7e6..a257e524b 100644 --- a/#backups/objects/o_dialog_group_input_order/o_dialog_group_input_order.yy.backup0 +++ b/#backups/objects/o_dialog_group_input_order/o_dialog_group_input_order.yy.backup0 @@ -1,4 +1,4 @@ -// 2024-04-23 08:59:29 +// 2024-04-23 09:05:31 #event properties (no comments/etc. here are saved) parent_index = _p_dialog; uses_physics = false; diff --git a/#backups/objects/o_dialog_group_input_order/o_dialog_group_input_order.yy.backup1 b/#backups/objects/o_dialog_group_input_order/o_dialog_group_input_order.yy.backup1 index 09b56018d..6c687b7e6 100644 --- a/#backups/objects/o_dialog_group_input_order/o_dialog_group_input_order.yy.backup1 +++ b/#backups/objects/o_dialog_group_input_order/o_dialog_group_input_order.yy.backup1 @@ -1,4 +1,4 @@ -// 2024-04-23 08:58:27 +// 2024-04-23 08:59:29 #event properties (no comments/etc. here are saved) parent_index = _p_dialog; uses_physics = false; diff --git a/#backups/scripts/node_value/node_value.gml.backup0 b/#backups/scripts/node_value/node_value.gml.backup0 index be3916776..6ce4b7359 100644 --- a/#backups/scripts/node_value/node_value.gml.backup0 +++ b/#backups/scripts/node_value/node_value.gml.backup0 @@ -1,4 +1,4 @@ -// 2024-04-22 19:15:18 +// 2024-04-23 09:27:33 #region ---- global names ---- global.junctionEndName = [ "Hold", "Loop", "Ping pong", "Wrap" ]; @@ -874,7 +874,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru } } setDropKey(); #endregion - static resetDisplay = function() { #region //////////////////// RESET DISPLAY //////////////////// + static resetDisplay = function() { #region //////////////////// RESET DISPLAY //////////////////// editWidget = noone; switch(display_type) { case VALUE_DISPLAY.button : #region diff --git a/#backups/scripts/node_value/node_value.gml.backup1 b/#backups/scripts/node_value/node_value.gml.backup1 index 9e278978e..b8bf2c881 100644 --- a/#backups/scripts/node_value/node_value.gml.backup1 +++ b/#backups/scripts/node_value/node_value.gml.backup1 @@ -1,4 +1,4 @@ -// 2024-04-22 18:42:00 +// 2024-04-23 09:26:39 #region ---- global names ---- global.junctionEndName = [ "Hold", "Loop", "Ping pong", "Wrap" ]; @@ -874,7 +874,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru } } setDropKey(); #endregion - static resetDisplay = function() { #region //////////////////// RESET DISPLAY //////////////////// + static resetDisplay = function() { #region //////////////////// RESET DISPLAY //////////////////// editWidget = noone; switch(display_type) { case VALUE_DISPLAY.button : #region diff --git a/#backups/scripts/node_wav_file_read/node_wav_file_read.gml.backup0 b/#backups/scripts/node_wav_file_read/node_wav_file_read.gml.backup0 new file mode 100644 index 000000000..73a9e7630 --- /dev/null +++ b/#backups/scripts/node_wav_file_read/node_wav_file_read.gml.backup0 @@ -0,0 +1,276 @@ +// 2024-04-23 09:39:26 +function Node_create_WAV_File_Read(_x, _y, _group = noone) { #region + var path = ""; + if(!LOADING && !APPENDING && !CLONING) { + path = get_open_filename("audio|*.wav", ""); + key_release(); + if(path == "") return noone; + } + + var node = new Node_WAV_File_Read(_x, _y, _group); + node.inputs[| 0].setValue(path); + node.doUpdate(); + + return node; +} #endregion + +function Node_create_WAV_File_Read_path(_x, _y, path) { #region + if(!file_exists_empty(path)) return noone; + + var node = new Node_WAV_File_Read(_x, _y, PANEL_GRAPH.getCurrentContext()); + node.inputs[| 0].setValue(path); + node.doUpdate(); + + return node; +} #endregion + +function Node_WAV_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) constructor { + name = "WAV File In"; + color = COLORS.node_blend_input; + + inputs[| 0] = nodeValue("Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.path, "") + .setDisplay(VALUE_DISPLAY.path_load, { filter: "audio|*.wav" }) + .rejectArray(); + + inputs[| 1] = nodeValue("Sync length", self, JUNCTION_CONNECT.input, VALUE_TYPE.trigger, false ) + .setDisplay(VALUE_DISPLAY.button, { name: "Sync", UI : true, onClick: function() { + if(content == noone) return; + TOTAL_FRAMES = max(1, ceil(content.duration * PROJECT.animator.framerate)); + } }); + + inputs[| 2] = nodeValue("Mono", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); + + outputs[| 0] = nodeValue("Data", self, JUNCTION_CONNECT.output, VALUE_TYPE.audioBit, noone) + .setArrayDepth(1); + + outputs[| 1] = nodeValue("Path", self, JUNCTION_CONNECT.output, VALUE_TYPE.path, ""); + + outputs[| 2] = nodeValue("Sample rate", self, JUNCTION_CONNECT.output, VALUE_TYPE.integer, 44100) + .setVisible(false); + + outputs[| 3] = nodeValue("Channels", self, JUNCTION_CONNECT.output, VALUE_TYPE.integer, 2) + .setVisible(false); + + outputs[| 4] = nodeValue("Duration (s)", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0) + .setVisible(false); + + content = noone; + path_current = ""; + edit_time = 0; + + attributes.file_checker = true; + array_push(attributeEditors, [ "File Watcher", function() { return attributes.file_checker; }, + new checkBox(function() { attributes.file_checker = !attributes.file_checker; }) ]); + + first_update = false; + + input_display_list = [ 0, 1, 2 ]; + output_display_list = [ 0, 1, 2, 3, 4 ]; + preview_audio = -1; + preview_id = noone; + + wav_file_reading = false; + wav_file_prg = 0; + wav_file_lim = 1; + + #region attribute + attributes.preview_shift = 0; + attributes.preview_gain = 0.5; + + array_push(attributeEditors, "Audio Preview"); + + array_push(attributeEditors, ["Gain", function() { return attributes.preview_gain; }, + new textBox(TEXTBOX_INPUT.number, function(val) { + attributes.preview_gain = val; + })]); + + array_push(attributeEditors, ["Shift", function() { return attributes.preview_shift; }, + new textBox(TEXTBOX_INPUT.number, function(val) { + attributes.preview_shift = val; + })]); + #endregion + + on_drop_file = function(path) { #region + if(updatePaths(path)) { + doUpdate(); + return true; + } + + return false; + } #endregion + + function updatePaths(path) { #region + if(path == -1) return false; + + if(path_current == "") + first_update = true; + path_current = path; + edit_time = max(edit_time, file_get_modify_s(path_current)); + + var ext = string_lower(filename_ext(path)); + var _name = string_replace(filename_name(path), filename_ext(path), ""); + + if(ext != ".wav") return false; + + outputs[| 1].setValue(path); + + printIf(global.FLAG.wav_import, "-- Reading file..."); + + content = file_read_wav(path); + return true; + } #endregion + + function readSoundComplete() { #region + outputs[| 0].setValue(content); + outputs[| 2].setValue(content.sample); + outputs[| 3].setValue(content.channels); + outputs[| 4].setValue(content.duration); + + printIf(global.FLAG.wav_import, "-- Creating preview buffer..."); + + var frm = ceil(content.duration * PROJECT.animator.framerate); + inputs[| 1].editWidget.text = $"Sync ({frm} frames)"; + + var bufferId = buffer_create(content.packet * 2, buffer_fixed, 1); + buffer_seek(bufferId, buffer_seek_start, 0); + + var val_to_write = 1; + + for (var i = 0; i < content.packet; i++) + buffer_write(bufferId, buffer_s16, round(content.sound[0][i] / 4 * 65535)); + + preview_audio = audio_create_buffer_sound(bufferId, buffer_s16, content.sample, 0, content.packet * 2, audio_mono); + var surf = content.checkPreview(320, 128, true); + } #endregion + + #region ++++ inspector ++++ + insp1UpdateTooltip = __txt("Refresh"); + insp1UpdateIcon = [ THEME.refresh_icon, 1, COLORS._main_value_positive ]; + + insp2UpdateTooltip = __txtx("play_with_timeline", "Play with timeline"); + insp2UpdateIcon = [ THEME.play_sound, 1, COLORS._main_icon_light ]; + attributes.play = true; + + static onInspector1Update = function() { + var path = getInputData(0); + if(path == "") return; + updatePaths(path); + update(); + } + + static onInspector2Update = function() { + attributes.play = !attributes.play; + } + #endregion + + static step = function() { #region + if(file_read_wav_step()) { + print("Load audio complete"); + readSoundComplete(); + + if(content != noone) { + var frm = max(1, ceil(content.duration * PROJECT.animator.framerate)); + inputs[| 1].editWidget.text = $"Sync ({frm} frames)"; + } + + RENDER_ALL_REORDER + } + + insp2UpdateIcon[1] = attributes.play; + insp2UpdateIcon[2] = attributes.play? COLORS._main_icon_light : COLORS._main_icon; + if(preview_audio == -1) return; + + if(audio_is_playing(preview_audio) && !PROJECT.animator.is_playing) + audio_stop_sound(preview_audio); + + if(!attributes.play) return; + + if(IS_FIRST_FRAME) { audio_stop_sound(preview_audio); } + + if(PROJECT.animator.is_playing) { + var dur = CURRENT_FRAME / PROJECT.animator.framerate - attributes.preview_shift; + + if(!audio_is_playing(preview_audio)) + preview_id = audio_play_sound(preview_audio, 1, false, attributes.preview_gain, dur); + } + + if(attributes.file_checker && path_current != "") { + if(file_get_modify_s(path_current) > edit_time) { + updatePaths(); + triggerRender(); + } + } + } #endregion + + static update = function(frame = CURRENT_FRAME) { #region + var path = path_get(getInputData(0)); + var mono = getInputData(2); + + if(path_current != path) updatePaths(path); + if(!is_instanceof(content, audioObject)) return; + + content.mono = mono; + } #endregion + + static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) { #region + if(content == noone) return; + var bbox = drawGetBbox(xx, yy, _s); + var surf = content.checkPreview(320, 128); + + if(wav_file_reading) { + var cx = xx + w * _s / 2; + var cy = yy + h * _s / 2; + var rr = min(w - 64, h - 64) * _s / 2; + + draw_set_color(COLORS._main_icon); + draw_arc(cx, cy, rr, 90, 90 - 360 * wav_file_prg / content.packet, 4 * _s, 180); + return; + } else if(is_surface(surf)) { + var sw = surface_get_width_safe(surf); + var sh = surface_get_height_safe(surf); + var ss = min(bbox.w / sw, bbox.h / sh); + + var dx = bbox.xc - sw * ss / 2; + var dy = bbox.yc - sh * ss / 2; + + draw_surface_ext_safe(surf, dx, dy, ss, ss,,, 0.50); + + var wd = clamp((CURRENT_FRAME / PROJECT.animator.framerate) / content.duration, 0, 1) * sw; + draw_surface_part_ext_safe(surf, 0, 0, min(wd, sw), sh, dx, dy, ss, ss,, attributes.play? COLORS._main_accent : c_white); + + draw_set_color(attributes.play? COLORS._main_accent : c_white); + draw_line(dx + wd * ss, bbox.yc - 16 * _s, dx + wd * ss, bbox.yc + 16 * _s); + } + + var str = filename_name(path_current); + draw_set_text(f_sdf, fa_center, fa_bottom, COLORS._main_text); + var ss = string_scale(str, bbox.w, bbox.h); + draw_text_transformed(bbox.xc, bbox.y1, str, ss, ss, 0); + } #endregion + + static drawAnimationTimeline = function(_shf, _w, _h, _s) { #region + if(content == noone) return; + draw_set_color(COLORS._main_icon_dark); + draw_set_alpha(1); + + var _st = round(content.sample / PROJECT.animator.framerate); //sample per frame + var _am = content.packet / _st; + var ox, oy, nx, ny; + + if(!struct_has(content, "sound")) return; + if(array_length(content.sound) < 1) return; + + for( var i = 0; i <= _am; i++ ) { + var _dat = content.sound[0][min(i * _st, content.packet - 1)]; + nx = _shf + i * _s; + ny = _h / 2 + _dat * _h; + + if(i) draw_line_width(ox, oy, nx, ny, 2); + + ox = nx; + oy = ny; + } + + draw_set_alpha(1); + } #endregion +} \ No newline at end of file diff --git a/#backups/scripts/wav_file_read/wav_file_read.gml.backup0 b/#backups/scripts/wav_file_read/wav_file_read.gml.backup0 new file mode 100644 index 000000000..a4187f8b3 --- /dev/null +++ b/#backups/scripts/wav_file_read/wav_file_read.gml.backup0 @@ -0,0 +1,130 @@ +// 2024-04-23 09:59:09 +function file_read_ASCII(file, amo = 1) { + var b = ""; + repeat(amo) b += chr(buffer_read(file, buffer_u8)); + return b; +} + +function file_read_wav(path) { + wav_file_reader = buffer_load(path); + wav_file_reading = true; + wav_file_prg = 0; + + if(wav_file_reader == -1) { + noti_warning("File read error."); + return noone; + } + + wav_file_load_time = current_time; + var _buffer_size = buffer_get_size(wav_file_reader); + + //RIFF + var debug_str = $">> READING WAV [{path}] <<\n"; + debug_str += $"Buffer size: {_buffer_size}\n\n"; + + debug_str += "-- RIFF --\n"; + var b = file_read_ASCII(wav_file_reader, 4); debug_str += $"{b}\n"; + var l = buffer_read(wav_file_reader, buffer_u32); debug_str += $"Packages: {l}\n"; + var w = file_read_ASCII(wav_file_reader, 4); debug_str += $"{w}\n"; + + if(b != "RIFF" || w != "WAVE") { + printIf(global.FLAG.wav_import, debug_str); + noti_warning("Not a valid .wav file."); + return noone; + } + + if(buffer_get_size(wav_file_reader) != l + 8) + noti_warning(".wav file has different size than the package header. This may cause reading error."); + + //FORMAT + debug_str += "-- FORMAT --\n"; + var b = file_read_ASCII(wav_file_reader, 4); debug_str += $"{b}\n"; + var l = buffer_read(wav_file_reader, buffer_u32); debug_str += $"Length: {l}\n"; + var f = buffer_read(wav_file_reader, buffer_u16); debug_str += $"Linear quantize: {f}\n"; + + if(l != 16 || f != 1) { + printIf(global.FLAG.wav_import, debug_str); + noti_warning("File format not supported, the audio file need to be 8, 16, 32 bit uncompressed PCM wav with no extension."); + return noone; + } + + var ch = buffer_read(wav_file_reader, buffer_u16); debug_str += $"Channels: {ch}\n"; + var sm = buffer_read(wav_file_reader, buffer_u32); debug_str += $"Sample: {sm}\n"; + var l = buffer_read(wav_file_reader, buffer_u32); debug_str += $"BPS: {l}\n"; + var br = buffer_read(wav_file_reader, buffer_u16); debug_str += $"Byterate: {br}\n"; + var l = buffer_read(wav_file_reader, buffer_u16); debug_str += $"Bit/Sam: {l}\n"; + + //DATA + debug_str += "-- DATA --\n"; + var b = file_read_ASCII(wav_file_reader, 4); debug_str += $"{b}\n"; + var l = buffer_read(wav_file_reader, buffer_u32); debug_str += $"Length: {l}\n"; + + var bpc = br / ch; + var bits = l / br; + var data = array_create(ch); + var dataF = [ array_create(bits) ]; + + debug_str += "-- READ --\n"; + debug_str += $"Channels: {ch}\n"; + debug_str += $"BPC: {bpc * 8}\n"; + debug_str += $"bits: {bits}\n"; + debug_str += $"samples: {sm}\n"; + debug_str += $"duration: {real(bits) / real(sm)}s\n"; + + for( var j = 0; j < ch; j++ ) + data[j] = array_create(bits); + + wav_file_range = [0, 0]; + + var _buffer_left = _buffer_size - buffer_tell(wav_file_reader); + if(_buffer_left < l) { + noti_warning($"The file is smaller than the definded length. ({_buffer_left} < {l})"); + bits = floor(_buffer_left / br); + } + + content = new audioObject(sm, ch); + content.sound = data; + content.soundF = dataF; + content.bit_depth = bpc * 8; + content.duration = real(bits) / real(sm); + content.packet = bits; + + printIf(global.FLAG.wav_import, debug_str); + + return content; +} + +function file_read_wav_step() { + if(!wav_file_reading) return false; + if(!content) return false; + + var t = current_time; + var bf_type, lim; + if(content.bit_depth == 8) { bf_type = buffer_u8; lim = 255; } + else if(content.bit_depth == 16) { bf_type = buffer_s16; lim = 32_768; } + else if(content.bit_depth == 32) { bf_type = buffer_s32; lim = 2_147_483_648; } + + for(; wav_file_prg < content.packet; wav_file_prg++ ) { + var ch = 0; + var cha = content.channels; + var j = 0; + + repeat( cha ) { + var b = buffer_read(wav_file_reader, bf_type) / lim; + ch += b; + content.sound[j][wav_file_prg] = b; + j++; + } + + content.soundF[0][wav_file_prg] = ch / content.channels; + + if(current_time - t > 1000 / 30) return false; + } + + //printIf(global.FLAG.wav_import, $"Wav range: {wav_file_range}"); + printIf(global.FLAG.wav_import, $"Load file complete in: {(current_time - wav_file_load_time) / 1000} s."); + + wav_file_reading = false; + buffer_delete(wav_file_reader); + return true; +} \ No newline at end of file diff --git a/#backups/scripts/wav_file_read/wav_file_read.gml.backup1 b/#backups/scripts/wav_file_read/wav_file_read.gml.backup1 new file mode 100644 index 000000000..b621bf417 --- /dev/null +++ b/#backups/scripts/wav_file_read/wav_file_read.gml.backup1 @@ -0,0 +1,130 @@ +// 2024-04-23 09:59:04 +function file_read_ASCII(file, amo = 1) { + var b = ""; + repeat(amo) b += chr(buffer_read(file, buffer_u8)); + return b; +} + +function file_read_wav(path) { + wav_file_reader = buffer_load(path); + wav_file_reading = true; + wav_file_prg = 0; + + if(wav_file_reader == -1) { + noti_warning("File read error."); + return noone; + } + + wav_file_load_time = current_time; + var _buffer_size = buffer_get_size(wav_file_reader); + + //RIFF + var debug_str = $">> READING WAV [{path}] <<\n"; + debug_str += $"Buffer size: {_buffer_size}\n\n"; + + debug_str += "-- RIFF --\n"; + var b = file_read_ASCII(wav_file_reader, 4); debug_str += $"{b}\n"; + var l = buffer_read(wav_file_reader, buffer_u32); debug_str += $"Packages: {l}\n"; + var w = file_read_ASCII(wav_file_reader, 4); debug_str += $"{w}\n"; + + if(b != "RIFF" || w != "WAVE") { + printIf(global.FLAG.wav_import, debug_str); + noti_warning("Not a valid .wav file."); + return noone; + } + + if(buffer_get_size(wav_file_reader) != l + 8) + noti_warning(".wav file has different size than the package header. This may cause reading error."); + + //FORMAT + debug_str += "-- FORMAT --\n"; + var b = file_read_ASCII(wav_file_reader, 4); debug_str += $"{b}\n"; + var l = buffer_read(wav_file_reader, buffer_u32); debug_str += $"Length: {l}\n"; + var f = buffer_read(wav_file_reader, buffer_u16); debug_str += $"Linear quantize: {f}\n"; + + if(l != 16 || f != 1) { + printIf(global.FLAG.wav_import, debug_str); + noti_warning("File format not supported, the audio file need to be 8, 16, 32 bit uncompressed PCM wav with no extension."); + return noone; + } + + var ch = buffer_read(wav_file_reader, buffer_u16); debug_str += $"Channels: {ch}\n"; + var sm = buffer_read(wav_file_reader, buffer_u32); debug_str += $"Sample: {sm}\n"; + var l = buffer_read(wav_file_reader, buffer_u32); debug_str += $"BPS: {l}\n"; + var br = buffer_read(wav_file_reader, buffer_u16); debug_str += $"Byterate: {br}\n"; + var l = buffer_read(wav_file_reader, buffer_u16); debug_str += $"Bit/Sam: {l}\n"; + + //DATA + debug_str += "-- DATA --\n"; + var b = file_read_ASCII(wav_file_reader, 4); debug_str += $"{b}\n"; + var l = buffer_read(wav_file_reader, buffer_u32); debug_str += $"Length: {l}\n"; + + var bpc = br / ch; + var bits = l / br; + var data = array_create(ch); + var dataF = [ array_create(bits) ]; + + debug_str += "-- READ --\n"; + debug_str += $"Channels: {ch}\n"; + debug_str += $"BPC: {bpc * 8}\n"; + debug_str += $"bits: {bits}\n"; + debug_str += $"samples: {sm}\n"; + debug_str += $"duration: {real(bits) / real(sm)}s\n"; + + for( var j = 0; j < ch; j++ ) + data[j] = array_create(bits); + + wav_file_range = [0, 0]; + + var _buffer_left = _buffer_size - buffer_tell(wav_file_reader); + if(_buffer_left < l) { + noti_warning($"The file is smaller than the definded length. ({_buffer_left} < {l})"); + bits = floor(_buffer_left / br); + } + + content = new audioObject(sm, ch); + content.sound = data; + content.soundF = dataF; + content.bit_depth = bpc * 8; + content.duration = real(bits) / real(sm); + content.packet = bits; + + printIf(global.FLAG.wav_import, debug_str); + + return content; +} + +function file_read_wav_step() { + if(!wav_file_reading) return false; + if(!content) return false; + + var t = current_time; + var bf_type, lim; + if(content.bit_depth == 8) { bf_type = buffer_u8; lim = 255; } + else if(content.bit_depth == 16) { bf_type = buffer_s16; lim = 32_768; } + else if(content.bit_depth == 32) { bf_type = buffer_s32; lim = 2_147_483_648; } + + for(; wav_file_prg < content.packet; wav_file_prg++ ) { + var ch = 0; + var cha = content.channels; + var j = 0; + + repeat( cha ) { + var b = buffer_read(wav_file_reader, bf_type) / lim; + ch += b; + content.sound[j][wav_file_prg] = b; + j++; + } + + content.soundF[0][wav_file_prg] = ch / content.channels; + + if(current_time - t > 1000 / 30) return false; + } + + //printIf(global.FLAG.wav_import, $"Wav range: {wav_file_range}"); + printIf(global.FLAG.wav_import, $"Load file complete in: {(current_time - wav_file_load_time) / 1000} s."); + + wav_file_reading = false; + buffer_delete(wav_file_reader); + return true; +} \ No newline at end of file diff --git a/scripts/node_value/node_value.gml b/scripts/node_value/node_value.gml index 1a609ab59..3d9efbb51 100644 --- a/scripts/node_value/node_value.gml +++ b/scripts/node_value/node_value.gml @@ -873,7 +873,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru } } setDropKey(); #endregion - static resetDisplay = function() { #region //////////////////// RESET DISPLAY //////////////////// + static resetDisplay = function() { #region //////////////////// RESET DISPLAY //////////////////// editWidget = noone; switch(display_type) { case VALUE_DISPLAY.button : #region diff --git a/scripts/node_wav_file_read/node_wav_file_read.gml b/scripts/node_wav_file_read/node_wav_file_read.gml index d78fe5b62..1bee0cc73 100644 --- a/scripts/node_wav_file_read/node_wav_file_read.gml +++ b/scripts/node_wav_file_read/node_wav_file_read.gml @@ -143,23 +143,23 @@ function Node_WAV_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) const } #endregion #region ++++ inspector ++++ - insp1UpdateTooltip = __txt("Refresh"); - insp1UpdateIcon = [ THEME.refresh_icon, 1, COLORS._main_value_positive ]; - - insp2UpdateTooltip = __txtx("play_with_timeline", "Play with timeline"); - insp2UpdateIcon = [ THEME.play_sound, 1, COLORS._main_icon_light ]; - attributes.play = true; - - static onInspector1Update = function() { - var path = getInputData(0); - if(path == "") return; - updatePaths(path); - update(); - } - - static onInspector2Update = function() { - attributes.play = !attributes.play; - } + insp1UpdateTooltip = __txt("Refresh"); + insp1UpdateIcon = [ THEME.refresh_icon, 1, COLORS._main_value_positive ]; + + insp2UpdateTooltip = __txtx("play_with_timeline", "Play with timeline"); + insp2UpdateIcon = [ THEME.play_sound, 1, COLORS._main_icon_light ]; + attributes.play = true; + + static onInspector1Update = function() { + var path = getInputData(0); + if(path == "") return; + updatePaths(path); + update(); + } + + static onInspector2Update = function() { + attributes.play = !attributes.play; + } #endregion static step = function() { #region diff --git a/scripts/wav_file_read/wav_file_read.gml b/scripts/wav_file_read/wav_file_read.gml index 9f397e624..2bfb577e1 100644 --- a/scripts/wav_file_read/wav_file_read.gml +++ b/scripts/wav_file_read/wav_file_read.gml @@ -1,26 +1,6 @@ function file_read_ASCII(file, amo = 1) { var b = ""; - repeat(amo) - b += chr(buffer_read(file, buffer_u8)); - //b += chr(file_bin_read_byte(file)); - return b; -} - -function file_read_bytes(file, amo = 1, signed = false, little_endian = true) { - var b = 0; - var m = little_endian? 1 : 1 << ((amo - 1) * 8); - repeat(amo) { - //b += file_bin_read_byte(file) * m; - b += buffer_read(file, buffer_u8) * m; - m = little_endian? m * 256 : m / 256; - } - - if(signed) { - var mv = 1 << (amo * 8 - 1) - 1; - if(b > mv) - b -= (1 << (amo * 8)); - } - + repeat(amo) b += chr(buffer_read(file, buffer_u8)); return b; } @@ -59,17 +39,17 @@ function file_read_wav(path) { debug_str += "-- FORMAT --\n"; var b = file_read_ASCII(wav_file_reader, 4); debug_str += $"{b}\n"; var l = buffer_read(wav_file_reader, buffer_u32); debug_str += $"Length: {l}\n"; + var f = buffer_read(wav_file_reader, buffer_u16); debug_str += $"Linear quantize: {f}\n"; - if(l != 16) { + if(l != 16 || f != 1) { printIf(global.FLAG.wav_import, debug_str); - noti_warning("File format not supported, the audio file need to be 8, 16 bit uncompressed PCM wav with no extension."); + noti_warning("File format not supported, the audio file need to be 8, 16, 32 bit uncompressed PCM wav with no extension."); return noone; } - var l = buffer_read(wav_file_reader, buffer_u16); debug_str += $"Linear quantize: {l}\n"; var ch = buffer_read(wav_file_reader, buffer_u16); debug_str += $"Channels: {ch}\n"; var sm = buffer_read(wav_file_reader, buffer_u32); debug_str += $"Sample: {sm}\n"; - var l = buffer_read(wav_file_reader, buffer_u32); debug_str += $"BPS: {l}\n"; + var l = buffer_read(wav_file_reader, buffer_u32); debug_str += $"BPS: {l}\n"; var br = buffer_read(wav_file_reader, buffer_u16); debug_str += $"Byterate: {br}\n"; var l = buffer_read(wav_file_reader, buffer_u16); debug_str += $"Bit/Sam: {l}\n";