Code Monkey home page Code Monkey logo

tsunami's Introduction

Tsunami

Tsunami is an open-source digital audio workstation (DAW). It is designed for ease of use and not-looking-crappy™.

Features

It was mostly developed for my personal home recording needs, i.e.

  • multi-track mixing
  • multi-version audio recording
  • audio effects
  • midi editing
  • synthesizers
  • samples
  • plugin system
  • persistent sessions

tsunami1

Plugin system

Tsunami uses its own just-in-time compiler for plugin code. Currently, this mostly works on x86/amd64 CPUs.

Getting started

Authors

Just me (Michael Ankele).

Acknowledgments

Huge thanks to the two people who tried using tsunami and complained in extremely helpful ways: 2er0 and Benji!

tsunami's People

Contributors

momentarylapse avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tsunami's Issues

Roadmap

Is there a file that functions as a roadmap showing what the planned trajectory of Tsunami will be ?

Build fails with -Werror=format-security

I'm building latest master e0ac02a of tsunami as an rpm package on Fedora 37, gcc 12.2.1.

The rpm macros in Fedora include this compiler flag -Werror=format-security by default, which causes the build to fail.

I can just unset it with -Wno-error=format-security and build successfully, so it's not a problem for me as a user.

However I don't know how serious these warnings actually are (in the context of tsunami) and if it's something you'd want to fix, so I'm letting you know. If it's harmless then the issue can be closed.

Here is Fedora's documentation on the subject. Debian and Ubuntu also set it by default.


Here is the relevant part of the build log, the last 2 steps before failing:

[ 79%] Building CXX object CMakeFiles/tsunami.dir/src/view/audioview/graph/LayerHeader.cpp.o
/usr/bin/g++ -DHAS_LIB_ALSA=1 -DHAS_LIB_DL=1 -DHAS_LIB_FFTW3=1 -DHAS_LIB_FLAC=1 -DHAS_LIB_GL=1 -DHAS_LIB_GTK4=1 -DHAS_LIB_OGG=1 -DHAS_LIB_PORTAUDIO=1 -DHAS_LIB_PULSEAUDIO=1 -DHAS_LIB_UNWIND=1 -DHAS_LIB_ZLIB=1 -DINSTALL_PREFIX=\"/usr\" -D_REENTRANT -I/usr/include/gtk-4.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/sysprof-4 -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/libxml2 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/graphene-1.0 -I/usr/lib64/graphene-1.0/include -I/usr/include/gio-unix-2.0 -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -g   -mfpmath=sse -msse -msse2 -pthread -pthread -std=gnu++17 -MD -MT CMakeFiles/tsunami.dir/src/view/audioview/graph/LayerHeader.cpp.o -MF CMakeFiles/tsunami.dir/src/view/audioview/graph/LayerHeader.cpp.o.d -o CMakeFiles/tsunami.dir/src/view/audioview/graph/LayerHeader.cpp.o -c /builddir/build/BUILD/tsunami-e0ac02a20021fcd56a3c0927b23f945e2f6aed87/src/view/audioview/graph/LayerHeader.cpp
/builddir/build/BUILD/tsunami-e0ac02a20021fcd56a3c0927b23f945e2f6aed87/src/test/UnitTest.cpp: In member function 'void UnitTest::run(const string&, TestProtocoll&)':
/builddir/build/BUILD/tsunami-e0ac02a20021fcd56a3c0927b23f945e2f6aed87/src/test/UnitTest.cpp:52:31: error: format not a string literal and no format arguments [-Werror=format-security]
   52 |                         printf(os::terminal::RED.c_str());
      |                         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/builddir/build/BUILD/tsunami-e0ac02a20021fcd56a3c0927b23f945e2f6aed87/src/test/UnitTest.cpp:55:31: error: format not a string literal and no format arguments [-Werror=format-security]
   55 |                         printf(os::terminal::END.c_str());
      |                         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/builddir/build/BUILD/tsunami-e0ac02a20021fcd56a3c0927b23f945e2f6aed87/src/test/UnitTest.cpp: In static member function 'static void UnitTest::run_all(const string&)':
