Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,6 @@ m4/lt~obsolete.m4
_sync.bat
_sync.sh
to_sync/
.DS_Store
src/projectM-sdl/build/
src/libprojectM/build/
3 changes: 3 additions & 0 deletions mac/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#define projectm_mac 1


9 changes: 8 additions & 1 deletion src/libprojectM/libprojectM.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -671,7 +671,7 @@
161789B8207A675B00D3B0C8 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0920;
LastUpgradeCheck = 1130;
ORGANIZATIONNAME = MVSTG;
TargetAttributes = {
1612C9A3207A855D00862A3A = {
Expand All @@ -698,6 +698,7 @@
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 161789B7207A675B00D3B0C8;
productRefGroup = 161789C1207A675B00D3B0C8 /* Products */;
Expand Down Expand Up @@ -884,13 +885,15 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
Expand Down Expand Up @@ -921,6 +924,7 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = (
"$(SRCROOT)/../../mac",
"$(SRCROOT)/../..",
"$(SRCROOT)/Renderer",
"$(SRCROOT)/",
Expand Down Expand Up @@ -948,13 +952,15 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
Expand Down Expand Up @@ -982,6 +988,7 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = (
"$(SRCROOT)/../../mac",
"$(SRCROOT)/../..",
"$(SRCROOT)/Renderer",
"$(SRCROOT)/",
Expand Down
44 changes: 29 additions & 15 deletions src/projectM-sdl/SDLprojectM.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
168F7156211248E4001806E7 /* SDLprojectM in Executable */ = {isa = PBXBuildFile; fileRef = C34521441BF02294001707D2 /* SDLprojectM */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
168F715921124C0E001806E7 /* config.inp in Support files */ = {isa = PBXBuildFile; fileRef = 16B52AAA21105A6900830F34 /* config.inp */; };
168F715A21124C14001806E7 /* fonts in Support files */ = {isa = PBXBuildFile; fileRef = C3D30B8F1BF02BE5009AAACD /* fonts */; };
168F715C21124CDF001806E7 /* SDL2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 166853F02105E2850042793A /* SDL2.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
168F718021126256001806E7 /* AppIcon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 168F717F21126256001806E7 /* AppIcon.icns */; };
C345215C1BF025A9001707D2 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C345215B1BF025A9001707D2 /* OpenGL.framework */; };
C345215E1BF025CF001707D2 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C345215D1BF025CF001707D2 /* CoreFoundation.framework */; };
Expand Down Expand Up @@ -121,7 +120,6 @@
dstPath = "";
dstSubfolderSpec = 10;
files = (
168F715C21124CDF001806E7 /* SDL2.framework in Frameworks */,
);
name = Frameworks;
runOnlyForDeploymentPostprocessing = 0;
Expand All @@ -140,8 +138,6 @@

/* Begin PBXFileReference section */
1612C98C207A807000862A3A /* libprojectM.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = libprojectM.xcodeproj; path = ../libprojectM/libprojectM.xcodeproj; sourceTree = "<group>"; };
166853F02105E2850042793A /* SDL2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL2.framework; path = ../../../../../../Library/Frameworks/SDL2.framework; sourceTree = "<group>"; };
166853F22105E2CF0042793A /* SDL2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = SDL2.framework; sourceTree = "<group>"; };
168F714921120210001806E7 /* projectM SDL.app */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "projectM SDL.app"; sourceTree = BUILT_PRODUCTS_DIR; };
168F714B21120211001806E7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
168F717F21126256001806E7 /* AppIcon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = AppIcon.icns; sourceTree = "<group>"; };
Expand Down Expand Up @@ -190,7 +186,6 @@
161070CE1F7041B0001905AB /* Frameworks */ = {
isa = PBXGroup;
children = (
166853F22105E2CF0042793A /* SDL2.framework */,
C345215D1BF025CF001707D2 /* CoreFoundation.framework */,
C345215B1BF025A9001707D2 /* OpenGL.framework */,
);
Expand Down Expand Up @@ -242,7 +237,6 @@
C345214E1BF022A5001707D2 /* projectM_SDL_main.cpp */,
16B52AAA21105A6900830F34 /* config.inp */,
16B52AA8211054E900830F34 /* projectMSDL-pkg.plist */,
166853F02105E2850042793A /* SDL2.framework */,
1612C98C207A807000862A3A /* libprojectM.xcodeproj */,
C307DFD31D565B57002F6B9E /* presets */,
16A42128207802AF006F30CE /* Dependencies */,
Expand Down Expand Up @@ -316,7 +310,7 @@
C345213C1BF02293001707D2 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0920;
LastUpgradeCheck = 1130;
ORGANIZATIONNAME = int80;
TargetAttributes = {
168F714821120210001806E7 = {
Expand All @@ -331,11 +325,11 @@
};
buildConfigurationList = C345213F1BF02293001707D2 /* Build configuration list for PBXProject "SDLprojectM" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
English,
en,
Base,
);
mainGroup = C345213B1BF02293001707D2;
productRefGroup = C34521451BF02294001707D2 /* Products */;
Expand Down Expand Up @@ -535,6 +529,7 @@
C34521491BF02294001707D2 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
Expand All @@ -543,12 +538,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
Expand Down Expand Up @@ -592,6 +589,7 @@
C345214A1BF02294001707D2 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
Expand All @@ -600,12 +598,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
Expand Down Expand Up @@ -646,15 +646,22 @@
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = "";
GCC_LINK_WITH_DYNAMIC_LIBRARIES = YES;
HEADER_SEARCH_PATHS = (
"$(SRCROOT)/../libprojectM",
/usr/local/include,
"$(SRCROOT)/../../mac",
);
INFOPLIST_FILE = "$(SRCROOT)/projectM-SDL/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "@executable_path/ @loader_path/../Frameworks/ @loader_path/Frameworks/";
OTHER_LDFLAGS = (
"-framework",
SDL2,
LIBRARY_SEARCH_PATHS = (
"$(SRCROOT)/../projectM-iTunes/macos/contrib",
/usr/local/lib,
);
OTHER_LDFLAGS = "-lSDL2";
PRODUCT_BUNDLE_IDENTIFIER = net.projectm.sdl;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SYMROOT = "$(SRCROOT)/build";
};
name = Debug;
};
Expand All @@ -665,15 +672,22 @@
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = "";
GCC_LINK_WITH_DYNAMIC_LIBRARIES = YES;
HEADER_SEARCH_PATHS = (
"$(SRCROOT)/../libprojectM",
/usr/local/include,
"$(SRCROOT)/../../mac",
);
INFOPLIST_FILE = "$(SRCROOT)/projectM-SDL/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "@executable_path/ @loader_path/../Frameworks/ @loader_path/Frameworks/";
OTHER_LDFLAGS = (
"-framework",
SDL2,
LIBRARY_SEARCH_PATHS = (
"$(SRCROOT)/../projectM-iTunes/macos/contrib",
/usr/local/lib,
);
OTHER_LDFLAGS = "-lSDL2";
PRODUCT_BUNDLE_IDENTIFIER = net.projectm.sdl;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SYMROOT = "$(SRCROOT)/build";
};
name = Release;
};
Expand Down
86 changes: 59 additions & 27 deletions src/projectM-sdl/pmSDL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,30 +75,18 @@ SDL_AudioDeviceID projectMSDL::selectAudioInput(int _count) {
return 0;
}

int projectMSDL::openAudioInput() {
// get audio driver name (static)
const char* driver_name = SDL_GetCurrentAudioDriver();
SDL_Log("Using audio driver: %s\n", driver_name);

// get audio input device
unsigned int i, count2 = SDL_GetNumAudioDevices(true); // capture, please
if (count2 == 0) {
SDL_LogCritical(SDL_LOG_CATEGORY_APPLICATION, "No audio capture devices found");
SDL_Quit();
}
for (i = 0; i < count2; i++) {
SDL_Log("Found audio capture device %d: %s", i, SDL_GetAudioDeviceName(i, true));
}
int projectMSDL::toggleAudioInput() {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sweet! 👍


CurAudioDevice++;
if (CurAudioDevice >= NumAudioDevices)
CurAudioDevice = 0;
selectedAudioDevice = CurAudioDevice;
initAudioInput();
return 1;
}

SDL_AudioDeviceID selectedAudioDevice = 0; // device to open
if (count2 > 1) {
// need to choose which input device to use
selectedAudioDevice = selectAudioInput(count2);
if (selectedAudioDevice > count2) {
SDL_LogCritical(SDL_LOG_CATEGORY_APPLICATION, "No audio input device specified.");
SDL_Quit();
}
}
int projectMSDL::initAudioInput() {


// params for audio input
SDL_AudioSpec want, have;
Expand Down Expand Up @@ -128,6 +116,41 @@ int projectMSDL::openAudioInput() {
audioSampleCount = have.samples;
audioFormat = have.format;
audioInputDevice = audioDeviceID;

return 1;
}

int projectMSDL::openAudioInput() {
// get audio driver name (static)
const char* driver_name = SDL_GetCurrentAudioDriver();
SDL_Log("Using audio driver: %s\n", driver_name);

// get audio input device
unsigned int i;
NumAudioDevices = SDL_GetNumAudioDevices(true); // capture, please

CurAudioDevice = 0;
if (NumAudioDevices == 0) {
SDL_LogCritical(SDL_LOG_CATEGORY_APPLICATION, "No audio capture devices found");
SDL_Quit();
}
for (i = 0; i < NumAudioDevices; i++) {
SDL_Log("Found audio capture device %d: %s", i, SDL_GetAudioDeviceName(i, true));
}

// device to open
selectedAudioDevice = 0;
if (NumAudioDevices > 1) {
// need to choose which input device to use
selectedAudioDevice = selectAudioInput(CurAudioDevice);
if (selectedAudioDevice > NumAudioDevices) {
SDL_LogCritical(SDL_LOG_CATEGORY_APPLICATION, "No audio input device specified.");
SDL_Quit();
}
}

initAudioInput();

return 1;
}

Expand Down Expand Up @@ -267,6 +290,13 @@ void projectMSDL::keyHandler(SDL_Event *sdl_evt) {
return;
}
break;
case SDLK_i:
if (sdl_mod & KMOD_LGUI || sdl_mod & KMOD_RGUI || sdl_mod & KMOD_LCTRL)
{
toggleAudioInput();
return; // handled
}
break;
case SDLK_s:
if (sdl_mod & KMOD_LGUI || sdl_mod & KMOD_RGUI || sdl_mod & KMOD_LCTRL)
{
Expand Down Expand Up @@ -402,12 +432,14 @@ void projectMSDL::pollEvent() {
{
switch (evt.type) {
case SDL_WINDOWEVENT:
int h, w;
SDL_GL_GetDrawableSize(win,&w,&h);
switch (evt.window.event) {
case SDL_WINDOWEVENT_RESIZED:
resize(evt.window.data1, evt.window.data2);
case SDL_WINDOWEVENT_RESIZED:
resize(w, h);
break;
case SDL_WINDOWEVENT_SIZE_CHANGED:
resize(evt.window.data1, evt.window.data2);
case SDL_WINDOWEVENT_SIZE_CHANGED:
resize(w, h);
break;
}
break;
Expand Down
6 changes: 5 additions & 1 deletion src/projectM-sdl/pmSDL.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,11 +88,12 @@ class projectMSDL : public projectM {


bool done;

projectMSDL(Settings settings, int flags);
projectMSDL(std::string config_file, int flags);
void init(SDL_Window *window, SDL_GLContext *glCtx, const bool renderToTexture = false);
int openAudioInput();
int toggleAudioInput();
int initAudioInput();
void beginAudioCapture();
void endAudioCapture();
void stretchMonitors();
Expand Down Expand Up @@ -120,11 +121,14 @@ class projectMSDL : public projectM {
GLuint textureID = 0;

// audio input device characteristics
unsigned int NumAudioDevices;
unsigned int CurAudioDevice;
unsigned short audioChannelsCount;
unsigned short audioSampleRate;
unsigned short audioSampleCount;
SDL_AudioFormat audioFormat;
SDL_AudioDeviceID audioDeviceID;
SDL_AudioDeviceID selectedAudioDevice;

static void audioInputCallbackF32(void *userdata, unsigned char *stream, int len);
static void audioInputCallbackS16(void *userdata, unsigned char *stream, int len);
Expand Down
Loading