├── resources ├── resource.h ├── resource.rc └── Mixijo.ico ├── .gitattributes ├── libs └── CMakeLists.txt ├── source ├── EntryPoint.cpp ├── Gui │ ├── RouteButton.cpp │ ├── Mixer.cpp │ ├── Frame.cpp │ └── Channel.cpp ├── Processing │ ├── Channel.cpp │ └── Processor.cpp └── Controller.cpp ├── .gitmodules ├── include ├── pch.hpp ├── Gui │ ├── Mixer.hpp │ ├── RouteButton.hpp │ ├── Frame.hpp │ └── Channel.hpp ├── Processing │ ├── Processor.hpp │ └── Channel.hpp ├── Controller.hpp └── Utils.hpp ├── .gitignore ├── CMakeLists.txt ├── LICENCE.txt └── README.md /resources/resource.h: -------------------------------------------------------------------------------- 1 | #define IDI_ICON1 101 2 | -------------------------------------------------------------------------------- /resources/resource.rc: -------------------------------------------------------------------------------- 1 | #include "resource.h" 2 | 3 | IDI_ICON1 ICON "Mixijo.ico" -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /resources/Mixijo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KaixoCode/Mixijo/HEAD/resources/Mixijo.ico -------------------------------------------------------------------------------- /libs/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | add_subdirectory(Audijo) 3 | add_subdirectory(Midijo) 4 | add_subdirectory(Guijo) 5 | -------------------------------------------------------------------------------- /source/EntryPoint.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.hpp" 2 | #include "Controller.hpp" 3 | 4 | int main() { 5 | Mixijo::Controller::start(); 6 | } -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "libs/Guijo"] 2 | path = libs/Guijo 3 | url = https://github.com/KaixoCode/Guijo.git 4 | [submodule "libs/Audijo"] 5 | path = libs/Audijo 6 | url = https://github.com/KaixoCode/Audijo.git 7 | [submodule "libs/Midijo"] 8 | path = libs/Midijo 9 | url = https://github.com/KaixoCode/Midijo.git 10 | -------------------------------------------------------------------------------- /include/pch.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Guijo/Guijo.hpp" 4 | #include "Midijo/Midijo.hpp" 5 | #include "Audijo/Audijo.hpp" 6 | 7 | using namespace Midijo; 8 | using namespace Guijo; 9 | using namespace Audijo; 10 | 11 | #define db2lin(db) std::powf(10.0f, 0.05 * (db)) 12 | #define lin2db(lin) (20.0f * std::log10(std::max((double)(lin), 0.000000000001))) 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Prerequisites 2 | *.d 3 | 4 | # Compiled Object files 5 | *.slo 6 | *.lo 7 | *.o 8 | *.obj 9 | 10 | # Precompiled Headers 11 | *.gch 12 | *.pch 13 | 14 | # Compiled Dynamic libraries 15 | *.so 16 | *.dylib 17 | *.dll 18 | 19 | # Fortran module files 20 | *.mod 21 | *.smod 22 | 23 | # Compiled Static libraries 24 | *.lai 25 | *.la 26 | *.a 27 | *.lib 28 | 29 | # Executables 30 | *.exe 31 | *.out 32 | *.app 33 | bin/ -------------------------------------------------------------------------------- /include/Gui/Mixer.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.hpp" 3 | #include "Gui/Channel.hpp" 4 | 5 | namespace Mixijo::Gui { 6 | 7 | struct Mixer : Object { 8 | Mixer(); 9 | 10 | StateLinked> background; 11 | StateLinked> divider; 12 | float dividerX = 0; 13 | 14 | void mouseClick(const MousePress& e); 15 | 16 | void draw(DrawContext& p) const override; 17 | void update() override; 18 | 19 | void updateTheme(); 20 | }; 21 | } -------------------------------------------------------------------------------- /include/Gui/RouteButton.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.hpp" 3 | 4 | namespace Mixijo::Gui { 5 | struct RouteButton : Object { 6 | StateLinked> background{}; 7 | StateLinked> border{}; 8 | StateLinked> borderWidth{}; 9 | std::function callback; 10 | 11 | RouteButton(); 12 | 13 | void mousePress(const MousePress& e); 14 | void draw(DrawContext& p) const override; 15 | 16 | void updateTheme(); 17 | }; 18 | } -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required (VERSION 3.0) 2 | project (Mixijo) 3 | 4 | set (CMAKE_CXX_STANDARD 23) 5 | 6 | add_subdirectory(libs) 7 | 8 | set(SRC "${Mixijo_SOURCE_DIR}/") 9 | 10 | file(GLOB_RECURSE SOURCE 11 | "${SRC}source/*.cpp" 12 | "${SRC}include/*.hpp" 13 | "${SRC}resources/*.h" 14 | "${SRC}resources/*.rc" 15 | ) 16 | 17 | add_executable(Mixijo 18 | ${SOURCE} 19 | ) 20 | 21 | target_include_directories(Mixijo PUBLIC 22 | libs/Guijo/include 23 | libs/Guijo/libs 24 | libs/Midijo/include 25 | libs/Audijo/include 26 | ${SRC}include 27 | ${SRC}resources 28 | ) 29 | 30 | source_group(TREE ${SRC} FILES ${SOURCE}) 31 | 32 | target_precompile_headers(Mixijo PUBLIC 33 | "${SRC}include/pch.hpp" 34 | ) 35 | 36 | target_link_libraries(Mixijo 37 | Guijo 38 | Midijo 39 | Audijo 40 | ) -------------------------------------------------------------------------------- /LICENCE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2022 Kaixo 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /include/Gui/Frame.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.hpp" 3 | 4 | namespace Mixijo { 5 | struct Frame : Window { 6 | StateLinked> border; 7 | StateLinked> title; 8 | 9 | struct Button : Object { 10 | StateLinked> background; 11 | StateLinked> icon; 12 | std::function callback; 13 | int type = 0; 14 | 15 | Button(int type); 16 | 17 | void mouseRelease(const MouseRelease& e); 18 | void draw(DrawContext& p) const override; 19 | }; 20 | 21 | Pointer