/builddir/build/BUILD/tsunami-e0ac02a20021fcd56a3c0927b23f945e2f6aed87/src/test/UnitTest.cpp:194:23: error: format not a string literal and no format arguments [-Werror=format-security]
  194 |                 printf(os::terminal::RED.c_str());
      |                 ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/builddir/build/BUILD/tsunami-e0ac02a20021fcd56a3c0927b23f945e2f6aed87/src/test/UnitTest.cpp:196:23: error: format not a string literal and no format arguments [-Werror=format-security]
  196 |                 printf(os::terminal::END.c_str());
      |                 ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/builddir/build/BUILD/tsunami-e0ac02a20021fcd56a3c0927b23f945e2f6aed87/src/test/UnitTest.cpp:198:23: error: format not a string literal and no format arguments [-Werror=format-security]
  198 |                 printf(os::terminal::GREEN.c_str());
      |                 ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/builddir/build/BUILD/tsunami-e0ac02a20021fcd56a3c0927b23f945e2f6aed87/src/test/UnitTest.cpp:202:23: error: format not a string literal and no format arguments [-Werror=format-security]
  202 |                 printf(os::terminal::END.c_str());
      |                 ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
[ 79%] Building CXX object CMakeFiles/tsunami.dir/src/view/audioview/graph/TimeScale.cpp.o
/usr/bin/g++ -DHAS_LIB_ALSA=1 -DHAS_LIB_DL=1 -DHAS_LIB_FFTW3=1 -DHAS_LIB_FLAC=1 -DHAS_LIB_GL=1 -DHAS_LIB_GTK4=1 -DHAS_LIB_OGG=1 -DHAS_LIB_PORTAUDIO=1 -DHAS_LIB_PULSEAUDIO=1 -DHAS_LIB_UNWIND=1 -DHAS_LIB_ZLIB=1 -DINSTALL_PREFIX=\"/usr\" -D_REENTRANT -I/usr/include/gtk-4.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/sysprof-4 -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/libxml2 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/graphene-1.0 -I/usr/lib64/graphene-1.0/include -I/usr/include/gio-unix-2.0 -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -g   -mfpmath=sse -msse -msse2 -pthread -pthread -std=gnu++17 -MD -MT CMakeFiles/tsunami.dir/src/view/audioview/graph/TimeScale.cpp.o -MF CMakeFiles/tsunami.dir/src/view/audioview/graph/TimeScale.cpp.o.d -o CMakeFiles/tsunami.dir/src/view/audioview/graph/TimeScale.cpp.o -c /builddir/build/BUILD/tsunami-e0ac02a20021fcd56a3c0927b23f945e2f6aed87/src/view/audioview/graph/TimeScale.cpp
cc1plus: some warnings being treated as errors
gmake[2]: *** [CMakeFiles/tsunami.dir/build.make:5315: CMakeFiles/tsunami.dir/src/test/UnitTest.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
/builddir/build/BUILD/tsunami-e0ac02a20021fcd56a3c0927b23f945e2f6aed87/src/view/audioview/graph/LayerHeader.cpp: In member function 'virtual void LayerHeader::update_geometry_recursive(const rect&)':
/builddir/build/BUILD/tsunami-e0ac02a20021fcd56a3c0927b23f945e2f6aed87/src/view/audioview/graph/LayerHeader.cpp:157:15: warning: unused variable 'layer' [-Wunused-variable]
  157 |         auto *layer = vlayer->layer;
      |               ^~~~~
/builddir/build/BUILD/tsunami-e0ac02a20021fcd56a3c0927b23f945e2f6aed87/src/view/audioview/graph/LayerHeader.cpp: In member function 'virtual void LayerHeader::on_draw(Painter*)':
/builddir/build/BUILD/tsunami-e0ac02a20021fcd56a3c0927b23f945e2f6aed87/src/view/audioview/graph/LayerHeader.cpp:178:15: warning: unused variable 'view' [-Wunused-variable]
  178 |         auto *view = vlayer->view;
      |               ^~~~
/builddir/build/BUILD/tsunami-e0ac02a20021fcd56a3c0927b23f945e2f6aed87/src/view/audioview/graph/LayerHeader.cpp:182:15: warning: unused variable 'h' [-Wunused-variable]
  182 |         float h = area.height();
      |               ^
gmake[2]: Leaving directory '/builddir/build/BUILD/tsunami-e0ac02a20021fcd56a3c0927b23f945e2f6aed87/redhat-linux-build'
gmake[1]: *** [CMakeFiles/Makefile2:86: CMakeFiles/tsunami.dir/all] Error 2
gmake[1]: Leaving directory '/builddir/build/BUILD/tsunami-e0ac02a20021fcd56a3c0927b23f945e2f6aed87/redhat-linux-build'
gmake: *** [Makefile:139: all] Error 2

Crash on adding any synth.

Hi!

I've tried to play some midi, but tsunami crashes:
Add midi track
Open track prefs
Select the synth -> replace->choose any not Dummy

openSUSE TW, gtk 3.24.27
here is the backtrace:

Thread 1 "tsunami" received signal SIGSEGV, Segmentation fault.
gtk_css_gadget_set_state (state=GTK_STATE_FLAG_DIR_LTR, gadget=0x0) at gtkcssgadget.c:413
Downloading source file /usr/src/debug/gtk3-3.24.27-1.1.x86_64/gtk/gtkcssgadget.c...
413       gtk_css_node_set_state (priv->node, state);
(gdb) bt
#0  gtk_css_gadget_set_state (state=GTK_STATE_FLAG_DIR_LTR, gadget=0x0) at gtkcssgadget.c:413
#1  gtk_switch_state_flags_changed (widget=0x266c880 [GtkSwitch], previous_state_flags=(GTK_STATE_FLAG_BACKDROP | GTK_STATE_FLAG_DIR_LTR)) at gtkswitch.c:633
#2  0x00007ffff715590c in g_cclosure_marshal_VOID__UINTv (closure=<optimized out>, return_value=<optimized out>, instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0xc178a0) at ../gobject/gmarshal.c:704
#3  0x00007ffff71532ee in _g_closure_invoke_va (closure=closure@entry=0xc19730, return_value=return_value@entry=0x0, instance=instance@entry=0x266c880, args=args@entry=0x7fffffffccf0, n_params=1, param_types=0xc178a0) at ../gobject/gclosure.c:873
#4  0x00007ffff716bac9 in g_signal_emit_valist (instance=0x266c880, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffffffccf0) at ../gobject/gsignal.c:3404
#5  0x00007ffff716c03f in g_signal_emit (instance=instance@entry=0x266c880, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3551
#6  0x00007ffff7af418b in gtk_widget_propagate_state (widget=0x266c880 [GtkSwitch], data=0x7fffffffce4c) at gtkwidget.c:12932
#7  0x00007ffff7af4577 in gtk_widget_update_state_flags (widget=0x266c880 [GtkSwitch], flags_to_set=<optimized out>, flags_to_unset=<optimized out>) at gtkwidget.c:8872
#8  0x00007ffff7aea023 in gtk_widget_unparent (widget=0x266c880 [GtkSwitch]) at gtkwidget.c:4703
#9  0x00007ffff7959930 in gtk_grid_remove (container=0x23792b0 [GtkGrid], child=<optimized out>) at gtkgrid.c:509
#10 0x00007ffff715664d in g_cclosure_marshal_VOID__OBJECTv (closure=0xc3b760, return_value=<optimized out>, instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0xc3b790) at ../gobject/gmarshal.c:1910
#11 0x00007ffff71532ee in _g_closure_invoke_va (closure=closure@entry=0xc3b760, return_value=return_value@entry=0x0, instance=instance@entry=0x23792b0, args=args@entry=0x7fffffffd130, n_params=1, param_types=0xc3b790) at ../gobject/gclosure.c:873
#12 0x00007ffff716bac9 in g_signal_emit_valist (instance=0x23792b0, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffffffd130) at ../gobject/gsignal.c:3404
#13 0x00007ffff716c03f in g_signal_emit (instance=instance@entry=0x23792b0, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3551
#14 0x00007ffff78c511d in gtk_container_remove (container=0x23792b0 [GtkGrid], widget=0x266c880 [GtkSwitch]) at gtkcontainer.c:1906
#15 0x00007ffff7af3534 in gtk_widget_dispose (object=0x266c880 [GtkSwitch]) at gtkwidget.c:12151
#16 0x00007ffff715972e in g_object_run_dispose (object=0x266c880 [GtkSwitch]) at ../gobject/gobject.c:1226
#17 0x00007ffff7ae35e9 in gtk_widget_destroy (widget=<optimized out>) at gtkwidget.c:4776
#18 0x00000000004b0ac9 in hui::Control::~Control() (this=0x2597b60, __in_chrg=<optimized out>) at lib/hui/Controls/Control.cpp:102
#19 0x00000000004b3e99 in hui::ControlCheckBox::~ControlCheckBox() (this=0x2597b60, __in_chrg=<optimized out>) at lib/hui/Controls/ControlCheckBox.h:17
#20 hui::ControlCheckBox::~ControlCheckBox() (this=0x2597b60, __in_chrg=<optimized out>) at lib/hui/Controls/ControlCheckBox.h:17
#21 0x00000000004b0afa in hui::Control::~Control() (this=0x25f0740, __in_chrg=<optimized out>) at lib/hui/Controls/Control.cpp:95
#22 0x00000000004b77d9 in hui::ControlGrid::~ControlGrid() (this=0x25f0740, __in_chrg=<optimized out>) at lib/hui/Controls/ControlGrid.h:16
#23 hui::ControlGrid::~ControlGrid() (this=0x25f0740, __in_chrg=<optimized out>) at lib/hui/Controls/ControlGrid.h:16
#24 0x00000000004b0afa in hui::Control::~Control() (this=0x246f580, __in_chrg=<optimized out>) at lib/hui/Controls/Control.cpp:95
#25 0x00000000004b77d9 in hui::ControlGrid::~ControlGrid() (this=0x246f580, __in_chrg=<optimized out>) at lib/hui/Controls/ControlGrid.h:16
#26 hui::ControlGrid::~ControlGrid() (this=0x246f580, __in_chrg=<optimized out>) at lib/hui/Controls/ControlGrid.h:16
#27 0x00000000004cf0d0 in hui::Panel::_ClearPanel_() (this=this@entry=0x2675c40) at lib/hui/Panel.cpp:74
#28 0x00000000004cf13c in hui::Panel::~Panel() (this=0x2675c40, __in_chrg=<optimized out>) at lib/hui/Panel.cpp:35
#29 0x0000000000682212 in ModulePanel::~ModulePanel() (this=0x2675c40, __in_chrg=<optimized out>) at View/Helper/ModulePanel.cpp:95
#30 0x00000000006b5382 in TrackConsole::load_data() (this=0x142dc00) at View/SideBar/TrackConsole.cpp:91
#31 0x0000000000637867 in std::function<void ()>::operator()() const (this=0x2597e60) at /usr/include/c++/10/bits/std_function.h:622
#32 ObservableData::notify_send() (this=0x2313a78) at Stuff/Observable.cpp:171
#33 0x000000000046f866 in Observable<VirtualBase>::notify(string const&) const (message=<optimized out>, this=<optimized out>) at Action/Track/Synthesizer/../../../Data/../Stuff/Observable.h:79
#34 ActionTrackSetSynthesizer::execute(Data*) (this=0x26e6fe0, d=<optimized out>) at Action/Track/Synthesizer/ActionTrackSetSynthesizer.cpp:26
#35 0x0000000000471a2d in ActionManager::execute(Action*) (this=0xa48070, a=0x26e6fe0) at Action/ActionManager.cpp:90
#36 0x000000000049339f in Track::set_synthesizer(Synthesizer*) (this=0x2313a70, _synth=0x2691800) at Data/Track.cpp:253
#37 0x00000000006b4069 in operator() (__closure=0x23d11b0) at View/SideBar/TrackConsole.cpp:35
#38 std::__invoke_impl<void, create_synth_panel(Track*, Session*, hui::Window*)::<lambda()>&> (__f=...) at /usr/include/c++/10/bits/invoke.h:60
#39 std::__invoke_r<void, create_synth_panel(Track*, Session*, hui::Window*)::<lambda()>&> (__fn=...) at /usr/include/c++/10/bits/invoke.h:153
#40 std::_Function_handler<void(), create_synth_panel(Track*, Session*, hui::Window*)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=<optimized out>) at /usr/include/c++/10/bits/std_function.h:291
#41 0x00000000004c1666 in std::function<void ()>::operator()() const (this=0x26f21a0) at /usr/include/c++/10/bits/std_function.h:248
#42 hui::GtkRunLaterFunction(void*) (data=data@entry=0x26f21a0) at lib/hui/Callback.cpp:90
#43 0x00007ffff7061abd in g_timeout_dispatch (source=source@entry=0x2246c10, callback=0x4c1650 <hui::GtkRunLaterFunction(void*)>, user_data=0x26f21a0) at ../glib/gmain.c:4877
#44 0x00007ffff7060f57 in g_main_dispatch (context=0x8b2230) at ../glib/gmain.c:3325
#45 g_main_context_dispatch (context=0x8b2230) at ../glib/gmain.c:4043
#46 0x00007ffff70612d8 in g_main_context_iterate (context=0x8b2230, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4119
#47 0x00007ffff70615cb in g_main_loop_run (loop=loop@entry=0xa20a80) at ../glib/gmain.c:4317
#48 0x00007ffff799b08d in gtk_main () at gtkmain.c:1329
#49 0x00000000004c0432 in hui::Application::run() (this=this@entry=0x807240) at lib/hui/Application.cpp:150
#50 0x00000000006d6958 in hui_main(Array<string> const&) (arg=...) at Tsunami.cpp:298
#51 0x0000000000456bc1 in main(int, char**) (NumArgs=<optimized out>, Args=<optimized out>) at lib/hui/hui.cpp:126```

Crashes during repeated recording and playback

Sometimes (very irregularly), after recording or playback in a loop, pulseaudio starts complaining about buffer underruns. Then, more and more slow-down manifests, until the program is unusable or crashes.
Two main theories:

  • we seem to be using pulseaudio wrong (well, the documentation is not the most helpful)
  • something wrong with SignalChain and threads

This issue has been around for a long time. I just want to migrate from my internal bug tracker into the public space, giving more pressure...

[macOS] Build error: `common.h: error: expected identifier before '(' token`

Something does not work here, at least with gcc and gtk4:

In file included from /opt/local/lib/gcc13/gcc/powerpc-apple-darwin10/13.2.0/include-fixed/math.h:35,
                 from /opt/local/include/gcc13/c++/cmath:47,
                 from /opt/local/include/gcc13/c++/math.h:36,
                 from /opt/local/include/graphene-1.0/graphene-simd4f.h:34,
                 from /opt/local/include/graphene-1.0/graphene.h:37,
                 from /opt/local/include/gtk-4.0/gsk/gsktypes.h:24,
                 from /opt/local/include/gtk-4.0/gsk/gskrenderer.h:25,
                 from /opt/local/include/gtk-4.0/gsk/gsk.h:23,
                 from /opt/local/include/gtk-4.0/gtk/gtk.h:31,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_tsunami/tsunami/work/tsunami-0.7.114/src/command/../storage/../lib/hui/common.h:42,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_tsunami/tsunami/work/tsunami-0.7.114/src/command/../storage/../lib/hui/hui.h:15,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_tsunami/tsunami/work/tsunami-0.7.114/src/command/../storage/Storage.h:12,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_tsunami/tsunami/work/tsunami-0.7.114/src/command/Unsorted.cpp:13:
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_tsunami/tsunami/work/tsunami-0.7.114/src/command/../storage/../lib/hui/common.h:113:9: error: expected identifier before '(' token
  113 |         HUGE,
      |         ^~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_tsunami/tsunami/work/tsunami-0.7.114/src/command/../storage/../lib/hui/common.h:113:9: error: expected '}' before '(' token
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_tsunami/tsunami/work/tsunami-0.7.114/src/command/../storage/../lib/hui/common.h:109:15: note: to match this '{'
  109 | enum IconSize {
      |               ^
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_tsunami/tsunami/work/tsunami-0.7.114/src/command/../storage/../lib/hui/common.h:113:9: error: expected unqualified-id before 'float'
  113 |         HUGE,
      |         ^~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_tsunami/tsunami/work/tsunami-0.7.114/src/command/../storage/../lib/hui/common.h:113:9: error: expected ')' before 'float'
  113 |         HUGE,
      |         ^~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_tsunami/tsunami/work/tsunami-0.7.114/src/command/../storage/../lib/hui/common.h:113:9: error: expected ')' before 'float'
  113 |         HUGE,
      |         ^~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_tsunami/tsunami/work/tsunami-0.7.114/src/command/../storage/../lib/hui/common.h:118:1: error: expected declaration before '}' token
  118 | }
      | ^
In file included from /opt/local/lib/gcc13/gcc/powerpc-apple-darwin10/13.2.0/include-fixed/math.h:35,
                 from /opt/local/include/gcc13/c++/cmath:47,
                 from /opt/local/include/gcc13/c++/math.h:36,
                 from /opt/local/include/graphene-1.0/graphene-simd4f.h:34,
                 from /opt/local/include/graphene-1.0/graphene.h:37,
                 from /opt/local/include/gtk-4.0/gsk/gsktypes.h:24,
                 from /opt/local/include/gtk-4.0/gsk/gskrenderer.h:25,
                 from /opt/local/include/gtk-4.0/gsk/gsk.h:23,
                 from /opt/local/include/gtk-4.0/gtk/gtk.h:31,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_tsunami/tsunami/work/tsunami-0.7.114/src/command/song/../../storage/../lib/hui/common.h:42,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_tsunami/tsunami/work/tsunami-0.7.114/src/command/song/../../storage/../lib/hui/hui.h:15,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_tsunami/tsunami/work/tsunami-0.7.114/src/command/song/../../storage/Storage.h:12,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_tsunami/tsunami/work/tsunami-0.7.114/src/command/song/Export.cpp:12:
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_tsunami/tsunami/work/tsunami-0.7.114/src/command/song/../../storage/../lib/hui/common.h:113:9: error: expected identifier before '(' token
  113 |         HUGE,
      |         ^~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_tsunami/tsunami/work/tsunami-0.7.114/src/command/song/../../storage/../lib/hui/common.h:113:9: error: expected '}' before '(' token
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_tsunami/tsunami/work/tsunami-0.7.114/src/command/song/../../storage/../lib/hui/common.h:109:15: note: to match this '{'
  109 | enum IconSize {
      |               ^
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_tsunami/tsunami/work/tsunami-0.7.114/src/command/song/../../storage/../lib/hui/common.h:113:9: error: expected unqualified-id before 'float'
  113 |         HUGE,
      |         ^~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_tsunami/tsunami/work/tsunami-0.7.114/src/command/song/../../storage/../lib/hui/common.h:113:9: error: expected ')' before 'float'
  113 |         HUGE,
      |         ^~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_tsunami/tsunami/work/tsunami-0.7.114/src/command/song/../../storage/../lib/hui/common.h:113:9: error: expected ')' before 'float'
  113 |         HUGE,
      |         ^~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_tsunami/tsunami/work/tsunami-0.7.114/src/command/song/../../storage/../lib/hui/common.h:118:1: error: expected declaration before '}' token
  118 | }
      | ^
make[2]: *** [CMakeFiles/tsunami.dir/src/command/Unsorted.cpp.o] Error 1

gtk4 upgrade

Tsunami is using gtk as the user interface library (well, a thick wrapper called hui "heroic user interface") and I want to upgrade from gtk3 to gtk4.

Why?

  • don't want to depend on an old library
  • looks prettier
  • on Windows, we use vcpkg to manage libraries, which makes using old libraries a pain

What is still missing?
I've already worked through most of the upgrade. Had to change a lot, because they removed some older interfaces. The few remaining (important) things are:

  • drawing areas can't grab focus for keyboard input (arrow keys currently won't move the cursor)
  • keyboard shortcuts involving the ALT key don't work
  • svg icons on buttons don't apply the correct theme color (not crucial but ugly)

errors at starting

I'm on Manjaro Linux x86_64 (6.4.6-3-rt8-MANJARO) and compilation of tsunami went without errors and warnings. at starting there are errors:

----------------------------- Error! -----------------------------
failed opening file '/home/oliver/src/dsp/tsunami/build/static/hui_resources.txt'
------------------------------------------------------------------


----------------------------- Error! -----------------------------
HuiSetLanguage: language not found: English
------------------------------------------------------------------

Tsunami 0.7.114.0 "absolute 2er0"
  ...don't worry. Everything will be fine!
audio library selected: pulseaudio
midi library selected: alsa

----------------------------- Error! -----------------------------
hui resource not found: header-save-menu
------------------------------------------------------------------


----------------------------- Error! -----------------------------
CreateResourceMenu  (id=header-save-menu)  m(-_-)m
------------------------------------------------------------------

terminate called after throwing an instance of 'Exception'
Abgebrochen (Speicherabzug geschrieben)

any obvious way to fix? thank you!

Dev branch crashes on startup

Reading symbols from /opt/tsunami/bin/tsunami...
(gdb) run
Starting program: /opt/tsunami/bin/tsunami 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
terminate called after throwing an instance of 'FileError'

Program received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50	../sysdeps/unix/sysv/linux/raise.c: Нет такого файла или каталога.
(gdb) bt
#0  0x00007ffff67a83eb in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007ffff6787899 in __GI_abort () at abort.c:79
#2  0x00007ffff6b655f6 in  () at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3  0x00007ffff6b719ec in  () at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4  0x00007ffff6b71a47 in  () at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5  0x00007ffff6b71ca9 in  () at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6  0x00005555555a0bb2 in FileCreateText(string const&) (filename=...) at ../src/lib/file/../base/base.h:58
#7  0x000055555562cea4 in msg_init(string const&, bool) (force_filename=..., verbose=true) at ../src/lib/file/msg.cpp:63
#8  0x000055555562cea4 in msg_init(string const&, bool) (force_filename=..., verbose=verbose@entry=true) at ../src/lib/file/msg.cpp:53
#9  0x000055555564126c in hui::Application::Application(string const&, string const&, int) (this=<optimized out>, app_name=..., def_lang=..., flags=1)
    at ../src/lib/hui/../base/strings.h:82
#10 0x0000555555844c03 in Tsunami::Tsunami() (this=0x555555969630) at ../src/Tsunami.cpp:44
#11 0x000055555584791a in hui_main(Array<string> const&) (arg=...) at ../src/Tsunami.cpp:250
#12 0x00005555555d7158 in main(int, char**) (NumArgs=<optimized out>, Args=<optimized out>) at ../src/lib/hui/hui.cpp:127
(gdb) 

Setup Travis CI for build AppImage (portable binary package for Linux)

Lets setup Travis CI for auto-build AppImage (portable package for Linux) for each commit:

  1. Create ../blob/master/.travis.yml
  2. https://github.com/appimage/AppImageKit
    1.1. https://github.com/probonopd/linuxdeployqt
    1.2 https://github.com/linuxdeploy
  3. https://github.com/probonopd/uploadtool
  4. Enable Travis CI pushing to GitHub releases for this repo.

For example, take a look on LeoCAD .travis.yml implementation:

And here is how resulted builds would look like:

For any support:

[gtk3] crash when closing windows

Program crashes when closing any dialog with the [Esc] key.

Only the legacy version, built with gtk3 is affected, not the default gtk4 version!

Some absolute path are hardcoded

Some absolute pathes are hardcoded in some code. So, if you set and installation path via --prefix the program doesn't work:

  • I found some /usr/local in the static/michisoft-tsunami.desktop
  • I found some /usr/local/share in src/lib/hui/Application.cpp

Build failure on aarch64

The build on F37 / 36 went fine for x86_64 but fail for aarch64 on F37:

[ 25%] Building CXX object CMakeFiles/tsunami.dir/src/lib/base/pointer.cpp.o
/usr/bin/g++ -DHAS_LIB_ALSA=1 -DHAS_LIB_DL=1 -DHAS_LIB_FFTW3=1 -DHAS_LIB_FLAC=1 -DHAS_LIB_GL=1 -DHAS_LIB_GTK4=1 -DHAS_LIB_OGG=1 -DHAS_LIB_PORTAUDIO=1 -DHAS_LIB_PULSEAUDIO=1 -DHAS_LIB_UNWIND=1 -DHAS_LIB_ZLIB=1 -DINSTALL_PREFIX=\"/usr\" -D_REENTRANT -I/usr/include/gtk-4.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/sysprof-4 -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/libxml2 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/graphene-1.0 -I/usr/lib64/graphene-1.0/include -I/usr/include/gio-unix-2.0 -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-protection -g   -pthread -pthread -std=gnu++17 -MD -MT CMakeFiles/tsunami.dir/src/lib/base/pointer.cpp.o -MF CMakeFiles/tsunami.dir/src/lib/base/pointer.cpp.o.d -o CMakeFiles/tsunami.dir/src/lib/base/pointer.cpp.o -c /builddir/build/BUILD/tsunami-57999be98a2bc707bb8db83914f20215afee185e/src/lib/base/pointer.cpp
/builddir/build/BUILD/tsunami-57999be98a2bc707bb8db83914f20215afee185e/src/lib/base/array.cpp: In member function 'int DynamicArray::simple_index(const void*) const':
/builddir/build/BUILD/tsunami-57999be98a2bc707bb8db83914f20215afee185e/src/lib/base/array.cpp:232:17: error: cast from 'const void*' to 'int_p' {aka 'int'} loses precision [-fpermissive]
  232 |         return ((int_p)p - (int_p)data) / element_size;
      |                 ^~~~~~~~
/builddir/build/BUILD/tsunami-57999be98a2bc707bb8db83914f20215afee185e/src/lib/base/array.cpp:232:28: error: cast from 'void*' to 'int_p' {aka 'int'} loses precision [-fpermissive]
  232 |         return ((int_p)p - (int_p)data) / element_size;
      |                            ^~~~~~~~~~~

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.