You can subscribe to this list here.
2010 |
Jan
|
Feb
|
Mar
|
Apr
(43) |
May
(14) |
Jun
(17) |
Jul
(19) |
Aug
|
Sep
|
Oct
|
Nov
(4) |
Dec
(19) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2011 |
Jan
(13) |
Feb
(15) |
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <mc...@us...> - 2010-04-12 00:09:48
|
Revision: 157 http://algorhythmics.svn.sourceforge.net/algorhythmics/?rev=157&view=rev Author: mchinen Date: 2010-04-12 00:09:41 +0000 (Mon, 12 Apr 2010) Log Message: ----------- adding hmph target and making address bar go to scroogle if no periods are in it Modified Paths: -------------- FuckingWebBrowser/FuckingWebBrowser.xcodeproj/project.pbxproj FuckingWebBrowser/FuckingWebView.m Modified: FuckingWebBrowser/FuckingWebBrowser.xcodeproj/project.pbxproj =================================================================== --- FuckingWebBrowser/FuckingWebBrowser.xcodeproj/project.pbxproj 2010-04-11 21:36:05 UTC (rev 156) +++ FuckingWebBrowser/FuckingWebBrowser.xcodeproj/project.pbxproj 2010-04-12 00:09:41 UTC (rev 157) @@ -114,6 +114,117 @@ 18F7841210DEDE430029C066 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18F7840E10DEDE430029C066 /* AudioUnit.framework */; }; 18F7841310DEDE430029C066 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18F7840F10DEDE430029C066 /* CoreAudio.framework */; }; 18F7841410DEDE430029C066 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18F7841010DEDE430029C066 /* CoreServices.framework */; }; + 84FA6A591171608C008353B5 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 29B97318FDCFA39411CA2CEA /* MainMenu.nib */; }; + 84FA6A5A1171608C008353B5 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; + 84FA6A5B1171608C008353B5 /* fwb.icns in Resources */ = {isa = PBXBuildFile; fileRef = 1857BB6A1114BBCF00F153F5 /* fwb.icns */; }; + 84FA6A5C1171608C008353B5 /* ahh.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FE21171204B0035337F /* ahh.raw */; }; + 84FA6A5D1171608C008353B5 /* bassdrum.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FE31171204B0035337F /* bassdrum.raw */; }; + 84FA6A5E1171608C008353B5 /* britestk.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FE41171204B0035337F /* britestk.raw */; }; + 84FA6A5F1171608C008353B5 /* cowbell1.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FE51171204B0035337F /* cowbell1.raw */; }; + 84FA6A601171608C008353B5 /* crashcym.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FE61171204B0035337F /* crashcym.raw */; }; + 84FA6A611171608C008353B5 /* dope.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FE71171204B0035337F /* dope.raw */; }; + 84FA6A621171608C008353B5 /* eee.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FE81171204B0035337F /* eee.raw */; }; + 84FA6A631171608C008353B5 /* fwavblnk.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FE91171204B0035337F /* fwavblnk.raw */; }; + 84FA6A641171608C008353B5 /* halfwave.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FEA1171204B0035337F /* halfwave.raw */; }; + 84FA6A651171608C008353B5 /* hihatcym.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FEB1171204C0035337F /* hihatcym.raw */; }; + 84FA6A661171608C008353B5 /* impuls10.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FEC1171204C0035337F /* impuls10.raw */; }; + 84FA6A671171608C008353B5 /* impuls20.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FED1171204C0035337F /* impuls20.raw */; }; + 84FA6A681171608C008353B5 /* impuls40.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FEE1171204C0035337F /* impuls40.raw */; }; + 84FA6A691171608C008353B5 /* mand1.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FF21171204C0035337F /* mand1.raw */; }; + 84FA6A6A1171608C008353B5 /* mand10.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FF31171204C0035337F /* mand10.raw */; }; + 84FA6A6B1171608C008353B5 /* mand11.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FF41171204C0035337F /* mand11.raw */; }; + 84FA6A6C1171608C008353B5 /* mand12.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FF51171204C0035337F /* mand12.raw */; }; + 84FA6A6D1171608C008353B5 /* mand2.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FF61171204C0035337F /* mand2.raw */; }; + 84FA6A6E1171608C008353B5 /* mand3.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FF71171204C0035337F /* mand3.raw */; }; + 84FA6A6F1171608C008353B5 /* mand4.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FF81171204C0035337F /* mand4.raw */; }; + 84FA6A701171608C008353B5 /* mand5.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FF91171204C0035337F /* mand5.raw */; }; + 84FA6A711171608C008353B5 /* mand6.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FFA1171204C0035337F /* mand6.raw */; }; + 84FA6A721171608C008353B5 /* mand7.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FFB1171204C0035337F /* mand7.raw */; }; + 84FA6A731171608C008353B5 /* mand8.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FFC1171204C0035337F /* mand8.raw */; }; + 84FA6A741171608C008353B5 /* mand9.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FFD1171204C0035337F /* mand9.raw */; }; + 84FA6A751171608C008353B5 /* mandpluk.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FFE1171204C0035337F /* mandpluk.raw */; }; + 84FA6A761171608C008353B5 /* marmstk1.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B43FFF1171204C0035337F /* marmstk1.raw */; }; + 84FA6A771171608C008353B5 /* ooo.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B440001171204C0035337F /* ooo.raw */; }; + 84FA6A781171608C008353B5 /* peksblnk.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B440011171204C0035337F /* peksblnk.raw */; }; + 84FA6A791171608C008353B5 /* ppksblnk.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B440021171204C0035337F /* ppksblnk.raw */; }; + 84FA6A7A1171608C008353B5 /* ridecymb.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B440031171204C0035337F /* ridecymb.raw */; }; + 84FA6A7B1171608C008353B5 /* silence.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B440041171204C0035337F /* silence.raw */; }; + 84FA6A7C1171608C008353B5 /* sineblnk.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B440061171204C0035337F /* sineblnk.raw */; }; + 84FA6A7D1171608C008353B5 /* sinewave.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B440071171204C0035337F /* sinewave.raw */; }; + 84FA6A7E1171608C008353B5 /* snardrum.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B440081171204C0035337F /* snardrum.raw */; }; + 84FA6A7F1171608C008353B5 /* snglpeak.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B440091171204C0035337F /* snglpeak.raw */; }; + 84FA6A801171608C008353B5 /* tambourn.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B4400A1171204C0035337F /* tambourn.raw */; }; + 84FA6A811171608C008353B5 /* tomhidrm.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B4400B1171204C0035337F /* tomhidrm.raw */; }; + 84FA6A821171608C008353B5 /* tomlowdr.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B4400C1171204C0035337F /* tomlowdr.raw */; }; + 84FA6A831171608C008353B5 /* tommiddr.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B4400D1171204C0035337F /* tommiddr.raw */; }; + 84FA6A841171608C008353B5 /* twopeaks.raw in Resources */ = {isa = PBXBuildFile; fileRef = 18B4400E1171204C0035337F /* twopeaks.raw */; }; + 84FA6A851171608C008353B5 /* SKINI.msg in Resources */ = {isa = PBXBuildFile; fileRef = 18B4401A1171204C0035337F /* SKINI.msg */; }; + 84FA6A871171608C008353B5 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; + 84FA6A881171608C008353B5 /* FuckingAudioIO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1894A92910DD8C19004E9202 /* FuckingAudioIO.cpp */; }; + 84FA6A891171608C008353B5 /* FuckingWebView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1894A96C10DD9565004E9202 /* FuckingWebView.m */; }; + 84FA6A8A1171608C008353B5 /* handyfuncs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1894A9E910DE857D004E9202 /* handyfuncs.cpp */; }; + 84FA6A8B1171608C008353B5 /* ADSR.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B43FBC117120490035337F /* ADSR.cpp */; }; + 84FA6A8C1171608C008353B5 /* BandedWG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B43FBE117120490035337F /* BandedWG.cpp */; }; + 84FA6A8D1171608C008353B5 /* BiQuad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B43FC0117120490035337F /* BiQuad.cpp */; }; + 84FA6A8E1171608C008353B5 /* Bowed.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B43FC2117120490035337F /* Bowed.cpp */; }; + 84FA6A8F1171608C008353B5 /* Delay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B43FC51171204A0035337F /* Delay.cpp */; }; + 84FA6A901171608C008353B5 /* DelayL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B43FC71171204A0035337F /* DelayL.cpp */; }; + 84FA6A911171608C008353B5 /* Envelope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B43FC91171204A0035337F /* Envelope.cpp */; }; + 84FA6A921171608C008353B5 /* FileLoop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B43FCB1171204A0035337F /* FileLoop.cpp */; }; + 84FA6A931171608C008353B5 /* FileRead.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B43FCD1171204A0035337F /* FileRead.cpp */; }; + 84FA6A941171608C008353B5 /* FileWvIn.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B43FCF1171204A0035337F /* FileWvIn.cpp */; }; + 84FA6A951171608C008353B5 /* FormSwep.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B43FD21171204B0035337F /* FormSwep.cpp */; }; + 84FA6A961171608C008353B5 /* Modulate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B43FD71171204B0035337F /* Modulate.cpp */; }; + 84FA6A971171608C008353B5 /* Noise.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B43FD91171204B0035337F /* Noise.cpp */; }; + 84FA6A981171608C008353B5 /* OnePole.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B43FDB1171204B0035337F /* OnePole.cpp */; }; + 84FA6A991171608C008353B5 /* OneZero.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B43FDD1171204B0035337F /* OneZero.cpp */; }; + 84FA6A9A1171608C008353B5 /* Phonemes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B43FDF1171204B0035337F /* Phonemes.cpp */; }; + 84FA6A9B1171608C008353B5 /* SaxHack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B440101171204C0035337F /* SaxHack.cpp */; }; + 84FA6A9C1171608C008353B5 /* Saxofony.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B440121171204C0035337F /* Saxofony.cpp */; }; + 84FA6A9D1171608C008353B5 /* Shakers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B440141171204C0035337F /* Shakers.cpp */; }; + 84FA6A9E1171608C008353B5 /* SineWave.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B440161171204C0035337F /* SineWave.cpp */; }; + 84FA6A9F1171608C008353B5 /* SingWave.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B440181171204C0035337F /* SingWave.cpp */; }; + 84FA6AA01171608C008353B5 /* Stk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B4401B1171204C0035337F /* Stk.cpp */; }; + 84FA6AA11171608C008353B5 /* VoiceHack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B4401D1171204C0035337F /* VoiceHack.cpp */; }; + 84FA6AA21171608C008353B5 /* VoicForm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B4401F1171204C0035337F /* VoicForm.cpp */; }; + 84FA6AA41171608C008353B5 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; + 84FA6AA51171608C008353B5 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1894A90810DD6C04004E9202 /* WebKit.framework */; }; + 84FA6AA61171608C008353B5 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18F7840D10DEDE430029C066 /* AudioToolbox.framework */; }; + 84FA6AA71171608C008353B5 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18F7840E10DEDE430029C066 /* AudioUnit.framework */; }; + 84FA6AA81171608C008353B5 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18F7840F10DEDE430029C066 /* CoreAudio.framework */; }; + 84FA6AA91171608C008353B5 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18F7841010DEDE430029C066 /* CoreServices.framework */; }; + 84FA6AAA1171608C008353B5 /* libportaudio.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 18B43ED911711E910035337F /* libportaudio.a */; }; + 84FA6AAC1171608C008353B5 /* ADSR.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B43FBD117120490035337F /* ADSR.h */; }; + 84FA6AAD1171608C008353B5 /* BandedWG.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B43FBF117120490035337F /* BandedWG.h */; }; + 84FA6AAE1171608C008353B5 /* BiQuad.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B43FC1117120490035337F /* BiQuad.h */; }; + 84FA6AAF1171608C008353B5 /* Bowed.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B43FC3117120490035337F /* Bowed.h */; }; + 84FA6AB01171608C008353B5 /* BowTable.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B43FC4117120490035337F /* BowTable.h */; }; + 84FA6AB11171608C008353B5 /* Delay.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B43FC61171204A0035337F /* Delay.h */; }; + 84FA6AB21171608C008353B5 /* DelayL.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B43FC81171204A0035337F /* DelayL.h */; }; + 84FA6AB31171608C008353B5 /* Envelope.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B43FCA1171204A0035337F /* Envelope.h */; }; + 84FA6AB41171608C008353B5 /* FileLoop.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B43FCC1171204A0035337F /* FileLoop.h */; }; + 84FA6AB51171608C008353B5 /* FileRead.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B43FCE1171204A0035337F /* FileRead.h */; }; + 84FA6AB61171608C008353B5 /* FileWvIn.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B43FD01171204A0035337F /* FileWvIn.h */; }; + 84FA6AB71171608C008353B5 /* Filter.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B43FD11171204A0035337F /* Filter.h */; }; + 84FA6AB81171608C008353B5 /* FormSwep.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B43FD31171204B0035337F /* FormSwep.h */; }; + 84FA6AB91171608C008353B5 /* Function.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B43FD41171204B0035337F /* Function.h */; }; + 84FA6ABA1171608C008353B5 /* Generator.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B43FD51171204B0035337F /* Generator.h */; }; + 84FA6ABB1171608C008353B5 /* Instrmnt.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B43FD61171204B0035337F /* Instrmnt.h */; }; + 84FA6ABC1171608C008353B5 /* Modulate.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B43FD81171204B0035337F /* Modulate.h */; }; + 84FA6ABD1171608C008353B5 /* Noise.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B43FDA1171204B0035337F /* Noise.h */; }; + 84FA6ABE1171608C008353B5 /* OnePole.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B43FDC1171204B0035337F /* OnePole.h */; }; + 84FA6ABF1171608C008353B5 /* OneZero.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B43FDE1171204B0035337F /* OneZero.h */; }; + 84FA6AC01171608C008353B5 /* Phonemes.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B43FE01171204B0035337F /* Phonemes.h */; }; + 84FA6AC11171608C008353B5 /* ReedTable.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B4400F1171204C0035337F /* ReedTable.h */; }; + 84FA6AC21171608C008353B5 /* SaxHack.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B440111171204C0035337F /* SaxHack.h */; }; + 84FA6AC31171608C008353B5 /* Saxofony.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B440131171204C0035337F /* Saxofony.h */; }; + 84FA6AC41171608C008353B5 /* Shakers.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B440151171204C0035337F /* Shakers.h */; }; + 84FA6AC51171608C008353B5 /* SineWave.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B440171171204C0035337F /* SineWave.h */; }; + 84FA6AC61171608C008353B5 /* SingWave.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B440191171204C0035337F /* SingWave.h */; }; + 84FA6AC71171608C008353B5 /* Stk.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B4401C1171204C0035337F /* Stk.h */; }; + 84FA6AC81171608C008353B5 /* VoiceHack.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B4401E1171204C0035337F /* VoiceHack.h */; }; + 84FA6AC91171608C008353B5 /* VoicForm.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B440201171204C0035337F /* VoicForm.h */; }; + 84FA6ACA1171608C008353B5 /* WvIn.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18B440211171204D0035337F /* WvIn.h */; }; 8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 29B97318FDCFA39411CA2CEA /* MainMenu.nib */; }; 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; @@ -161,6 +272,46 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 84FA6AAB1171608C008353B5 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 7; + files = ( + 84FA6AAC1171608C008353B5 /* ADSR.h in CopyFiles */, + 84FA6AAD1171608C008353B5 /* BandedWG.h in CopyFiles */, + 84FA6AAE1171608C008353B5 /* BiQuad.h in CopyFiles */, + 84FA6AAF1171608C008353B5 /* Bowed.h in CopyFiles */, + 84FA6AB01171608C008353B5 /* BowTable.h in CopyFiles */, + 84FA6AB11171608C008353B5 /* Delay.h in CopyFiles */, + 84FA6AB21171608C008353B5 /* DelayL.h in CopyFiles */, + 84FA6AB31171608C008353B5 /* Envelope.h in CopyFiles */, + 84FA6AB41171608C008353B5 /* FileLoop.h in CopyFiles */, + 84FA6AB51171608C008353B5 /* FileRead.h in CopyFiles */, + 84FA6AB61171608C008353B5 /* FileWvIn.h in CopyFiles */, + 84FA6AB71171608C008353B5 /* Filter.h in CopyFiles */, + 84FA6AB81171608C008353B5 /* FormSwep.h in CopyFiles */, + 84FA6AB91171608C008353B5 /* Function.h in CopyFiles */, + 84FA6ABA1171608C008353B5 /* Generator.h in CopyFiles */, + 84FA6ABB1171608C008353B5 /* Instrmnt.h in CopyFiles */, + 84FA6ABC1171608C008353B5 /* Modulate.h in CopyFiles */, + 84FA6ABD1171608C008353B5 /* Noise.h in CopyFiles */, + 84FA6ABE1171608C008353B5 /* OnePole.h in CopyFiles */, + 84FA6ABF1171608C008353B5 /* OneZero.h in CopyFiles */, + 84FA6AC01171608C008353B5 /* Phonemes.h in CopyFiles */, + 84FA6AC11171608C008353B5 /* ReedTable.h in CopyFiles */, + 84FA6AC21171608C008353B5 /* SaxHack.h in CopyFiles */, + 84FA6AC31171608C008353B5 /* Saxofony.h in CopyFiles */, + 84FA6AC41171608C008353B5 /* Shakers.h in CopyFiles */, + 84FA6AC51171608C008353B5 /* SineWave.h in CopyFiles */, + 84FA6AC61171608C008353B5 /* SingWave.h in CopyFiles */, + 84FA6AC71171608C008353B5 /* Stk.h in CopyFiles */, + 84FA6AC81171608C008353B5 /* VoiceHack.h in CopyFiles */, + 84FA6AC91171608C008353B5 /* VoicForm.h in CopyFiles */, + 84FA6ACA1171608C008353B5 /* WvIn.h in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ @@ -283,11 +434,27 @@ 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; }; 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; }; 32CA4F630368D1EE00C91783 /* FuckingWebBrowser_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FuckingWebBrowser_Prefix.pch; sourceTree = "<group>"; }; + 84FA6ACE1171608C008353B5 /* hmph?browser.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "hmph?browser.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 84FA6AD01171608C008353B5 /* Info copy.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info copy.plist"; sourceTree = "<group>"; }; 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; }; 8D1107320486CEB800E47090 /* FuckingWebBrowser.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FuckingWebBrowser.app; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 84FA6AA31171608C008353B5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 84FA6AA41171608C008353B5 /* Cocoa.framework in Frameworks */, + 84FA6AA51171608C008353B5 /* WebKit.framework in Frameworks */, + 84FA6AA61171608C008353B5 /* AudioToolbox.framework in Frameworks */, + 84FA6AA71171608C008353B5 /* AudioUnit.framework in Frameworks */, + 84FA6AA81171608C008353B5 /* CoreAudio.framework in Frameworks */, + 84FA6AA91171608C008353B5 /* CoreServices.framework in Frameworks */, + 84FA6AAA1171608C008353B5 /* libportaudio.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8D11072E0486CEB800E47090 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -459,6 +626,7 @@ isa = PBXGroup; children = ( 8D1107320486CEB800E47090 /* FuckingWebBrowser.app */, + 84FA6ACE1171608C008353B5 /* hmph?browser.app */, ); name = Products; sourceTree = "<group>"; @@ -500,6 +668,7 @@ 8D1107310486CEB800E47090 /* Info.plist */, 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, 29B97318FDCFA39411CA2CEA /* MainMenu.nib */, + 84FA6AD01171608C008353B5 /* Info copy.plist */, ); name = Resources; sourceTree = "<group>"; @@ -516,6 +685,25 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 84FA6A571171608C008353B5 /* hmph?browser */ = { + isa = PBXNativeTarget; + buildConfigurationList = 84FA6ACB1171608C008353B5 /* Build configuration list for PBXNativeTarget "hmph?browser" */; + buildPhases = ( + 84FA6A581171608C008353B5 /* Resources */, + 84FA6A861171608C008353B5 /* Sources */, + 84FA6AA31171608C008353B5 /* Frameworks */, + 84FA6AAB1171608C008353B5 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "hmph?browser"; + productInstallPath = "$(HOME)/Applications"; + productName = FuckingWebBrowser; + productReference = 84FA6ACE1171608C008353B5 /* hmph?browser.app */; + productType = "com.apple.product-type.application"; + }; 8D1107260486CEB800E47090 /* FuckingWebBrowser */ = { isa = PBXNativeTarget; buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "FuckingWebBrowser" */; @@ -541,16 +729,71 @@ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "FuckingWebBrowser" */; + compatibilityVersion = "Xcode 2.4"; hasScannedForEncodings = 1; mainGroup = 29B97314FDCFA39411CA2CEA /* FuckingWebBrowser */; projectDirPath = ""; + projectRoot = ""; targets = ( 8D1107260486CEB800E47090 /* FuckingWebBrowser */, + 84FA6A571171608C008353B5 /* hmph?browser */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 84FA6A581171608C008353B5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 84FA6A591171608C008353B5 /* MainMenu.nib in Resources */, + 84FA6A5A1171608C008353B5 /* InfoPlist.strings in Resources */, + 84FA6A5B1171608C008353B5 /* fwb.icns in Resources */, + 84FA6A5C1171608C008353B5 /* ahh.raw in Resources */, + 84FA6A5D1171608C008353B5 /* bassdrum.raw in Resources */, + 84FA6A5E1171608C008353B5 /* britestk.raw in Resources */, + 84FA6A5F1171608C008353B5 /* cowbell1.raw in Resources */, + 84FA6A601171608C008353B5 /* crashcym.raw in Resources */, + 84FA6A611171608C008353B5 /* dope.raw in Resources */, + 84FA6A621171608C008353B5 /* eee.raw in Resources */, + 84FA6A631171608C008353B5 /* fwavblnk.raw in Resources */, + 84FA6A641171608C008353B5 /* halfwave.raw in Resources */, + 84FA6A651171608C008353B5 /* hihatcym.raw in Resources */, + 84FA6A661171608C008353B5 /* impuls10.raw in Resources */, + 84FA6A671171608C008353B5 /* impuls20.raw in Resources */, + 84FA6A681171608C008353B5 /* impuls40.raw in Resources */, + 84FA6A691171608C008353B5 /* mand1.raw in Resources */, + 84FA6A6A1171608C008353B5 /* mand10.raw in Resources */, + 84FA6A6B1171608C008353B5 /* mand11.raw in Resources */, + 84FA6A6C1171608C008353B5 /* mand12.raw in Resources */, + 84FA6A6D1171608C008353B5 /* mand2.raw in Resources */, + 84FA6A6E1171608C008353B5 /* mand3.raw in Resources */, + 84FA6A6F1171608C008353B5 /* mand4.raw in Resources */, + 84FA6A701171608C008353B5 /* mand5.raw in Resources */, + 84FA6A711171608C008353B5 /* mand6.raw in Resources */, + 84FA6A721171608C008353B5 /* mand7.raw in Resources */, + 84FA6A731171608C008353B5 /* mand8.raw in Resources */, + 84FA6A741171608C008353B5 /* mand9.raw in Resources */, + 84FA6A751171608C008353B5 /* mandpluk.raw in Resources */, + 84FA6A761171608C008353B5 /* marmstk1.raw in Resources */, + 84FA6A771171608C008353B5 /* ooo.raw in Resources */, + 84FA6A781171608C008353B5 /* peksblnk.raw in Resources */, + 84FA6A791171608C008353B5 /* ppksblnk.raw in Resources */, + 84FA6A7A1171608C008353B5 /* ridecymb.raw in Resources */, + 84FA6A7B1171608C008353B5 /* silence.raw in Resources */, + 84FA6A7C1171608C008353B5 /* sineblnk.raw in Resources */, + 84FA6A7D1171608C008353B5 /* sinewave.raw in Resources */, + 84FA6A7E1171608C008353B5 /* snardrum.raw in Resources */, + 84FA6A7F1171608C008353B5 /* snglpeak.raw in Resources */, + 84FA6A801171608C008353B5 /* tambourn.raw in Resources */, + 84FA6A811171608C008353B5 /* tomhidrm.raw in Resources */, + 84FA6A821171608C008353B5 /* tomlowdr.raw in Resources */, + 84FA6A831171608C008353B5 /* tommiddr.raw in Resources */, + 84FA6A841171608C008353B5 /* twopeaks.raw in Resources */, + 84FA6A851171608C008353B5 /* SKINI.msg in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8D1107290486CEB800E47090 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -606,6 +849,41 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 84FA6A861171608C008353B5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 84FA6A871171608C008353B5 /* main.m in Sources */, + 84FA6A881171608C008353B5 /* FuckingAudioIO.cpp in Sources */, + 84FA6A891171608C008353B5 /* FuckingWebView.m in Sources */, + 84FA6A8A1171608C008353B5 /* handyfuncs.cpp in Sources */, + 84FA6A8B1171608C008353B5 /* ADSR.cpp in Sources */, + 84FA6A8C1171608C008353B5 /* BandedWG.cpp in Sources */, + 84FA6A8D1171608C008353B5 /* BiQuad.cpp in Sources */, + 84FA6A8E1171608C008353B5 /* Bowed.cpp in Sources */, + 84FA6A8F1171608C008353B5 /* Delay.cpp in Sources */, + 84FA6A901171608C008353B5 /* DelayL.cpp in Sources */, + 84FA6A911171608C008353B5 /* Envelope.cpp in Sources */, + 84FA6A921171608C008353B5 /* FileLoop.cpp in Sources */, + 84FA6A931171608C008353B5 /* FileRead.cpp in Sources */, + 84FA6A941171608C008353B5 /* FileWvIn.cpp in Sources */, + 84FA6A951171608C008353B5 /* FormSwep.cpp in Sources */, + 84FA6A961171608C008353B5 /* Modulate.cpp in Sources */, + 84FA6A971171608C008353B5 /* Noise.cpp in Sources */, + 84FA6A981171608C008353B5 /* OnePole.cpp in Sources */, + 84FA6A991171608C008353B5 /* OneZero.cpp in Sources */, + 84FA6A9A1171608C008353B5 /* Phonemes.cpp in Sources */, + 84FA6A9B1171608C008353B5 /* SaxHack.cpp in Sources */, + 84FA6A9C1171608C008353B5 /* Saxofony.cpp in Sources */, + 84FA6A9D1171608C008353B5 /* Shakers.cpp in Sources */, + 84FA6A9E1171608C008353B5 /* SineWave.cpp in Sources */, + 84FA6A9F1171608C008353B5 /* SingWave.cpp in Sources */, + 84FA6AA01171608C008353B5 /* Stk.cpp in Sources */, + 84FA6AA11171608C008353B5 /* VoiceHack.cpp in Sources */, + 84FA6AA21171608C008353B5 /* VoicForm.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8D11072C0486CEB800E47090 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -663,6 +941,60 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ + 84FA6ACC1171608C008353B5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INFOPLIST_FILE = "/Users/admin/svncheckouts/algorhythmics/FuckingWebBrowser/Info copy.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", + ); + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\""; + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/portaudio/lib/.libs\""; + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3 = "\"$(SRCROOT)\""; + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4 = "\"$(SRCROOT)/../libs\""; + PRODUCT_NAME = "hmph?browser"; + WRAPPER_EXTENSION = app; + ZERO_LINK = YES; + }; + name = Debug; + }; + 84FA6ACD1171608C008353B5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + ppc, + i386, + ); + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + INFOPLIST_FILE = "/Users/admin/svncheckouts/algorhythmics/FuckingWebBrowser/Info copy.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", + ); + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\""; + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)\""; + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3 = "\"$(SRCROOT)\""; + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4 = "\"$(SRCROOT)/../libs\""; + PRODUCT_NAME = "hmph?browser"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; C01FCF4B08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -746,6 +1078,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 84FA6ACB1171608C008353B5 /* Build configuration list for PBXNativeTarget "hmph?browser" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 84FA6ACC1171608C008353B5 /* Debug */, + 84FA6ACD1171608C008353B5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "FuckingWebBrowser" */ = { isa = XCConfigurationList; buildConfigurations = ( Modified: FuckingWebBrowser/FuckingWebView.m =================================================================== --- FuckingWebBrowser/FuckingWebView.m 2010-04-11 21:36:05 UTC (rev 156) +++ FuckingWebBrowser/FuckingWebView.m 2010-04-12 00:09:41 UTC (rev 157) @@ -49,7 +49,19 @@ //if it doesn't contain :// append http:// if( [s rangeOfString:@"://" options:NSCaseInsensitiveSearch].location == NSNotFound) { - s = [NSString stringWithFormat:@"http://%@",s]; + //if they entered a period at some point it probably is a url, otherwise do a google search + //the exception is if they have a period and space it probably is a google search. + if( [s rangeOfString:@"." options:NSCaseInsensitiveSearch].location == NSNotFound || + [s rangeOfString:@" " options:NSCaseInsensitiveSearch].location != NSNotFound ) + { + //convert to http compatable string ( space -> %20 ) etc + s = [s stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; + s = [NSString stringWithFormat:@"https://ssl.scroogle.org/cgi-bin/nbbwssl.cgi?Gw=%@",s]; + } + else + { + s = [NSString stringWithFormat:@"http://%@",s]; + } [sender setStringValue:s]; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2010-04-11 21:36:11
|
Revision: 156 http://algorhythmics.svn.sourceforge.net/algorhythmics/?rev=156&view=rev Author: ahonda Date: 2010-04-11 21:36:05 +0000 (Sun, 11 Apr 2010) Log Message: ----------- Modified Paths: -------------- NoiseMP3/NoiseMP3.xcodeproj/project.pbxproj NoiseMP3/SongActivityList.h Modified: NoiseMP3/NoiseMP3.xcodeproj/project.pbxproj =================================================================== --- NoiseMP3/NoiseMP3.xcodeproj/project.pbxproj 2010-04-11 20:55:38 UTC (rev 155) +++ NoiseMP3/NoiseMP3.xcodeproj/project.pbxproj 2010-04-11 21:36:05 UTC (rev 156) @@ -434,6 +434,7 @@ C01FCF5008A954540054247B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + GCC_VERSION = 4.0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; PREBINDING = NO; Modified: NoiseMP3/SongActivityList.h =================================================================== --- NoiseMP3/SongActivityList.h 2010-04-11 20:55:38 UTC (rev 155) +++ NoiseMP3/SongActivityList.h 2010-04-11 21:36:05 UTC (rev 156) @@ -30,4 +30,5 @@ - (UserActivity*) getUserActivityAtIndex:(int)index; - (UserActivity*) getMostRecentUserActivity; - (int) getNumUserActivities; +- (UserActivity*) getUserActivityAtCursor:(float) cursor; @end This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2010-04-11 20:55:44
|
Revision: 155 http://algorhythmics.svn.sourceforge.net/algorhythmics/?rev=155&view=rev Author: ahonda Date: 2010-04-11 20:55:38 +0000 (Sun, 11 Apr 2010) Log Message: ----------- add synth definition from aki Added Paths: ----------- NoiseMP3/PulseSynth 2.cpp Added: NoiseMP3/PulseSynth 2.cpp =================================================================== --- NoiseMP3/PulseSynth 2.cpp (rev 0) +++ NoiseMP3/PulseSynth 2.cpp 2010-04-11 20:55:38 UTC (rev 155) @@ -0,0 +1,193 @@ +/* + * PulseSynth.cpp + * NoiseMP3 + * + * Created by apple on 3/16/10. + * Copyright 2010 __MyCompanyName__. All rights reserved. + * + */ + +#include "PulseSynth.h" +#import "PlayerModel.h" +#import "UserActivity.h" +#include "handyfuncs.h" + +#define SR 44100 +#define PI 3.1415926 +PulseSynth::PulseSynth(UserActivity* act) +:Synth(act) +{ + //set up the initial conditions so that it'll start processing right away. + pulseCursor = 1000000; + //for now hardcoded duration + pulseDuration = 0.10 * SR; + //pulseDuration = 0.12 * SR; + + FillCharBuffers([[m_act getName] cStringUsingEncoding:NSUTF8StringEncoding]); + +} + +bool PulseSynth::IsFinished() +{ + //if we've processed the last character an d the size is + return !charBuffer.size(); +} + +void PulseSynth::FillData(int framesPerBuffer, float** outBufs, float amp, PlayerModel* model, MP3Decoder* decoder) +{ + if(charBuffer.size()) + { + int outCursor =0; + int charFrames; + float outValue; + + //process characters until we run out of them or audio samples to output for this frame. + while(outCursor<framesPerBuffer && charBuffer.size()) + { + if(pulseCursor >= pulseDuration) + { + charBuffer.erase(charBuffer.begin()); + if(!charBuffer.size()) + break; + + InitNewChar(charBuffer[0]); + } + + charFrames = mymin(framesPerBuffer-outCursor, pulseDuration-pulseCursor); + + pulseCursor+=charFrames; + //this is a hack to offset the for conditional to work + charFrames+=outCursor; + for(;outCursor<charFrames;outCursor++) + { + outValue=ComputeSample() * amp * m_volume; + + ((float**)outBufs)[0][outCursor]+= outValue * (1.0-pan); + ((float**)outBufs)[1][outCursor]+= outValue * pan; + + + } + } + + } + + //int noisefactor; +// noisefactor = 1; +// +// float * noisearray = new float[framesPerBuffer*(1+noisefactor)]; +// int ch1start,ch2start; +// ch1start = randint(framesPerBuffer*noisefactor); +// ch2start = randint(framesPerBuffer*noisefactor); +// for(unsigned int i=0;i<framesPerBuffer;i++) +// { +// for( int z = 0; z < 2; z++ ) +// { +// if(noisearray[(z==0?ch1start:ch2start)+i] > 1.0) +// noisearray[(z==0?ch1start:ch2start)+i] =1.0/std::numeric_limits<float>::max(); +// else if(noisearray[(z==0?ch1start:ch2start)+i]<-1.0) +// noisearray[(z==0?ch1start:ch2start)+i] =-1.0/std::numeric_limits<float>::max(); +// +// ((float**)outBufs)[z][i]+=noisearray[(z==0?ch1start:ch2start)+i] * amp; +//// memcpy(((float*)outputBuffer)+framesPerBuffer*z,noisearray+randint(framesPerBuffer*(noisefactor)),framesPerBuffer*sizeof(float)); +// } +// } +// delete [] noisearray; +} + +void PulseSynth::FillCharBuffers(const char* string) +{ + charBuffer.empty(); + if(!string) return; + + //add a dummy char which is deleted by FillData right away + charBuffer.push_back(' '); + //set the cursor high so that it resets immedeately + pulseCursor=100000; + + int len = strlen(string); + for(int i=0;i<len;i++) + { + charBuffer.push_back(string[i]); + } +} + +void PulseSynth::InitNewChar(char ch) +{ + int rand = randint(3000)+10; + pulseCursor=0; + //freq = 0.02*ch; + freq = 50.7*ch; + freq2 = 820.3*ch; + //freq = rand*ch; + //freq = 5000*ch; + + pan = (ch*4192%100)/100.0; + phase = 0; +} + +float PulseSynth::ComputeSample() +{ + //we've got something, so lets go. +// SynthDef +// ("la", +// { |freq =100, wid = 0.3, delayTime = 0.05, atk = 0.01,rel = 0.1,amp= 0.2| +// var n1,osc0,sy0,src,env,local; +// local = DelayN.ar(LocalIn.ar(1),1,delayTime); +// env = EnvGen.ar(Env.perc(atk,rel), doneAction:2); +// sy0 = SinOsc.ar(Pulse.ar(freq*100,0.5)*120,0.5,amp); +// src = SinOsc.ar((freq*100),0,amp)+sy0; +// Out.ar(0,Pan2.ar(src,0)); +// LocalOut.ar(src); +// } +// ).memStore; + float env; +#define kPulseSynthAttack 0.01*SR +#define kPulseSynthRelease 0.1*SR +#define kPulseSynthEnd kPulseSynthAttack+kPulseSynthRelease + // env = pulseCursor<kPulseSynthAttack?((float)pulseCursor/kPulseSynthAttack): //attack-move from 0 to 1 + // pulseCursor<kPulseSynthEnd?(1.0 - ((float)(pulseCursor-kPulseSynthAttack))/kPulseSynthRelease): //release - 1.0 to 0 + // 0.0;//after the release is silence +#define kPulseWidth 0.3 + float pulse; + pulse = 1; + + unsigned int phase2; + + phase += freq*2.0*PI/SR; + phase2 += freq2*2.0*PI/SR; + while(phase > 2.0*PI) + phase-=2.0*PI; + phase2-=2.0*PI; + + float synth0,synth1,synth2; + + synth1 = ((sin(phase+sin(phase2)*2.0))*2.3); + synth2 = ((sin(phase+sin(phase)*2.0))*synth1); + + synth0 = synth1*synth2; + //return sin(phase); + + return synth0; + //FM + //return ((sin(phase+sin(phase2)*2.0))*2.3); + //return ((sin(phase+sin(phase2)*2.0))*2.3)+((sin(phase2+sin(phase)*3.0))*0.2); + //return (sin(phase2+sin(phase)*2.0))*sin(phase*2.3); + + //return sin(phase)*sin(phase*100.2)-cos(phase*0.5); + //return sin(phase)*cos(phase*100.2); + //return sin(phase)*cos(phase*789.2)*sin(phase*300.3); + //return sin(phase2); + //return sin(phase)*cos(phase*20000.2)*sin(phase*0.3); + +} + +//void PulseSynth::ComputeSample() +//{ +// phase += 1.0*freq*2.0*PI/SR; +// while(phase > 2.0*PI) +// phase-=2.0*PI; +// outValue = sin(phase); +// +//} +// + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mc...@us...> - 2010-04-11 20:42:11
|
Revision: 154 http://algorhythmics.svn.sourceforge.net/algorhythmics/?rev=154&view=rev Author: mchinen Date: 2010-04-11 20:42:05 +0000 (Sun, 11 Apr 2010) Log Message: ----------- adding sc sytle synths, sorting, and better drawing. Modified Paths: -------------- NoiseMP3/FuckingAudioIO.cpp NoiseMP3/FuckingAudioIO.h NoiseMP3/GUINoiseSynth.cpp NoiseMP3/GUINoiseSynth.h NoiseMP3/GranularSynth.cpp NoiseMP3/GranularSynth.h NoiseMP3/PlayerModel.h NoiseMP3/PlayerModel.mm NoiseMP3/PlayerView.h NoiseMP3/PlayerView.m NoiseMP3/PulseSynth.cpp NoiseMP3/PulseSynth.h NoiseMP3/SongActivityList.h NoiseMP3/SongActivityList.m NoiseMP3/Synth.cpp NoiseMP3/Synth.h Modified: NoiseMP3/FuckingAudioIO.cpp =================================================================== --- NoiseMP3/FuckingAudioIO.cpp 2010-04-11 16:45:42 UTC (rev 153) +++ NoiseMP3/FuckingAudioIO.cpp 2010-04-11 20:42:05 UTC (rev 154) @@ -63,11 +63,22 @@ pthread_mutex_unlock(priv->decoderLock); } - //stick the data back in. - pthread_mutex_lock(priv->decoderLock); - priv->decoder->ReplaceData((float**)outputBuffer, framesPerBuffer, priv->amp); - pthread_mutex_unlock(priv->decoderLock); + //make a second pass and delete synths that have finished. + for(int i=0;i<synths.size();i++) + { + if(synths[i]->IsFinished()) + { + delete synths[i]; + //erase and decrement the counter to reflect the delete + synths.erase(synths.begin()+i--); + } + } + //stick the data back in for feedback +// pthread_mutex_lock(priv->decoderLock); +// priv->decoder->ReplaceData((float**)outputBuffer, framesPerBuffer, priv->amp); +// pthread_mutex_unlock(priv->decoderLock); + // Clip output to [-1.0,+1.0] range for(unsigned int i = 0; i < framesPerBuffer; i++) { @@ -109,6 +120,11 @@ } +void FuckingAudioIO::AddSynth(Synth* synth) +{ + m_synths.push_back(synth); +} + bool FuckingAudioIO::Init() { PaError err; @@ -121,15 +137,6 @@ m_inited= err == paNoError ; - //setup synths. - m_synths.push_back(new GranularSynth); - m_synths.push_back(new GUINoiseSynth); - m_synths.push_back(new PulseSynth); - - ///volume setting - m_synths[0]->SetVolume(2.0); - m_synths[1]->SetVolume(2.0); - m_synths[2]->SetVolume(2.0); return m_inited; } bool FuckingAudioIO::Start() Modified: NoiseMP3/FuckingAudioIO.h =================================================================== --- NoiseMP3/FuckingAudioIO.h 2010-04-11 16:45:42 UTC (rev 153) +++ NoiseMP3/FuckingAudioIO.h 2010-04-11 20:42:05 UTC (rev 154) @@ -47,6 +47,8 @@ void SetMP3DecoderLock(pthread_mutex_t* mutex){m_priv.decoderLock = mutex;} void SetAmp(float a){m_priv.amp=a;} + //synths + void AddSynth(Synth* synth); std::vector<Synth*>& GetSynths(){return m_synths;} protected: Modified: NoiseMP3/GUINoiseSynth.cpp =================================================================== --- NoiseMP3/GUINoiseSynth.cpp 2010-04-11 16:45:42 UTC (rev 153) +++ NoiseMP3/GUINoiseSynth.cpp 2010-04-11 20:42:05 UTC (rev 154) @@ -14,30 +14,21 @@ #define kNoiseLifetime 44100*10 -GUINoiseSynth::GUINoiseSynth() +GUINoiseSynth::GUINoiseSynth(UserActivity* act) +:Synth(act) { - lifetime = 0; + //random lifetime with exponential dist so we have equal amount of 'short' and 'long' instead of mostly medium durs. + origlifetime = lifetime = randfloatexp2(1.0)*kNoiseLifetime +1; + } +bool GUINoiseSynth::IsFinished() +{ + return lifetime<= 0; +} void GUINoiseSynth::FillData(int framesPerBuffer, float** outBufs, float amp, PlayerModel* model, MP3Decoder* decoder) { - //first see if we have a new activity - UserActivity* act = [model mostRecentActivity]; - - if(act!=lastAct && act) - { - //releasing objects in a thread requires an explicit pool. - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - lastAct=act; - //random lifetime with exponential dist so we have equal amount of 'short' and 'long' instead of mostly medium durs. - origlifetime = lifetime = randfloatexp2(1.0)*kNoiseLifetime +1; - //the mostRecentActivity call retained it, so we need to release act - [act release]; - [pool release]; - - } - //fade out with time if(lifetime <= 0 || m_volume <= 0.0) { Modified: NoiseMP3/GUINoiseSynth.h =================================================================== --- NoiseMP3/GUINoiseSynth.h 2010-04-11 16:45:42 UTC (rev 153) +++ NoiseMP3/GUINoiseSynth.h 2010-04-11 20:42:05 UTC (rev 154) @@ -18,8 +18,10 @@ class GUINoiseSynth :public Synth { public: - GUINoiseSynth(); + GUINoiseSynth(UserActivity* act); virtual ~GUINoiseSynth(){} + + virtual bool IsFinished(); virtual void FillData(int framesPerBuffer, float** outBufs, float amp, PlayerModel* model, MP3Decoder* decoder); protected: UserActivity* lastAct; Modified: NoiseMP3/GranularSynth.cpp =================================================================== --- NoiseMP3/GranularSynth.cpp 2010-04-11 16:45:42 UTC (rev 153) +++ NoiseMP3/GranularSynth.cpp 2010-04-11 20:42:05 UTC (rev 154) @@ -14,10 +14,15 @@ #define SR 44100 #define PI 3.1415926 -GranularSynth::GranularSynth() + +#define kGranLifetime 44100*20 +GranularSynth::GranularSynth(UserActivity* act) +:Synth(act) { saveBuffer = NULL; - lastAct=NULL; + //random lifetime with exponential dist so we have equal amount of 'short' and 'long' instead of mostly medium durs. + origlifetime = lifetime = randfloatexp2(1.0)*kGranLifetime +1; + } GranularSynth::~GranularSynth() { @@ -28,33 +33,25 @@ delete [] saveBuffer; } } + +bool GranularSynth::IsFinished() +{ + return lifetime <= 0; +} void GranularSynth::FillData(int framesPerBuffer, float** outBufs, float amp, PlayerModel* model, MP3Decoder* decoder) { - //first see if we have - UserActivity* act = [model mostRecentActivity]; - if(act!=lastAct && act) + if(!saveBuffer) { - //releasing objects in a thread requires an explicit pool. - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - - if(!saveBuffer) - { - //save the buffer. we want to keep it so we can do something cool later - saveBuffer = new float*[2]; - saveBuffer[0]= new float[framesPerBuffer]; - saveBuffer[1]= new float[framesPerBuffer]; - memset(saveBuffer[0],0,sizeof(float)*framesPerBuffer); - memset(saveBuffer[1],0,sizeof(float)*framesPerBuffer); - } - + //save the buffer. we want to keep it so we can do something cool later + saveBuffer = new float*[2]; + saveBuffer[0]= new float[framesPerBuffer]; + saveBuffer[1]= new float[framesPerBuffer]; + memset(saveBuffer[0],0,sizeof(float)*framesPerBuffer); + memset(saveBuffer[1],0,sizeof(float)*framesPerBuffer); pan = randfloat(1.0); - lastAct=act; - //the mostRecentActivity call retained it, so we need to release act - [act release]; - [pool release]; - } + //play the last half. of our buffer float speedRatio = 0.5; @@ -68,9 +65,14 @@ memcpy(temp[1],outBufs[1],sizeof(float)*framesPerBuffer); + float fadedVolume; //we make sure two half-overlapping grains are always running. for(int i=0;i<framesPerBuffer;i++) { + //get the envelope post fade + fadedVolume = (((float)lifetime)/origlifetime)*m_volume*8; //the envelope fadings make the *2 necessary + + lifetime--; //play at half speed if we received a message - reuse the outbufs //harsh bitcut without interpolation. if(i*speedRatio<framesPerBuffer) @@ -81,14 +83,15 @@ grain1Start = i*speedRatio/framesPerBuffer; //this will only work if speedRatio evenly divides or multiplies with //frames per buffer to an integer result. grain1Cursor = ((int) (i*speedRatio)) % framesPerBuffer; - env = 1.0 - (fabs(i*speedRatio - framesPerBuffer/speedRatio)/(framesPerBuffer/speedRatio)); - outBufs[0][i] += outBufs[0][(int)(i*speedRatio)]*env * (1.0-pan) * amp * m_volume; - outBufs[1][i] += outBufs[1][(int)(i*speedRatio)]*env * pan* amp * m_volume; + env = 1.0 - (fabs(i*speedRatio - framesPerBuffer)/(framesPerBuffer)); + //do a complete overwrite? + outBufs[0][i] += outBufs[0][(int)(i*speedRatio)]*env * (1.0-pan) * amp * fadedVolume; + outBufs[1][i] += outBufs[1][(int)(i*speedRatio)]*env * pan* amp * fadedVolume; } //carry over from the last frame for speeds of less than 1. if(i*speedRatio + framesPerBuffer*speedRatio < framesPerBuffer) { - env = 1.0- (fabs(i*speedRatio + framesPerBuffer*speedRatio - framesPerBuffer/speedRatio)/(framesPerBuffer/speedRatio)); + env = 1.0- (fabs(i*speedRatio + framesPerBuffer*speedRatio - framesPerBuffer)/(framesPerBuffer)); outBufs[0][i] += saveBuffer[0][(int)(i*speedRatio + framesPerBuffer*speedRatio)] *env * (1.0 - pan) * amp * m_volume; outBufs[1][i] += saveBuffer[1][(int)(i*speedRatio + framesPerBuffer*speedRatio)] *env * pan * amp * m_volume; @@ -103,5 +106,5 @@ delete [] temp[0]; delete [] temp[1]; delete [] temp; - } + } } Modified: NoiseMP3/GranularSynth.h =================================================================== --- NoiseMP3/GranularSynth.h 2010-04-11 16:45:42 UTC (rev 153) +++ NoiseMP3/GranularSynth.h 2010-04-11 20:42:05 UTC (rev 154) @@ -18,13 +18,15 @@ class GranularSynth :public Synth { public: - GranularSynth(); + GranularSynth(UserActivity* act); virtual ~GranularSynth(); + virtual bool IsFinished(); virtual void FillData(int framesPerBuffer, float** outBufs, float amp, PlayerModel* model, MP3Decoder* decoder); protected: - - UserActivity* lastAct; float** saveBuffer; float pan; + + int origlifetime; + int lifetime; }; #endif// __FUCKING_GRANULARSYNTH__ Modified: NoiseMP3/PlayerModel.h =================================================================== --- NoiseMP3/PlayerModel.h 2010-04-11 16:45:42 UTC (rev 153) +++ NoiseMP3/PlayerModel.h 2010-04-11 20:42:05 UTC (rev 154) @@ -36,6 +36,7 @@ NSString* lastTitle; AXUIElementRef _systemWide; + UserActivity* lastCursorAct; } - (id) initWithPlayerController:(PlayerController*) cont; - dealloc; @@ -60,7 +61,10 @@ - setLastTitle:(NSString*)title; - (AXUIElementRef)getSystemWideRef; +- (SongActivityList*) getSongActivityList; + -(PlayerController*) getController; - (void)addActivity:(UserActivity*) activity; - +- (UserActivity*)getLastCursorAct; +- setLastCursorAct:(UserActivity*)act; @end Modified: NoiseMP3/PlayerModel.mm =================================================================== --- NoiseMP3/PlayerModel.mm 2010-04-11 16:45:42 UTC (rev 153) +++ NoiseMP3/PlayerModel.mm 2010-04-11 20:42:05 UTC (rev 154) @@ -15,7 +15,11 @@ #include "FuckingAudioIO.h" #include "MP3Decoder.h" +#include "GUINoiseSynth.h" +#include "PulseSynth.h" +#include "GranularSynth.h" + @implementation PlayerModel @@ -23,6 +27,7 @@ { if ( (self = [super init]) != NULL) { + lastCursorAct= nil; sampleRate=44100;//updated by decoder songDuration=0; playbackCursor=0; @@ -192,10 +197,31 @@ return ret; } - +- (SongActivityList*) getSongActivityList +{ + return activities; +} +- (UserActivity*)getLastCursorAct +{ + return lastCursorAct; +} +- setLastCursorAct:(UserActivity*)act +{ + lastCursorAct = act; +} void snifferTimerCallBack(CFRunLoopTimerRef timer, void *info) { PlayerModel *model = (PlayerModel *)info; + + //first check the cursor to see if we've moved on. + UserActivity* thisCursorAct = [[model getSongActivityList] getUserActivityAtCursor:[model getPlaybackCursor] ]; + if(thisCursorAct != [model getLastCursorAct] && thisCursorAct!=nil) + { + [model setLastCursorAct:thisCursorAct]; + [model sonifyActivity:thisCursorAct]; + } + + CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); //find out what is the front process. If it is not us, then do something. @@ -255,7 +281,10 @@ } else if(title && displayName && [title rangeOfString:displayName options:NSCaseInsensitiveSearch].location != NSNotFound) { - title = [title stringByReplacingOccurancesOfString:displayName withString:@""]; + title=[title mutableCopy]; + [title replaceOccurrencesOfString:displayName withString:@"" + options:NSCaseInsensitiveSearch range:NSMakeRange(0,[title length]) ]; + title = [NSString stringWithString:[title autorelease]]; } //if it is a new one, ad the item. @@ -263,6 +292,7 @@ nameString:displayName?displayName:appName titleString:title?title:@"" ]; //save it to the log [model addActivity:activity]; + [model sonifyActivity:activity]; //release the activity instance since the array now has it. [[model getController] displayUserActivity:activity]; [activity release]; @@ -276,6 +306,26 @@ } +- (void) sonifyActivity:(UserActivity*) act +{ + //make some synths and send them. + //for now make all synths - later select some. + Synth* synth; + + synth = new GranularSynth(act); + synth->SetVolume(1.0); + FuckingAudioIO::Instance()->AddSynth(synth); + + synth = new GUINoiseSynth(act); + synth->SetVolume(1.0); + FuckingAudioIO::Instance()->AddSynth(synth); + + synth = new PulseSynth(act); + synth->SetVolume(1.0); + FuckingAudioIO::Instance()->AddSynth(synth); + +} + - play { //only do something if we have an mp3 at hand. Modified: NoiseMP3/PlayerView.h =================================================================== --- NoiseMP3/PlayerView.h 2010-04-11 16:45:42 UTC (rev 153) +++ NoiseMP3/PlayerView.h 2010-04-11 20:42:05 UTC (rev 154) @@ -40,6 +40,7 @@ -(void) drawDuration; -(void) drawCursor:(float) cursor lineWidth:(int)width isBlack:(bool)isBlack; -(void) drawLineX:(float)x y1:(float)y1 y2:(float)y2; +-(void) drawPlayBarBackground; -(void) displayUserActivity:(UserActivity*)activity; -(void)setNeedsErase; Modified: NoiseMP3/PlayerView.m =================================================================== --- NoiseMP3/PlayerView.m 2010-04-11 16:45:42 UTC (rev 153) +++ NoiseMP3/PlayerView.m 2010-04-11 20:42:05 UTC (rev 154) @@ -201,9 +201,10 @@ if(needsErase) { - - glClearColor( 1.0,1.0,1.0,1.0); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + lastBlackCursorX = -1000; //put it away to reset. + glClearColor( 1.0,1.0,1.0,0.0); + glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + [self drawPlayBarBackground]; /* [[NSColor whiteColor] set]; [NSBezierPath fillRect: [self bounds]]; @@ -211,6 +212,13 @@ */ needsErase=NO; lastTopActivityIndex=lastBottomActivityIndex=0; + //we also should wipe our draw history here. + [topActivities release]; + [bottomActivities release]; + bottomActivities = [[NSMutableArray alloc] init]; + topActivities = [[NSMutableArray alloc] init]; + + } [self drawDuration]; @@ -270,7 +278,9 @@ withBoxColor:[NSColor colorWithDeviceRed:1.0f green:1.0f blue:1.0f alpha:0.0f] withBorderColor:[NSColor colorWithDeviceRed:1.0f green:1.0f blue:1.0f alpha:0.0f]]; - + //this lets the text draw. + glColor4f(0.0,0.0,0.0,1.0); + [self drawText:helpString atGLX:textX atGLY:textY atEnd:NO]; [helpString release]; } @@ -427,10 +437,10 @@ cursorY2 = cursorY2*-2 + 1.0; //we don't want the main playhead to overwrite our black lines from the activity - if(cursorX<lastBlackCursorX+cursorWidth) - return; + //if(cursorX<lastBlackCursorX+cursorWidth) + // return; + - NSGraphicsContext* context = [NSGraphicsContext currentContext]; // [context setShouldAntialias:NO]; //OLD Cocoa draw @@ -441,13 +451,17 @@ [path setLineWidth:width]; [path stroke]; */ + +glEnable(GL_BLEND); // for text fading +glBlendFunc(GL_ONE,GL_ONE_MINUS_SRC_ALPHA); // ditto + glLineWidth(width); glBegin( GL_LINES ); { if(isBlack) glColor4f(0.0,0.0,0.0,1.0); else - glColor4f(0.9,0.9,0.9,0.1); + glColor4f(0.0,0.0,0.0,0.05); glVertex3f(cursorX, cursorY1, 0.0f ); glVertex3f(cursorX, cursorY2, 0.0f ); @@ -704,4 +718,33 @@ } +-(void) drawPlayBarBackground +{ + float y1,y2,x1,x2; + x1 = kPlayBarMarginGL; + x2 = (1.0-kPlayBarMarginGL*2)*1.0+kPlayBarMarginGL; + y1 = kPlayBarYRatio; + y2 = y1+kPlayBarHeightGL; + + //note that we don't flip the Y cursor like we usually need to (but since this is a vertical line, it doesn't matter) + x1 = 2*x1-1.0; + x2 = 2*x2-1.0; + y1 = y1*-2 + 1.0; + y2 = y2*-2 + 1.0; + + glEnable(GL_BLEND); // for text fading + glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); // ditt + + //stem + //it is just a rectange of height with the text + glBegin(GL_POLYGON); + glColor4f(0.9,0.9,0.9,1.0); + glVertex2f(x2, y2); + glVertex2f(x2, y1); + glVertex2f(x1, y1); + glVertex2f(x1, y2); + glEnd(); + +} + @end Modified: NoiseMP3/PulseSynth.cpp =================================================================== --- NoiseMP3/PulseSynth.cpp 2010-04-11 16:45:42 UTC (rev 153) +++ NoiseMP3/PulseSynth.cpp 2010-04-11 20:42:05 UTC (rev 154) @@ -14,35 +14,27 @@ #define SR 44100 #define PI 3.1415926 -PulseSynth::PulseSynth() +PulseSynth::PulseSynth(UserActivity* act) +:Synth(act) { //set up the initial conditions so that it'll start processing right away. - pulseCursor = 1000000; - lastAct=nil; - + pulseCursor = 1000000; //for now hardcoded duration pulseDuration = 0.12 * SR; + + FillCharBuffers([[m_act getName] cStringUsingEncoding:NSUTF8StringEncoding]); + } -void PulseSynth::FillData(int framesPerBuffer, float** outBufs, float amp, PlayerModel* model, MP3Decoder* decoder) + +bool PulseSynth::IsFinished() { - //first see if we have - UserActivity* act = [model mostRecentActivity]; + //if we've processed the last character an d the size is + return !charBuffer.size(); +} - if(act!=lastAct && act) - { - //releasing objects in a thread requires an explicit pool. - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - - lastAct=act; - //if it's a new one, we need to clear and refill our string buffer - FillCharBuffers([[act getName] cStringUsingEncoding:NSUTF8StringEncoding]); - //the mostRecentActivity call retained it, so we need to release act - [act release]; - [pool release]; - - } - +void PulseSynth::FillData(int framesPerBuffer, float** outBufs, float amp, PlayerModel* model, MP3Decoder* decoder) +{ if(charBuffer.size()) { int outCursor =0; Modified: NoiseMP3/PulseSynth.h =================================================================== --- NoiseMP3/PulseSynth.h 2010-04-11 16:45:42 UTC (rev 153) +++ NoiseMP3/PulseSynth.h 2010-04-11 20:42:05 UTC (rev 154) @@ -15,12 +15,15 @@ class MP3Decoder; @class PlayerModel; @class UserActivity; + class PulseSynth :public Synth { public: - PulseSynth(); + PulseSynth(UserActivity* act); virtual ~PulseSynth(){} virtual void FillData(int framesPerBuffer, float** outBufs, float amp, PlayerModel* model, MP3Decoder* decoder); + + bool IsFinished(); protected: void FillCharBuffers(const char* string); void InitNewChar(char ch); @@ -32,6 +35,5 @@ float freq; float pan; int pulseDuration; - UserActivity* lastAct; }; #endif// __FUCKING_PULSESYNTH__ Modified: NoiseMP3/SongActivityList.h =================================================================== --- NoiseMP3/SongActivityList.h 2010-04-11 16:45:42 UTC (rev 153) +++ NoiseMP3/SongActivityList.h 2010-04-11 20:42:05 UTC (rev 154) @@ -15,7 +15,7 @@ { NSMutableArray* activities; NSString* songFileName; - + int lastCursorIndex; } - (id) initWithSongFileName:(NSString*)str; Modified: NoiseMP3/SongActivityList.m =================================================================== --- NoiseMP3/SongActivityList.m 2010-04-11 16:45:42 UTC (rev 153) +++ NoiseMP3/SongActivityList.m 2010-04-11 20:42:05 UTC (rev 154) @@ -7,14 +7,15 @@ // #import "SongActivityList.h" +#import "UserActivity.h" - @implementation SongActivityList - (id) initWithSongFileName:(NSString*)str { if (self = [super init]) { + lastCursorIndex=0; activities = [[NSMutableArray alloc] init]; songFileName = [str retain]; } @@ -25,6 +26,7 @@ { if (self = [super init]) { + lastCursorIndex=0; activities = [[coder decodeObject] retain]; songFileName = [[coder decodeObject] retain]; } @@ -87,15 +89,89 @@ - (void) addUserActivity:(UserActivity*)activity { //TODO: add with sort behavior. + //do binary search + int beg=0; //this is where we insert + int end = [activities count]; + int mid=-1; + UserActivity* testAct = nil; + //go until we hve difference of 1 + while(end-beg != 0) + { + //check for the condition when we are seperated by one and stuck + mid = (beg+end)/2; //if they are one seperated by just 1, this can round down + testAct = [activities objectAtIndex:mid]; + + if([testAct getCursor] < [activity getCursor]) + beg = mid + 1; + else + { + end = mid; + //check for end condition to avoid loop + if(end-beg == 1) + { + testAct = [activities objectAtIndex:beg]; + if([testAct getCursor] < [activity getCursor]) + break; //insert at end - this is a hack to break while loop. + } + } + } - [activities addObject:activity]; + [activities insertObject:activity atIndex:end]; +// [activities addObject:activity]; + //increment counter. + //remove the first few ones if we've passed our limit. while([activities count] > kMaxActivities) { //remove the first one - this should release them as well. + //todo find the oldest and remove it. [activities removeObjectAtIndex:0]; } } + +- (UserActivity*) getUserActivityAtCursor:(float) cursor +{ + + + UserActivity* act = [activities objectAtIndex:lastCursorIndex]; + if(![activities count]) + return nil; + + //special cse for 1 object + if([activities count] == 1) + return act; + + UserActivity* next; + //we need to insert a fake entry for the first entry for the test condition to work + if(lastCursorIndex==[activities count]-1) + next = [[UserActivity alloc] initWithTime:0 cursorTime:10000.0f nameString:@"" titleString:@""]; + else + next = [activities objectAtIndex:lastCursorIndex+1]; + + while(!([act getCursor] <= cursor && [next getCursor] > cursor)) + { + //if we created something deleted it after the test. + if(lastCursorIndex==[activities count]-1) + [next release]; + lastCursorIndex++; + if(lastCursorIndex >= [activities count]) + lastCursorIndex = 0; + //update the pointers + act = [activities objectAtIndex:lastCursorIndex]; + //we need to insert a fake entry for the first entry for the test condition to work + if(lastCursorIndex==[activities count]-1) + next = [[UserActivity alloc] initWithTime:0 cursorTime:10000.0f nameString:@"" titleString:@""]; + else + next = [activities objectAtIndex:lastCursorIndex+1]; + } + //if we created something deleted it after the test. + if(lastCursorIndex==[activities count]-1) + [next release]; + + + return act; +} + - (UserActivity*) getUserActivityAtIndex:(int)index { [activities objectAtIndex:index]; Modified: NoiseMP3/Synth.cpp =================================================================== --- NoiseMP3/Synth.cpp 2010-04-11 16:45:42 UTC (rev 153) +++ NoiseMP3/Synth.cpp 2010-04-11 20:42:05 UTC (rev 154) @@ -9,3 +9,15 @@ #include "Synth.h" +Synth::Synth(UserActivity* act) +{ + m_volume=0.0; + m_act = act; + if(m_act) + [m_act retain]; +} +Synth::~Synth() +{ + if(m_act) + [m_act release]; +} Modified: NoiseMP3/Synth.h =================================================================== --- NoiseMP3/Synth.h 2010-04-11 16:45:42 UTC (rev 153) +++ NoiseMP3/Synth.h 2010-04-11 20:42:05 UTC (rev 154) @@ -13,21 +13,26 @@ class MP3Decoder; @class PlayerModel; +@class UserActivity; class Synth { public: - Synth(){m_volume=0.0;} - virtual ~Synth(){} + Synth(UserActivity* act); + virtual ~Synth(); //called by the audio callback to fill the output audio buffers. these already contain //audio from the decoder and perhaps modifications from other Synths. virtual void FillData(int framesPerBuffer, float** outBufs, float amp, PlayerModel* model, MP3Decoder* decoder)=0; + //subclasses need to override this + //if it returns true the instance can be deleted. + virtual bool IsFinished() = 0; + //access float GetVolume(){return m_volume;} void SetVolume(float vol){m_volume=vol;} protected: - + UserActivity* m_act; float m_volume; //0.0 is off. }; #endif// __FUCKING_SYNTH__ \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mc...@us...> - 2010-04-11 16:45:48
|
Revision: 153 http://algorhythmics.svn.sourceforge.net/algorhythmics/?rev=153&view=rev Author: mchinen Date: 2010-04-11 16:45:42 +0000 (Sun, 11 Apr 2010) Log Message: ----------- fixing drag and drop to reject non mp3. also adding smarter display strings that repeat the app name. Modified Paths: -------------- NoiseMP3/PlayerModel.h NoiseMP3/PlayerModel.mm Modified: NoiseMP3/PlayerModel.h =================================================================== --- NoiseMP3/PlayerModel.h 2010-04-11 12:39:50 UTC (rev 152) +++ NoiseMP3/PlayerModel.h 2010-04-11 16:45:42 UTC (rev 153) @@ -42,7 +42,7 @@ - play; - pause; - chooseAudioFile; -- loadAudioFile:(NSString*) fileName; +-(void) loadAudioFile:(NSString*) fileName; - changeVolume:(int) volumeState; -(void) saveDataToDisk; //for view Modified: NoiseMP3/PlayerModel.mm =================================================================== --- NoiseMP3/PlayerModel.mm 2010-04-11 12:39:50 UTC (rev 152) +++ NoiseMP3/PlayerModel.mm 2010-04-11 16:45:42 UTC (rev 153) @@ -247,6 +247,16 @@ { [model setLastTitle:title]; } + + //if window title is the same as app name, don't print it twice by hiding the window title + if(title && displayName && [title isEqual:displayName]) + { + title = @""; + } + else if(title && displayName && [title rangeOfString:displayName options:NSCaseInsensitiveSearch].location != NSNotFound) + { + title = [title stringByReplacingOccurancesOfString:displayName withString:@""]; + } //if it is a new one, ad the item. UserActivity* activity = [[UserActivity alloc] initWithTime:startTime cursorTime:[model getPlaybackCursor] @@ -377,9 +387,13 @@ } -- loadAudioFile:(NSString*) fileName +-(void) loadAudioFile:(NSString*) fileName { - if(currentFilename) + //reject null strings and ones that don't hve MP3 in them. + if(!fileName || [fileName rangeOfString:@".mp3" options:NSCaseInsensitiveSearch].location == NSNotFound) + return; + + if(currentFilename) [currentFilename release]; currentFilename = [fileName retain]; [controller changeDisplayFilename:[fileName lastPathComponent]]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mc...@us...> - 2010-04-11 12:39:57
|
Revision: 152 http://algorhythmics.svn.sourceforge.net/algorhythmics/?rev=152&view=rev Author: mchinen Date: 2010-04-11 12:39:50 +0000 (Sun, 11 Apr 2010) Log Message: ----------- add basic drag and drop Modified Paths: -------------- NoiseMP3/PlayerController.h NoiseMP3/PlayerController.mm NoiseMP3/PlayerModel.h NoiseMP3/PlayerModel.mm NoiseMP3/PlayerView.h NoiseMP3/PlayerView.m Modified: NoiseMP3/PlayerController.h =================================================================== --- NoiseMP3/PlayerController.h 2010-04-11 00:05:16 UTC (rev 151) +++ NoiseMP3/PlayerController.h 2010-04-11 12:39:50 UTC (rev 152) @@ -66,6 +66,6 @@ //for view - (int)getSongDuration; - (float)getPlaybackCursor; +- (void) loadAudioFile:(NSString*)fileName; //drag n drop - @end Modified: NoiseMP3/PlayerController.mm =================================================================== --- NoiseMP3/PlayerController.mm 2010-04-11 00:05:16 UTC (rev 151) +++ NoiseMP3/PlayerController.mm 2010-04-11 12:39:50 UTC (rev 152) @@ -62,7 +62,12 @@ [playerModel chooseAudioFile]; } +- (void) loadAudioFile:(NSString*)fileName +{ + [playerModel loadAudioFile:fileName]; +} + - (IBAction)changeVolume:(id)sender { //increment the volume or wrap it. Modified: NoiseMP3/PlayerModel.h =================================================================== --- NoiseMP3/PlayerModel.h 2010-04-11 00:05:16 UTC (rev 151) +++ NoiseMP3/PlayerModel.h 2010-04-11 12:39:50 UTC (rev 152) @@ -42,6 +42,7 @@ - play; - pause; - chooseAudioFile; +- loadAudioFile:(NSString*) fileName; - changeVolume:(int) volumeState; -(void) saveDataToDisk; //for view Modified: NoiseMP3/PlayerModel.mm =================================================================== --- NoiseMP3/PlayerModel.mm 2010-04-11 00:05:16 UTC (rev 151) +++ NoiseMP3/PlayerModel.mm 2010-04-11 12:39:50 UTC (rev 152) @@ -372,6 +372,13 @@ { NSArray* files = [openDlg filenames]; NSString* fileName = [files objectAtIndex:0];//take the first one. + [self loadAudioFile:fileName]; + } + +} + +- loadAudioFile:(NSString*) fileName +{ if(currentFilename) [currentFilename release]; currentFilename = [fileName retain]; @@ -381,8 +388,7 @@ //begin playing immediately FuckingAudioIO::Instance()->Stop(); [self play]; - } - + } @end Modified: NoiseMP3/PlayerView.h =================================================================== --- NoiseMP3/PlayerView.h 2010-04-11 00:05:16 UTC (rev 151) +++ NoiseMP3/PlayerView.h 2010-04-11 12:39:50 UTC (rev 152) @@ -28,6 +28,10 @@ - dealloc ; - (void)drawRect:(NSRect)rect; +//drag +- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender; +- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender; + - (void) eraseActivityText:(float)textY height:(float)textHeight; -(void)createAndDrawActivityText:(UserActivity*)activity x:(float)x y:(float)nonFlippedY grayText:(BOOL)gray; //utility function used by other draw**** methods to draw text Modified: NoiseMP3/PlayerView.m =================================================================== --- NoiseMP3/PlayerView.m 2010-04-11 00:05:16 UTC (rev 151) +++ NoiseMP3/PlayerView.m 2010-04-11 12:39:50 UTC (rev 152) @@ -87,11 +87,13 @@ *bitmap++ = 255;//B *bitmap++ = 255; } - } + } [NSGraphicsContext restoreGraphicsState]; + //register for drag n drop + [self registerForDraggedTypes:[NSArray arrayWithObjects: NSFilenamesPboardType, nil]]; } return self; } @@ -124,6 +126,52 @@ needsErase=YES; } + +- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender { + NSPasteboard *pboard; + NSDragOperation sourceDragMask; + + sourceDragMask = [sender draggingSourceOperationMask]; + pboard = [sender draggingPasteboard]; + + if ( [[pboard types] containsObject:NSFilenamesPboardType] ) { + if (sourceDragMask & NSDragOperationLink) { + return NSDragOperationLink; + } else if (sourceDragMask & NSDragOperationCopy) { + return NSDragOperationCopy; + } + } + return NSDragOperationNone; +} + +- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender { + NSPasteboard *pboard; + NSDragOperation sourceDragMask; + + sourceDragMask = [sender draggingSourceOperationMask]; + pboard = [sender draggingPasteboard]; + + if ( [[pboard types] containsObject:NSFilenamesPboardType] ) { + NSArray *files = [pboard propertyListForType:NSFilenamesPboardType]; + NSString* fileName =[files objectAtIndex:0]; + + + //todo: only allow .mp3 + + [controller loadAudioFile:fileName]; + +// // Depending on the dragging source and modifier keys, +// // the file data may be copied or linked +// if (sourceDragMask & NSDragOperationLink) { +// [self addLinkToFiles:files]; +// } else { +// [self addDataFromFiles:files]; +// } + } + return YES; +} + + -(void) displayUserActivity:(UserActivity*)activity { cursorState++; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mc...@us...> - 2010-04-11 00:05:23
|
Revision: 151 http://algorhythmics.svn.sourceforge.net/algorhythmics/?rev=151&view=rev Author: mchinen Date: 2010-04-11 00:05:16 +0000 (Sun, 11 Apr 2010) Log Message: ----------- fixing button alignment - maybe Modified Paths: -------------- FuckingWebBrowser/English.lproj/MainMenu.nib/info.nib FuckingWebBrowser/English.lproj/MainMenu.nib/keyedobjects.nib FuckingWebBrowser/FuckingAudioIO.cpp Modified: FuckingWebBrowser/English.lproj/MainMenu.nib/info.nib =================================================================== --- FuckingWebBrowser/English.lproj/MainMenu.nib/info.nib 2010-04-10 22:58:55 UTC (rev 150) +++ FuckingWebBrowser/English.lproj/MainMenu.nib/info.nib 2010-04-11 00:05:16 UTC (rev 151) @@ -3,7 +3,7 @@ <plist version="1.0"> <dict> <key>IBDocumentLocation</key> - <string>-16 49 744 245 0 0 1024 746 </string> + <string>32 70 744 245 0 0 1024 746 </string> <key>IBEditorPositions</key> <dict> <key>29</key> Modified: FuckingWebBrowser/English.lproj/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: FuckingWebBrowser/FuckingAudioIO.cpp =================================================================== --- FuckingWebBrowser/FuckingAudioIO.cpp 2010-04-10 22:58:55 UTC (rev 150) +++ FuckingWebBrowser/FuckingAudioIO.cpp 2010-04-11 00:05:16 UTC (rev 151) @@ -63,6 +63,8 @@ int * noisearray = new int[framesPerBuffer*(1+noisefactor)]; float saxSamp = 0; + +// printf("%i ", noisearray[0]); // Clip output to [-1.0,+1.0] range for(unsigned int i = 0; i < framesPerBuffer*NUM_CHANNELS; i++) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mc...@us...> - 2010-04-10 00:24:30
|
Revision: 149 http://algorhythmics.svn.sourceforge.net/algorhythmics/?rev=149&view=rev Author: mchinen Date: 2010-04-10 00:24:24 +0000 (Sat, 10 Apr 2010) Log Message: ----------- reducing print rate Modified Paths: -------------- Xee_hmpf_series/FuckingAudioIO.cpp Modified: Xee_hmpf_series/FuckingAudioIO.cpp =================================================================== --- Xee_hmpf_series/FuckingAudioIO.cpp 2010-04-09 23:46:31 UTC (rev 148) +++ Xee_hmpf_series/FuckingAudioIO.cpp 2010-04-10 00:24:24 UTC (rev 149) @@ -60,7 +60,8 @@ // Clip output to [-1.0,+1.0] range for(unsigned int i = 0; i < framesPerBuffer*NUM_CHANNELS; i++) { - printf("%8.i ",noisearray[i]); + if(i==0) + printf("%i ",noisearray[i]); float f = noisearray[i]; float freq = noisearray[i]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mc...@us...> - 2010-04-09 23:46:37
|
Revision: 148 http://algorhythmics.svn.sourceforge.net/algorhythmics/?rev=148&view=rev Author: mchinen Date: 2010-04-09 23:46:31 +0000 (Fri, 09 Apr 2010) Log Message: ----------- adding temporary printout of sonifiaction array data Modified Paths: -------------- Xee_hmpf_series/FuckingAudioIO.cpp Xee_hmpf_series/Xee_hmpf_series.xcodeproj/project.pbxproj Modified: Xee_hmpf_series/FuckingAudioIO.cpp =================================================================== --- Xee_hmpf_series/FuckingAudioIO.cpp 2010-04-09 23:38:56 UTC (rev 147) +++ Xee_hmpf_series/FuckingAudioIO.cpp 2010-04-09 23:46:31 UTC (rev 148) @@ -60,6 +60,8 @@ // Clip output to [-1.0,+1.0] range for(unsigned int i = 0; i < framesPerBuffer*NUM_CHANNELS; i++) { + printf("%8.i ",noisearray[i]); + float f = noisearray[i]; float freq = noisearray[i]; // f = randfloat(5000-110)+110; Modified: Xee_hmpf_series/Xee_hmpf_series.xcodeproj/project.pbxproj =================================================================== --- Xee_hmpf_series/Xee_hmpf_series.xcodeproj/project.pbxproj 2010-04-09 23:38:56 UTC (rev 147) +++ Xee_hmpf_series/Xee_hmpf_series.xcodeproj/project.pbxproj 2010-04-09 23:46:31 UTC (rev 148) @@ -547,7 +547,7 @@ 1B68CE2C0885F42A001971C8 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; }; 1B68CED90885F5D7001971C8 /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = /System/Library/Frameworks/QuickTime.framework; sourceTree = "<absolute>"; }; 1B86FDBB0B8136B400E302DB /* PNGLoader.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PNGLoader.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 1B86FDBC0B8136B400E302DB /* PNGLoader-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = file; path = "PNGLoader-Info.plist"; sourceTree = "<group>"; }; + 1B86FDBC0B8136B400E302DB /* PNGLoader-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = "PNGLoader-Info.plist"; sourceTree = "<group>"; }; 1B9099CF0C91BE1A009E5ACE /* XeeInterleavingHandle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XeeInterleavingHandle.h; sourceTree = "<group>"; }; 1B9099D00C91BE1A009E5ACE /* XeeInterleavingHandle.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = XeeInterleavingHandle.m; sourceTree = "<group>"; }; 1B996C230928EE9E0026832A /* jpeg.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = jpeg.icns; path = icons/jpeg.icns; sourceTree = "<group>"; }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mc...@us...> - 2010-04-09 23:39:02
|
Revision: 147 http://algorhythmics.svn.sourceforge.net/algorhythmics/?rev=147&view=rev Author: mchinen Date: 2010-04-09 23:38:56 +0000 (Fri, 09 Apr 2010) Log Message: ----------- adding portaudio for xee Modified Paths: -------------- Xee_hmpf_series/English.lproj/InfoPlist.strings Xee_hmpf_series/Xee_hmpf_series.xcodeproj/project.pbxproj Added Paths: ----------- libs/ libs/libportaudio.a Modified: Xee_hmpf_series/English.lproj/InfoPlist.strings =================================================================== (Binary files differ) Modified: Xee_hmpf_series/Xee_hmpf_series.xcodeproj/project.pbxproj =================================================================== --- Xee_hmpf_series/Xee_hmpf_series.xcodeproj/project.pbxproj 2010-04-09 16:05:22 UTC (rev 146) +++ Xee_hmpf_series/Xee_hmpf_series.xcodeproj/project.pbxproj 2010-04-09 23:38:56 UTC (rev 147) @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 18B43E74116FBD590035337F /* libportaudio.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 18B43E73116FBD590035337F /* libportaudio.a */; }; 1B00E3590A796D980094B997 /* XeeTileImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B00E3580A796D980094B997 /* XeeTileImage.m */; }; 1B00E36A0A7999070094B997 /* XeeYUVImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B00E3690A7999070094B997 /* XeeYUVImage.m */; }; 1B07078C0C9F3DA700FA8EBD /* SWFParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B07078A0C9F3DA700FA8EBD /* SWFParser.m */; }; @@ -357,46 +358,7 @@ 3E5AF253116F6D2600D6994A /* VoicForm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E5AF20B116F6D2600D6994A /* VoicForm.cpp */; }; 3ECEE22C115FAEFC00050A2E /* FuckingAudioIO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3ECEE22A115FAEFC00050A2E /* FuckingAudioIO.cpp */; }; 3ECEE298115FB0FF00050A2E /* handyfuncs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3ECEE23C115FB0FF00050A2E /* handyfuncs.cpp */; }; - 3ECEE299115FB0FF00050A2E /* libportaudio.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3ECEE23E115FB0FF00050A2E /* libportaudio.a */; }; 3ECEE29A115FB0FF00050A2E /* aclocal.m4 in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE240115FB0FF00050A2E /* aclocal.m4 */; }; - 3ECEE29B115FB0FF00050A2E /* pa_devs in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE243115FB0FF00050A2E /* pa_devs */; }; - 3ECEE29C115FB0FF00050A2E /* pa_fuzz in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE244115FB0FF00050A2E /* pa_fuzz */; }; - 3ECEE29D115FB0FF00050A2E /* pa_minlat in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE245115FB0FF00050A2E /* pa_minlat */; }; - 3ECEE29E115FB0FF00050A2E /* paqa_devs in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE246115FB0FF00050A2E /* paqa_devs */; }; - 3ECEE29F115FB0FF00050A2E /* paqa_errs in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE247115FB0FF00050A2E /* paqa_errs */; }; - 3ECEE2A0115FB0FF00050A2E /* patest1 in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE248115FB0FF00050A2E /* patest1 */; }; - 3ECEE2A1115FB0FF00050A2E /* patest_buffer in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE249115FB0FF00050A2E /* patest_buffer */; }; - 3ECEE2A2115FB0FF00050A2E /* patest_callbackstop in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE24A115FB0FF00050A2E /* patest_callbackstop */; }; - 3ECEE2A3115FB0FF00050A2E /* patest_clip in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE24B115FB0FF00050A2E /* patest_clip */; }; - 3ECEE2A4115FB0FF00050A2E /* patest_dither in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE24C115FB0FF00050A2E /* patest_dither */; }; - 3ECEE2A5115FB0FF00050A2E /* patest_hang in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE24D115FB0FF00050A2E /* patest_hang */; }; - 3ECEE2A6115FB0FF00050A2E /* patest_in_overflow in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE24E115FB0FF00050A2E /* patest_in_overflow */; }; - 3ECEE2A7115FB0FF00050A2E /* patest_latency in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE24F115FB0FF00050A2E /* patest_latency */; }; - 3ECEE2A8115FB0FF00050A2E /* patest_leftright in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE250115FB0FF00050A2E /* patest_leftright */; }; - 3ECEE2A9115FB0FF00050A2E /* patest_longsine in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE251115FB0FF00050A2E /* patest_longsine */; }; - 3ECEE2AA115FB0FF00050A2E /* patest_many in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE252115FB0FF00050A2E /* patest_many */; }; - 3ECEE2AB115FB0FF00050A2E /* patest_maxsines in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE253115FB0FF00050A2E /* patest_maxsines */; }; - 3ECEE2AC115FB0FF00050A2E /* patest_multi_sine in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE254115FB0FF00050A2E /* patest_multi_sine */; }; - 3ECEE2AD115FB0FF00050A2E /* patest_out_underflow in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE255115FB0FF00050A2E /* patest_out_underflow */; }; - 3ECEE2AE115FB0FF00050A2E /* patest_pink in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE256115FB0FF00050A2E /* patest_pink */; }; - 3ECEE2AF115FB0FF00050A2E /* patest_prime in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE257115FB0FF00050A2E /* patest_prime */; }; - 3ECEE2B0115FB0FF00050A2E /* patest_read_record in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE258115FB0FF00050A2E /* patest_read_record */; }; - 3ECEE2B1115FB0FF00050A2E /* patest_read_write_wire in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE259115FB0FF00050A2E /* patest_read_write_wire */; }; - 3ECEE2B2115FB0FF00050A2E /* patest_record in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE25A115FB0FF00050A2E /* patest_record */; }; - 3ECEE2B3115FB0FF00050A2E /* patest_ringmix in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE25B115FB0FF00050A2E /* patest_ringmix */; }; - 3ECEE2B4115FB0FF00050A2E /* patest_saw in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE25C115FB0FF00050A2E /* patest_saw */; }; - 3ECEE2B5115FB0FF00050A2E /* patest_sine in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE25D115FB0FF00050A2E /* patest_sine */; }; - 3ECEE2B6115FB0FF00050A2E /* patest_sine8 in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE25E115FB0FF00050A2E /* patest_sine8 */; }; - 3ECEE2B7115FB0FF00050A2E /* patest_sine_channelmaps in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE25F115FB0FF00050A2E /* patest_sine_channelmaps */; }; - 3ECEE2B8115FB0FF00050A2E /* patest_sine_formats in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE260115FB0FF00050A2E /* patest_sine_formats */; }; - 3ECEE2B9115FB0FF00050A2E /* patest_sine_time in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE261115FB0FF00050A2E /* patest_sine_time */; }; - 3ECEE2BA115FB0FF00050A2E /* patest_start_stop in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE262115FB0FF00050A2E /* patest_start_stop */; }; - 3ECEE2BB115FB0FF00050A2E /* patest_stop in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE263115FB0FF00050A2E /* patest_stop */; }; - 3ECEE2BC115FB0FF00050A2E /* patest_stop_playout in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE264115FB0FF00050A2E /* patest_stop_playout */; }; - 3ECEE2BD115FB0FF00050A2E /* patest_toomanysines in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE265115FB0FF00050A2E /* patest_toomanysines */; }; - 3ECEE2BE115FB0FF00050A2E /* patest_underflow in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE266115FB0FF00050A2E /* patest_underflow */; }; - 3ECEE2BF115FB0FF00050A2E /* patest_wire in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE267115FB0FF00050A2E /* patest_wire */; }; - 3ECEE2C0115FB0FF00050A2E /* patest_write_sine in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE268115FB0FF00050A2E /* patest_write_sine */; }; 3ECEE2C1115FB0FF00050A2E /* pa_devs in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE269115FB0FF00050A2E /* pa_devs */; }; 3ECEE2C2115FB0FF00050A2E /* pa_fuzz in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE26A115FB0FF00050A2E /* pa_fuzz */; }; 3ECEE2C3115FB0FF00050A2E /* pa_minlat in Resources */ = {isa = PBXBuildFile; fileRef = 3ECEE26B115FB0FF00050A2E /* pa_minlat */; }; @@ -463,6 +425,7 @@ /* Begin PBXFileReference section */ 089C1660FE840EACC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; }; 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; }; + 18B43E73116FBD590035337F /* libportaudio.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libportaudio.a; sourceTree = "<group>"; }; 1B00E3570A796D980094B997 /* XeeTileImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XeeTileImage.h; sourceTree = "<group>"; }; 1B00E3580A796D980094B997 /* XeeTileImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XeeTileImage.m; sourceTree = "<group>"; }; 1B00E3680A7999070094B997 /* XeeYUVImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XeeYUVImage.h; sourceTree = "<group>"; }; @@ -584,7 +547,7 @@ 1B68CE2C0885F42A001971C8 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; }; 1B68CED90885F5D7001971C8 /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = /System/Library/Frameworks/QuickTime.framework; sourceTree = "<absolute>"; }; 1B86FDBB0B8136B400E302DB /* PNGLoader.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PNGLoader.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 1B86FDBC0B8136B400E302DB /* PNGLoader-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "PNGLoader-Info.plist"; sourceTree = "<group>"; }; + 1B86FDBC0B8136B400E302DB /* PNGLoader-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = file; path = "PNGLoader-Info.plist"; sourceTree = "<group>"; }; 1B9099CF0C91BE1A009E5ACE /* XeeInterleavingHandle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XeeInterleavingHandle.h; sourceTree = "<group>"; }; 1B9099D00C91BE1A009E5ACE /* XeeInterleavingHandle.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = XeeInterleavingHandle.m; sourceTree = "<group>"; }; 1B996C230928EE9E0026832A /* jpeg.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = jpeg.icns; path = icons/jpeg.icns; sourceTree = "<group>"; }; @@ -988,7 +951,6 @@ 3ECEE22B115FAEFC00050A2E /* FuckingAudioIO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FuckingAudioIO.h; sourceTree = "<group>"; }; 3ECEE23C115FB0FF00050A2E /* handyfuncs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = handyfuncs.cpp; sourceTree = "<group>"; }; 3ECEE23D115FB0FF00050A2E /* handyfuncs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = handyfuncs.h; sourceTree = "<group>"; }; - 3ECEE23E115FB0FF00050A2E /* libportaudio.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libportaudio.a; sourceTree = "<group>"; }; 3ECEE240115FB0FF00050A2E /* aclocal.m4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = aclocal.m4; sourceTree = "<group>"; }; 3ECEE243115FB0FF00050A2E /* pa_devs */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; path = pa_devs; sourceTree = "<group>"; }; 3ECEE244115FB0FF00050A2E /* pa_fuzz */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; path = pa_fuzz; sourceTree = "<group>"; }; @@ -1105,18 +1067,27 @@ 1BCA0AA70E9EBBC50016D207 /* libcrypto.dylib in Frameworks */, 1BECC3C81082A788000385AB /* UniversalDetector.framework in Frameworks */, 1BECC3C91082A788000385AB /* XADMaster.framework in Frameworks */, - 3ECEE299115FB0FF00050A2E /* libportaudio.a in Frameworks */, 3ECEE2F4115FB33000050A2E /* AudioToolbox.framework in Frameworks */, 3ECEE2F5115FB33000050A2E /* AudioUnit.framework in Frameworks */, 3ECEE2F6115FB33000050A2E /* CoreAudio.framework in Frameworks */, 3ECEE2F7115FB33000050A2E /* CoreData.framework in Frameworks */, 3ECEE2F8115FB33000050A2E /* CoreServices.framework in Frameworks */, + 18B43E74116FBD590035337F /* libportaudio.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 18B43E72116FBD590035337F /* libs */ = { + isa = PBXGroup; + children = ( + 18B43E73116FBD590035337F /* libportaudio.a */, + ); + name = libs; + path = ../libs; + sourceTree = SOURCE_ROOT; + }; 19C28FB0FE9D524F11CA2CBB /* Products */ = { isa = PBXGroup; children = ( @@ -1602,10 +1573,10 @@ 2A37F4AAFDCFA73011CA2CEA /* Xee */ = { isa = PBXGroup; children = ( + 18B43E72116FBD590035337F /* libs */, 3E5AF1A7116F6D2600D6994A /* stk */, 3ECEE23C115FB0FF00050A2E /* handyfuncs.cpp */, 3ECEE23D115FB0FF00050A2E /* handyfuncs.h */, - 3ECEE23E115FB0FF00050A2E /* libportaudio.a */, 3ECEE23F115FB0FF00050A2E /* portaudio */, 3ECEE22A115FAEFC00050A2E /* FuckingAudioIO.cpp */, 3ECEE22B115FAEFC00050A2E /* FuckingAudioIO.h */, @@ -2098,44 +2069,6 @@ 1BF289420B56F7E700481BED /* archive.icns in Resources */, 1B2823C70C63F33800AA7D9C /* jpeg_quant.txt in Resources */, 3ECEE29A115FB0FF00050A2E /* aclocal.m4 in Resources */, - 3ECEE29B115FB0FF00050A2E /* pa_devs in Resources */, - 3ECEE29C115FB0FF00050A2E /* pa_fuzz in Resources */, - 3ECEE29D115FB0FF00050A2E /* pa_minlat in Resources */, - 3ECEE29E115FB0FF00050A2E /* paqa_devs in Resources */, - 3ECEE29F115FB0FF00050A2E /* paqa_errs in Resources */, - 3ECEE2A0115FB0FF00050A2E /* patest1 in Resources */, - 3ECEE2A1115FB0FF00050A2E /* patest_buffer in Resources */, - 3ECEE2A2115FB0FF00050A2E /* patest_callbackstop in Resources */, - 3ECEE2A3115FB0FF00050A2E /* patest_clip in Resources */, - 3ECEE2A4115FB0FF00050A2E /* patest_dither in Resources */, - 3ECEE2A5115FB0FF00050A2E /* patest_hang in Resources */, - 3ECEE2A6115FB0FF00050A2E /* patest_in_overflow in Resources */, - 3ECEE2A7115FB0FF00050A2E /* patest_latency in Resources */, - 3ECEE2A8115FB0FF00050A2E /* patest_leftright in Resources */, - 3ECEE2A9115FB0FF00050A2E /* patest_longsine in Resources */, - 3ECEE2AA115FB0FF00050A2E /* patest_many in Resources */, - 3ECEE2AB115FB0FF00050A2E /* patest_maxsines in Resources */, - 3ECEE2AC115FB0FF00050A2E /* patest_multi_sine in Resources */, - 3ECEE2AD115FB0FF00050A2E /* patest_out_underflow in Resources */, - 3ECEE2AE115FB0FF00050A2E /* patest_pink in Resources */, - 3ECEE2AF115FB0FF00050A2E /* patest_prime in Resources */, - 3ECEE2B0115FB0FF00050A2E /* patest_read_record in Resources */, - 3ECEE2B1115FB0FF00050A2E /* patest_read_write_wire in Resources */, - 3ECEE2B2115FB0FF00050A2E /* patest_record in Resources */, - 3ECEE2B3115FB0FF00050A2E /* patest_ringmix in Resources */, - 3ECEE2B4115FB0FF00050A2E /* patest_saw in Resources */, - 3ECEE2B5115FB0FF00050A2E /* patest_sine in Resources */, - 3ECEE2B6115FB0FF00050A2E /* patest_sine8 in Resources */, - 3ECEE2B7115FB0FF00050A2E /* patest_sine_channelmaps in Resources */, - 3ECEE2B8115FB0FF00050A2E /* patest_sine_formats in Resources */, - 3ECEE2B9115FB0FF00050A2E /* patest_sine_time in Resources */, - 3ECEE2BA115FB0FF00050A2E /* patest_start_stop in Resources */, - 3ECEE2BB115FB0FF00050A2E /* patest_stop in Resources */, - 3ECEE2BC115FB0FF00050A2E /* patest_stop_playout in Resources */, - 3ECEE2BD115FB0FF00050A2E /* patest_toomanysines in Resources */, - 3ECEE2BE115FB0FF00050A2E /* patest_underflow in Resources */, - 3ECEE2BF115FB0FF00050A2E /* patest_wire in Resources */, - 3ECEE2C0115FB0FF00050A2E /* patest_write_sine in Resources */, 3ECEE2C1115FB0FF00050A2E /* pa_devs in Resources */, 3ECEE2C2115FB0FF00050A2E /* pa_fuzz in Resources */, 3ECEE2C3115FB0FF00050A2E /* pa_minlat in Resources */, @@ -2613,7 +2546,12 @@ IBC_STRIP_NIBS = NO; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; - LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)\""; + LIBRARY_SEARCH_PATHS = ( + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", + ); + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\""; + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/../libs\""; MACOSX_DEPLOYMENT_TARGET = 10.4; OTHER_LDFLAGS = ""; PREBINDING = NO; @@ -2650,7 +2588,12 @@ IBC_STRIP_NIBS = NO; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; - LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)\""; + LIBRARY_SEARCH_PATHS = ( + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", + ); + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\""; + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/../libs\""; OTHER_LDFLAGS = ""; PREBINDING = NO; PRODUCT_NAME = Xee_hmpf_series; @@ -2665,6 +2608,7 @@ buildSettings = { FRAMEWORK_SEARCH_PATHS = ""; GCC_VERSION = 4.0; + LIBRARY_SEARCH_PATHS = ../libs/; MACOSX_DEPLOYMENT_TARGET = 10.4; SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; }; @@ -2675,6 +2619,7 @@ buildSettings = { FRAMEWORK_SEARCH_PATHS = ""; GCC_VERSION = 4.0; + LIBRARY_SEARCH_PATHS = ../libs/; MACOSX_DEPLOYMENT_TARGET = 10.4; SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; }; Added: libs/libportaudio.a =================================================================== (Binary files differ) Property changes on: libs/libportaudio.a ___________________________________________________________________ Added: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2010-04-07 21:45:01
|
Revision: 142 http://algorhythmics.svn.sourceforge.net/algorhythmics/?rev=142&view=rev Author: ahonda Date: 2010-04-07 21:44:54 +0000 (Wed, 07 Apr 2010) Log Message: ----------- change color for vertical lines and trying change text color Modified Paths: -------------- NoiseMP3/PlayerView.m Modified: NoiseMP3/PlayerView.m =================================================================== --- NoiseMP3/PlayerView.m 2010-04-07 21:40:26 UTC (rev 141) +++ NoiseMP3/PlayerView.m 2010-04-07 21:44:54 UTC (rev 142) @@ -275,7 +275,7 @@ withAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[NSColor blackColor],NSForegroundColorAttributeName, [NSFont systemFontOfSize:gray?7.5:9.5],NSFontAttributeName, style,NSParagraphStyleAttributeName,nil] - withTextColor:[NSColor colorWithDeviceRed:gray?0.15f:1.0f green:gray?0.15f:1.0f blue:gray?0.15f:1.0f alpha:1.0f] + withTextColor:[NSColor colorWithDeviceRed:gray?0.15f:1.0f green:gray?0.15f:1.0f blue:gray?0.15f:1.0f alpha:0.01f] withBoxColor:[NSColor colorWithDeviceRed:1.0f green:1.0f blue:1.0f alpha: 0.0f] withBorderColor:[NSColor colorWithDeviceRed:1.0f green:1.0f blue:1.0f alpha:0.0f]]; @@ -411,14 +411,15 @@ -(void) drawLineX:(float)x y1:(float)y1 y2:(float)y2 { + glEnable(GL_BLEND); // for text fading + + glBlendFunc(GL_ONE,GL_ONE_MINUS_SRC_ALPHA); // ditto // glEnable(GL_BLEND); // for text fading - glBlendFunc(GL_ONE,GL_ONE_MINUS_SRC_ALPHA); // ditto - glEnable(GL_BLEND); // for text fading // glBlendFunc( GL_ONE_MINUS_DST_COLOR,GL_ONE_MINUS_SRC_COLOR); // ditto glBegin( GL_LINES ); { -// glColor4f(0.0,0.0,0.0,0.25); + //glColor4f(0.0,0.0,0.0,0.30); glColor4f(0.0,0.0,0.0,1.0); glVertex3f(x, y1 , 0.0f ); @@ -426,7 +427,7 @@ } glEnd(); - glColor4f(0.0,0.0,0.0,1.0); + //glColor4f(0.0,0.0,0.0,1.0); } //text offset from line. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mc...@us...> - 2010-04-07 21:40:32
|
Revision: 141 http://algorhythmics.svn.sourceforge.net/algorhythmics/?rev=141&view=rev Author: mchinen Date: 2010-04-07 21:40:26 +0000 (Wed, 07 Apr 2010) Log Message: ----------- fixing color blending for draw text Modified Paths: -------------- NoiseMP3/PlayerView.m Modified: NoiseMP3/PlayerView.m =================================================================== --- NoiseMP3/PlayerView.m 2010-04-07 20:56:13 UTC (rev 140) +++ NoiseMP3/PlayerView.m 2010-04-07 21:40:26 UTC (rev 141) @@ -304,7 +304,7 @@ glDisable(GL_DEPTH_TEST); // ensure text is not remove by deoth buffer test. glEnable(GL_BLEND); // for text fading - glBlendFunc(GL_ONE_MINUS_DST_ALPHA,GL_ONE_MINUS_SRC_ALPHA); //GL_ONE_MINUS_SRC_ALPHA); // ditto + glBlendFunc(GL_ONE,GL_ONE_MINUS_SRC_ALPHA); //GL_ONE_MINUS_SRC_ALPHA); // ditto glEnable(GL_TEXTURE_RECTANGLE_EXT); // glEnable(GL_COLOR_LOGIC_OP); // glLogicOp(GL_XOR); @@ -438,11 +438,13 @@ { unsigned char* bitmap = [renderBitmap bitmapData]; float cursor = [activity getCursor];//[controller getPlaybackCursor]; + float pixelWidth = 1.0f/[renderBitmap pixelsHigh]; float textHeight = ((float)kTextHeight)/[renderBitmap pixelsHigh]; float textOffset = ((float)kTextOffset)/[renderBitmap pixelsHigh]; - float noteheadWidth = ((float)kNoteheadWidth)/[renderBitmap pixelsHigh]; + float noteheadWidth = kNoteheadWidth*pixelWidth; + + pixelWidth = pixelWidth/2.0; //convert to gl scale - //for now just draw a line at the cursor. // int cursorX = ([renderBitmap pixelsWide]-kPlayBarMargin*2)*cursor+kPlayBarMargin; // //the line starts from the area below the playbar for the first half, and above it for the next. @@ -452,6 +454,8 @@ // int cursorY2;// = cursorY1+ (0.5-[activity getCursor])* [renderBitmap pixelsHigh]*(kPlayBarYRatio*1.5); float cursorX = (1.0-kPlayBarMarginGL*2)*cursor+kPlayBarMarginGL; + cursorX = ((int)(cursorX/pixelWidth))*pixelWidth; //fixes rounding errors. + //y1 and y2 use traditional mac coords directions, with 0 at the top and 1.0 at the bottom. //we invert and scale before using them. float cursorY1 = kPlayBarYRatio+([activity getCursor]>0.5?0:kPlayBarHeightGL); @@ -625,9 +629,9 @@ glEnable(GL_BLEND); // for text fading - glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); // ditto + glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); // ditt - + //stem //it is just a rectange of height with the text glBegin(GL_POLYGON); glColor4f(0.0,0.0,0.0,1.0); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mc...@us...> - 2010-04-07 20:56:19
|
Revision: 140 http://algorhythmics.svn.sourceforge.net/algorhythmics/?rev=140&view=rev Author: mchinen Date: 2010-04-07 20:56:13 +0000 (Wed, 07 Apr 2010) Log Message: ----------- open gl test revert Modified Paths: -------------- NoiseMP3/PlayerView.m Modified: NoiseMP3/PlayerView.m =================================================================== --- NoiseMP3/PlayerView.m 2010-04-07 20:50:34 UTC (rev 139) +++ NoiseMP3/PlayerView.m 2010-04-07 20:56:13 UTC (rev 140) @@ -412,9 +412,9 @@ -(void) drawLineX:(float)x y1:(float)y1 y2:(float)y2 { // glEnable(GL_BLEND); // for text fading -// glBlendFunc(GL_SRC_COLOR,GL_SRC_COLOR);//GL_ONE_MINUS_SRC_COLOR); //GL_ONE_MINUS_SRC_ALPHA); // ditto + glBlendFunc(GL_ONE,GL_ONE_MINUS_SRC_ALPHA); // ditto glEnable(GL_BLEND); // for text fading - glBlendFunc( GL_ONE_MINUS_DST_COLOR,GL_ONE_MINUS_SRC_COLOR); // ditto +// glBlendFunc( GL_ONE_MINUS_DST_COLOR,GL_ONE_MINUS_SRC_COLOR); // ditto glBegin( GL_LINES ); { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mc...@us...> - 2010-04-07 20:50:40
|
Revision: 139 http://algorhythmics.svn.sourceforge.net/algorhythmics/?rev=139&view=rev Author: mchinen Date: 2010-04-07 20:50:34 +0000 (Wed, 07 Apr 2010) Log Message: ----------- open gl test 2 Modified Paths: -------------- NoiseMP3/PlayerView.m Modified: NoiseMP3/PlayerView.m =================================================================== --- NoiseMP3/PlayerView.m 2010-04-07 20:48:56 UTC (rev 138) +++ NoiseMP3/PlayerView.m 2010-04-07 20:50:34 UTC (rev 139) @@ -414,7 +414,7 @@ // glEnable(GL_BLEND); // for text fading // glBlendFunc(GL_SRC_COLOR,GL_SRC_COLOR);//GL_ONE_MINUS_SRC_COLOR); //GL_ONE_MINUS_SRC_ALPHA); // ditto glEnable(GL_BLEND); // for text fading - glBlendFunc( GL_DST_COLOR,GL_SRC_COLOR); // ditto + glBlendFunc( GL_ONE_MINUS_DST_COLOR,GL_ONE_MINUS_SRC_COLOR); // ditto glBegin( GL_LINES ); { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mc...@us...> - 2010-04-07 20:49:04
|
Revision: 138 http://algorhythmics.svn.sourceforge.net/algorhythmics/?rev=138&view=rev Author: mchinen Date: 2010-04-07 20:48:56 +0000 (Wed, 07 Apr 2010) Log Message: ----------- open gl test Modified Paths: -------------- NoiseMP3/PlayerView.m Modified: NoiseMP3/PlayerView.m =================================================================== --- NoiseMP3/PlayerView.m 2010-04-07 20:26:56 UTC (rev 137) +++ NoiseMP3/PlayerView.m 2010-04-07 20:48:56 UTC (rev 138) @@ -304,8 +304,13 @@ glDisable(GL_DEPTH_TEST); // ensure text is not remove by deoth buffer test. glEnable(GL_BLEND); // for text fading - glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); // ditto + glBlendFunc(GL_ONE_MINUS_DST_ALPHA,GL_ONE_MINUS_SRC_ALPHA); //GL_ONE_MINUS_SRC_ALPHA); // ditto glEnable(GL_TEXTURE_RECTANGLE_EXT); +// glEnable(GL_COLOR_LOGIC_OP); +// glLogicOp(GL_XOR); +// glLogicOp(GL_EQUIV); + +// glColor4f(0.0f,0.0f,0.0f,1.0f); // set orthograhic 1:1 pixel transform in local view coords glGetIntegerv(GL_MATRIX_MODE,&matrixMode); @@ -347,6 +352,9 @@ { glEnable(GL_DEPTH_TEST); } + + glDisable(GL_COLOR_LOGIC_OP); + //glReportError(); @@ -403,12 +411,15 @@ -(void) drawLineX:(float)x y1:(float)y1 y2:(float)y2 { +// glEnable(GL_BLEND); // for text fading +// glBlendFunc(GL_SRC_COLOR,GL_SRC_COLOR);//GL_ONE_MINUS_SRC_COLOR); //GL_ONE_MINUS_SRC_ALPHA); // ditto glEnable(GL_BLEND); // for text fading - glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); // ditto - + glBlendFunc( GL_DST_COLOR,GL_SRC_COLOR); // ditto + glBegin( GL_LINES ); { - glColor4f(0.0,0.0,0.0,0.25); +// glColor4f(0.0,0.0,0.0,0.25); + glColor4f(0.0,0.0,0.0,1.0); glVertex3f(x, y1 , 0.0f ); glVertex3f(x, y2, 0.0f ); @@ -444,7 +455,7 @@ //y1 and y2 use traditional mac coords directions, with 0 at the top and 1.0 at the bottom. //we invert and scale before using them. float cursorY1 = kPlayBarYRatio+([activity getCursor]>0.5?0:kPlayBarHeightGL); - float cursorY2, cursorY2NonFlipped,cursorXNonFlipped ; + float cursorY2, cursorY1NonFlipped,cursorY2NonFlipped,cursorXNonFlipped ; float textX,textY; //Y is not flipped(0 is top, 1 is bottom) int thisIndex; @@ -477,6 +488,7 @@ // [context setShouldAntialias:NO]; //we need to save the nonflipped version for the text placement. + cursorY1NonFlipped = cursorY1; cursorY2NonFlipped = cursorY2; cursorXNonFlipped = cursorX; cursorX = 2*cursorX-1.0; @@ -530,27 +542,26 @@ // [self drawLineX:stemX y1:cursorY1 y2:cursorY2]; } - //we may have erased the stem line of an activity with cursor greater than this one - so redraw all stems that have //cursor greater than this one which have also greater index (for top activities it is the other way around.) -// for(i=thisIndex;i<[bottomActivities count];i++) -// { -// int j; -// NSMutableArray* jarray; -// jarray = [bottomActivities objectAtIndex:i]; -// -// stemY = (cursorY1 + kPlayBarYRatio*0.75) - textHeight*i; -// stemY = 2.0*(stemY-0.5); -// for(j=0;j<[jarray count];j++) -// { -// oldAct = [inner objectAtIndex:i]; -// stemX = (1.0-kPlayBarMarginGL*2)*[oldAct getCursor]+kPlayBarMarginGL; -// stemX = 2.0*(stemX-0.5); -// //stemY = cursorY1 - textHeight*(2+lastTopActivityIndex++); -// //draw the stems -// [self drawLineX:stemX y1:cursorY1 y2:stemY]; -// } -// } + for(i=0;i<=thisIndex;i++)//[bottomActivities count];i++) + { + int j; + NSMutableArray* jarray; + jarray = [bottomActivities objectAtIndex:i]; + + stemY = (cursorY1NonFlipped + kPlayBarYRatio*0.75) - textHeight*i; + stemY = 2.0*(0.5-stemY); + for(j=0;j<[jarray count];j++) + { + oldAct = [jarray objectAtIndex:j]; + stemX = (1.0-kPlayBarMarginGL*2)*[oldAct getCursor]+kPlayBarMarginGL; + stemX = 2.0*(stemX-0.5); + //stemY = cursorY1 - textHeight*(2+lastTopActivityIndex++); + //draw the stems + [self drawLineX:stemX y1:cursorY1 y2:stemY]; + } + } } //now we add this to the inner array so we can keep track of it later. [inner insertObject:activity atIndex:[inner count]]; @@ -590,7 +601,6 @@ [self createAndDrawActivityText:oldAct x:readdX y:textY grayText:YES]; } - //we may have erased the stem line of an activity with cursor greater than this one - so redraw all stems that have //cursor greater than this one which have also greater index (for top activities it is the other way around.) } @@ -620,7 +630,7 @@ //it is just a rectange of height with the text glBegin(GL_POLYGON); - glColor4f(0.0,0.0,0.0,0.25); + glColor4f(0.0,0.0,0.0,1.0); glVertex2f(cursorX2, cursorY2); glVertex2f(cursorX2, cursorRectY); glVertex2f(cursorX, cursorRectY); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2010-04-07 20:27:02
|
Revision: 137 http://algorhythmics.svn.sourceforge.net/algorhythmics/?rev=137&view=rev Author: ahonda Date: 2010-04-07 20:26:56 +0000 (Wed, 07 Apr 2010) Log Message: ----------- change synth volume for test Modified Paths: -------------- NoiseMP3/FuckingAudioIO.cpp Modified: NoiseMP3/FuckingAudioIO.cpp =================================================================== --- NoiseMP3/FuckingAudioIO.cpp 2010-04-07 18:39:10 UTC (rev 136) +++ NoiseMP3/FuckingAudioIO.cpp 2010-04-07 20:26:56 UTC (rev 137) @@ -128,8 +128,8 @@ ///volume setting m_synths[0]->SetVolume(2.0); - m_synths[1]->SetVolume(0.5); - m_synths[2]->SetVolume(0.5); + m_synths[1]->SetVolume(2.0); + m_synths[2]->SetVolume(2.0); return m_inited; } bool FuckingAudioIO::Start() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mc...@us...> - 2010-04-07 18:39:16
|
Revision: 136 http://algorhythmics.svn.sourceforge.net/algorhythmics/?rev=136&view=rev Author: mchinen Date: 2010-04-07 18:39:10 +0000 (Wed, 07 Apr 2010) Log Message: ----------- transparencies and fixing upper part of event text Modified Paths: -------------- NoiseMP3/PlayerView.m Modified: NoiseMP3/PlayerView.m =================================================================== --- NoiseMP3/PlayerView.m 2010-04-06 21:46:22 UTC (rev 135) +++ NoiseMP3/PlayerView.m 2010-04-07 18:39:10 UTC (rev 136) @@ -403,14 +403,19 @@ -(void) drawLineX:(float)x y1:(float)y1 y2:(float)y2 { + glEnable(GL_BLEND); // for text fading + glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); // ditto + glBegin( GL_LINES ); { - glColor4f(0.0,0.0,0.0,1.0); + glColor4f(0.0,0.0,0.0,0.25); glVertex3f(x, y1 , 0.0f ); - glVertex3f(x, y2, 0.0f ); + glVertex3f(x, y2, 0.0f ); + } glEnd(); + glColor4f(0.0,0.0,0.0,1.0); } //text offset from line. @@ -528,7 +533,7 @@ //we may have erased the stem line of an activity with cursor greater than this one - so redraw all stems that have //cursor greater than this one which have also greater index (for top activities it is the other way around.) -// for(i=thisIndex+1;i<[bottomActivities count];i++) +// for(i=thisIndex;i<[bottomActivities count];i++) // { // int j; // NSMutableArray* jarray; @@ -568,21 +573,21 @@ } else { - inner = [bottomActivities objectAtIndex:thisIndex]; + inner = [topActivities objectAtIndex:thisIndex]; //we're writing on top of something - so first erase the old. - [self eraseActivityText:textY*-1.0 height:textHeight*2]; + [self eraseActivityText:(textY - textHeight*2.4) *-1.0 height:textHeight*2]; //we have to subtract the textY to move up //readd the text using gray. //we need to calculate the correct TextX for each one in this array float readdX; UserActivity* oldAct; int i; - for(i=0;i<[inner count];i++) + for(i=[inner count]-1;i>=0;i--) //walk downwards towards the bar { oldAct = [inner objectAtIndex:i]; readdX = (1.0-kPlayBarMarginGL*2)*[oldAct getCursor]+ kPlayBarMarginGL - textOffset; //different for top&bottom readdX = 2.0*(readdX-0.5); - [self createAndDrawActivityText:oldAct x:readdX y:textY grayText:YES]; + [self createAndDrawActivityText:oldAct x:readdX y:textY grayText:YES]; } @@ -607,13 +612,21 @@ cursorRectY= cursorY2NonFlipped + (cursor<0.5?-1*textHeight:textHeight); cursorX2 = 2*cursorX2-1.0; cursorRectY = cursorRectY*-2.0 + 1.0; + + + glEnable(GL_BLEND); // for text fading + glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); // ditto + + //it is just a rectange of height with the text glBegin(GL_POLYGON); + glColor4f(0.0,0.0,0.0,0.25); glVertex2f(cursorX2, cursorY2); glVertex2f(cursorX2, cursorRectY); glVertex2f(cursorX, cursorRectY); glVertex2f(cursorX, cursorY2); glEnd(); + glColor4f(0.0,0.0,0.0,1.0); //draw text This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mc...@us...> - 2010-04-06 21:46:28
|
Revision: 135 http://algorhythmics.svn.sourceforge.net/algorhythmics/?rev=135&view=rev Author: mchinen Date: 2010-04-06 21:46:22 +0000 (Tue, 06 Apr 2010) Log Message: ----------- fixing gui noise to timelimit fade. add song title to pulse at startup. some fixes for redraw/grey text and stems on overlap - to be fixed in next commit Modified Paths: -------------- NoiseMP3/FuckingAudioIO.cpp NoiseMP3/GUINoiseSynth.cpp NoiseMP3/GUINoiseSynth.h NoiseMP3/PlayerModel.mm NoiseMP3/PlayerView.h NoiseMP3/PlayerView.m Modified: NoiseMP3/FuckingAudioIO.cpp =================================================================== --- NoiseMP3/FuckingAudioIO.cpp 2010-04-05 17:26:17 UTC (rev 134) +++ NoiseMP3/FuckingAudioIO.cpp 2010-04-06 21:46:22 UTC (rev 135) @@ -65,7 +65,6 @@ //stick the data back in. pthread_mutex_lock(priv->decoderLock); - //if it becomes an annoyance or crash we may need to have a seperate mutex for each synth. priv->decoder->ReplaceData((float**)outputBuffer, framesPerBuffer, priv->amp); pthread_mutex_unlock(priv->decoderLock); @@ -129,7 +128,7 @@ ///volume setting m_synths[0]->SetVolume(2.0); - m_synths[1]->SetVolume(0.015); + m_synths[1]->SetVolume(0.5); m_synths[2]->SetVolume(0.5); return m_inited; } Modified: NoiseMP3/GUINoiseSynth.cpp =================================================================== --- NoiseMP3/GUINoiseSynth.cpp 2010-04-05 17:26:17 UTC (rev 134) +++ NoiseMP3/GUINoiseSynth.cpp 2010-04-06 21:46:22 UTC (rev 135) @@ -10,26 +10,67 @@ #include <algorithm> #include "GUINoiseSynth.h" #include "handyfuncs.h" +#import "UserActivity.h" +#define kNoiseLifetime 44100*10 + +GUINoiseSynth::GUINoiseSynth() +{ + lifetime = 0; +} + void GUINoiseSynth::FillData(int framesPerBuffer, float** outBufs, float amp, PlayerModel* model, MP3Decoder* decoder) { + + //first see if we have a new activity + UserActivity* act = [model mostRecentActivity]; + + if(act!=lastAct && act) + { + //releasing objects in a thread requires an explicit pool. + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + lastAct=act; + //random lifetime with exponential dist so we have equal amount of 'short' and 'long' instead of mostly medium durs. + origlifetime = lifetime = randfloatexp2(1.0)*kNoiseLifetime +1; + //the mostRecentActivity call retained it, so we need to release act + [act release]; + [pool release]; + + } + + //fade out with time + if(lifetime <= 0 || m_volume <= 0.0) + { + return; //don't add anything and dont compute anything + } + + //get noise variables and array int noisefactor; - noisefactor = 1; + noisefactor = 1; //this can be bigger than 1 for more spacey noise. but 1 is the fastest float * noisearray = new float[framesPerBuffer*(1+noisefactor)]; int ch1start,ch2start; ch1start = randint(framesPerBuffer*noisefactor); ch2start = randint(framesPerBuffer*noisefactor); + + + float fadedVolume; + for(unsigned int i=0;i<framesPerBuffer;i++) { + //get the envelope post fade + fadedVolume = (((float)lifetime)/origlifetime)*m_volume; + lifetime--; for( int z = 0; z < 2; z++ ) { - if(noisearray[(z==0?ch1start:ch2start)+i] > m_volume) - noisearray[(z==0?ch1start:ch2start)+i] =noisearray[(z==0?ch1start:ch2start)+i]*m_volume /std::numeric_limits<float>::max(); - else if(noisearray[(z==0?ch1start:ch2start)+i]<-m_volume) - noisearray[(z==0?ch1start:ch2start)+i] =noisearray[(z==0?ch1start:ch2start)+i]*m_volume /std::numeric_limits<float>::max(); - - ((float**)outBufs)[z][i]+=noisearray[(z==0?ch1start:ch2start)+i] * amp; + float f; + f = noisearray[(z==0?ch1start:ch2start)+i] ; + if(f!=f || f==INFINITY || f== -INFINITY) //nan and infinity case + f = (randfloat(2.0)-1.0); + else if(f > 1.0 || f<-1.0) + f = (f/std::numeric_limits<float>::max()); + + ((float**)outBufs)[z][i]+= f * amp*fadedVolume; // memcpy(((float*)outputBuffer)+framesPerBuffer*z,noisearray+randint(framesPerBuffer*(noisefactor)),framesPerBuffer*sizeof(float)); } } Modified: NoiseMP3/GUINoiseSynth.h =================================================================== --- NoiseMP3/GUINoiseSynth.h 2010-04-05 17:26:17 UTC (rev 134) +++ NoiseMP3/GUINoiseSynth.h 2010-04-06 21:46:22 UTC (rev 135) @@ -14,12 +14,16 @@ #include "Synth.h" class MP3Decoder; @class PlayerModel; +@class UserActivity; class GUINoiseSynth :public Synth { public: - GUINoiseSynth(){} + GUINoiseSynth(); virtual ~GUINoiseSynth(){} virtual void FillData(int framesPerBuffer, float** outBufs, float amp, PlayerModel* model, MP3Decoder* decoder); protected: + UserActivity* lastAct; + int lifetime; + int origlifetime; }; #endif// __FUCKING_GUINOISESYNTH__ Modified: NoiseMP3/PlayerModel.mm =================================================================== --- NoiseMP3/PlayerModel.mm 2010-04-05 17:26:17 UTC (rev 134) +++ NoiseMP3/PlayerModel.mm 2010-04-06 21:46:22 UTC (rev 135) @@ -320,7 +320,22 @@ //if we have enough audio go if(length) + { FuckingAudioIO::Instance()->Start(); + if(newFile) + { + //play the beep noise for our mp3 filename. + CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); + //if it is a new one, ad the item. + UserActivity* activity = [[UserActivity alloc] initWithTime:startTime cursorTime:0.0f + nameString:@"NoiseMP3" titleString:[currentFilename lastPathComponent] ]; + + [self addActivity:activity]; + //I don't think we want to display this activity, but if we do uncomment the next line. + //[[model getController] displayUserActivity:activity]; + [activity release]; + } + } newFile=NO; [controller displayPlaying]; } Modified: NoiseMP3/PlayerView.h =================================================================== --- NoiseMP3/PlayerView.h 2010-04-05 17:26:17 UTC (rev 134) +++ NoiseMP3/PlayerView.h 2010-04-06 21:46:22 UTC (rev 135) @@ -35,6 +35,7 @@ -(void) drawDuration; -(void) drawCursor:(float) cursor lineWidth:(int)width isBlack:(bool)isBlack; +-(void) drawLineX:(float)x y1:(float)y1 y2:(float)y2; -(void) displayUserActivity:(UserActivity*)activity; -(void)setNeedsErase; Modified: NoiseMP3/PlayerView.m =================================================================== --- NoiseMP3/PlayerView.m 2010-04-05 17:26:17 UTC (rev 134) +++ NoiseMP3/PlayerView.m 2010-04-06 21:46:22 UTC (rev 135) @@ -246,6 +246,8 @@ -(void)createAndDrawActivityText:(UserActivity*)activity x:(float)x y:(float)nonFlippedY grayText:(BOOL)gray { + + //format time CFTimeZoneRef systemZoneCopy = CFTimeZoneCopySystem(); @@ -277,6 +279,12 @@ withBoxColor:[NSColor colorWithDeviceRed:1.0f green:1.0f blue:1.0f alpha: 0.0f] withBorderColor:[NSColor colorWithDeviceRed:1.0f green:1.0f blue:1.0f alpha:0.0f]]; +// if(!gray) +// glColor4f(0.0,0.0,0.0,1.0); +// else +// glColor4f(0.8,0.8,0.8,0.1); + + //draw [self drawText:activityString atGLX:x atGLY:nonFlippedY atEnd:[activity getCursor]>=0.5]; [activityString release]; @@ -393,6 +401,18 @@ // [context setShouldAntialias:YES]; } +-(void) drawLineX:(float)x y1:(float)y1 y2:(float)y2 +{ + glBegin( GL_LINES ); + { + glColor4f(0.0,0.0,0.0,1.0); + glVertex3f(x, y1 , 0.0f ); + + glVertex3f(x, y2, 0.0f ); + } + glEnd(); +} + //text offset from line. #define kTextOffset 4 #define kTextHeight 11 @@ -487,21 +507,45 @@ //readd the text using gray. //we need to calculate the correct TextX for each one in this array - float readdX; + float readdX,stemX,stemY; UserActivity* oldAct; int i; + //TODO: this is totally inefficient when we startup and add many activities at once, + //because each successive event at the same index does this erase redraw thing, so we get n! redraws. for(i=0;i<[inner count];i++) { oldAct = [inner objectAtIndex:i]; - readdX = (1.0-kPlayBarMarginGL*2)*[oldAct getCursor]+ kPlayBarMarginGL + textOffset; //different for top&bottom + stemX = (1.0-kPlayBarMarginGL*2)*[oldAct getCursor]+kPlayBarMarginGL; + readdX = stemX + textOffset; //different for top&bottom + stemX = 2.0*(stemX-0.5); readdX = 2.0*(readdX-0.5); - [self createAndDrawActivityText:oldAct x:readdX y:textY grayText:YES]; + [self createAndDrawActivityText:oldAct x:readdX y:textY grayText:YES]; + //redraw the stems. + // [self drawLineX:stemX y1:cursorY1 y2:cursorY2]; } //we may have erased the stem line of an activity with cursor greater than this one - so redraw all stems that have //cursor greater than this one which have also greater index (for top activities it is the other way around.) +// for(i=thisIndex+1;i<[bottomActivities count];i++) +// { +// int j; +// NSMutableArray* jarray; +// jarray = [bottomActivities objectAtIndex:i]; +// +// stemY = (cursorY1 + kPlayBarYRatio*0.75) - textHeight*i; +// stemY = 2.0*(stemY-0.5); +// for(j=0;j<[jarray count];j++) +// { +// oldAct = [inner objectAtIndex:i]; +// stemX = (1.0-kPlayBarMarginGL*2)*[oldAct getCursor]+kPlayBarMarginGL; +// stemX = 2.0*(stemX-0.5); +// //stemY = cursorY1 - textHeight*(2+lastTopActivityIndex++); +// //draw the stems +// [self drawLineX:stemX y1:cursorY1 y2:stemY]; +// } +// } } //now we add this to the inner array so we can keep track of it later. [inner insertObject:activity atIndex:[inner count]]; @@ -538,7 +582,7 @@ oldAct = [inner objectAtIndex:i]; readdX = (1.0-kPlayBarMarginGL*2)*[oldAct getCursor]+ kPlayBarMarginGL - textOffset; //different for top&bottom readdX = 2.0*(readdX-0.5); - [self createAndDrawActivityText:oldAct x:readdX y:textY grayText:YES]; + [self createAndDrawActivityText:oldAct x:readdX y:textY grayText:YES]; } @@ -552,22 +596,8 @@ - //draw line -// NSBezierPath* path = [NSBezierPath bezierPath]; -// [path moveToPoint:NSMakePoint(cursorX,cursorY1)]; -// [path lineToPoint:NSMakePoint(cursorX,cursorY2)]; -// // [path setLineWidth:1.0]; -// [[NSColor blackColor] set]; -// [path stroke]; -glBegin( GL_LINES ); -{ - glColor4f(0.0,0.0,0.0,1.0); - glVertex3f(cursorX, cursorY1 , 0.0f ); - - glVertex3f(cursorX, cursorY2, 0.0f ); -} -glEnd(); - + //draw stem + [self drawLineX:cursorX y1:cursorY1 y2:cursorY2]; // [context setShouldAntialias:YES]; //also draw a notehead on the end of the line. @@ -578,11 +608,6 @@ cursorX2 = 2*cursorX2-1.0; cursorRectY = cursorRectY*-2.0 + 1.0; //it is just a rectange of height with the text -// NSRect noteheadRect=NSMakeRect(cursorX2<cursorX?cursorX2:cursorX, cursorY2<cursorRectY?cursorY2-1:cursorRectY , -// fabs(cursorX2-cursorX), fabs(cursorY2-cursorRectY) ); -// [[NSColor blackColor] set]; -// [NSBezierPath fillRect: noteheadRect]; - //NSRectFill(noteheadRect); glBegin(GL_POLYGON); glVertex2f(cursorX2, cursorY2); glVertex2f(cursorX2, cursorRectY); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <smi...@us...> - 2010-04-05 17:26:24
|
Revision: 134 http://algorhythmics.svn.sourceforge.net/algorhythmics/?rev=134&view=rev Author: smiyazaki Date: 2010-04-05 17:26:17 +0000 (Mon, 05 Apr 2010) Log Message: ----------- 64 bit support with testing - not working osc Modified Paths: -------------- FuckingFucker/FuckingFucker.xcodeproj/project.pbxproj FuckingFucker/FuckingFuckerMan.cpp FuckingFucker/FuckingFuckerMan.h FuckingFucker/OscMan.mm FuckingFucker/boincbacktrace/QBacktrace.c FuckingFucker/boincbacktrace/QBacktrace.h FuckingFucker/boincbacktrace/QCrashReport.c FuckingFucker/i386opcodes.cpp FuckingFucker/libportaudio.a Modified: FuckingFucker/FuckingFucker.xcodeproj/project.pbxproj =================================================================== --- FuckingFucker/FuckingFucker.xcodeproj/project.pbxproj 2010-04-05 16:03:22 UTC (rev 133) +++ FuckingFucker/FuckingFucker.xcodeproj/project.pbxproj 2010-04-05 17:26:17 UTC (rev 134) @@ -32,6 +32,36 @@ 18F4FB7910E1743700ED93B8 /* FuckingFuckerView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 18F4FB7710E1743700ED93B8 /* FuckingFuckerView.mm */; }; 18F4FBCF10E3A9F700ED93B8 /* FuckingFuckerMan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18F4FBCE10E3A9F700ED93B8 /* FuckingFuckerMan.cpp */; }; 18FCEC561125B43A000FF84C /* GetPID.c in Sources */ = {isa = PBXBuildFile; fileRef = 18FCEC541125B43A000FF84C /* GetPID.c */; }; + 3E636530116A28630095817A /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 29B97318FDCFA39411CA2CEA /* MainMenu.nib */; }; + 3E636531116A28630095817A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; + 3E636532116A28630095817A /* ff.icns in Resources */ = {isa = PBXBuildFile; fileRef = 1857BB211114A9B700F153F5 /* ff.icns */; }; + 3E636533116A28630095817A /* Credits.html in Resources */ = {isa = PBXBuildFile; fileRef = 1857BC1F1114FB9800F153F5 /* Credits.html */; }; + 3E636534116A28630095817A /* Makefile.am in Resources */ = {isa = PBXBuildFile; fileRef = 18D4C8761153F9D90087A465 /* Makefile.am */; }; + 3E636535116A28630095817A /* Makefile.in in Resources */ = {isa = PBXBuildFile; fileRef = 18D4C8771153F9D90087A465 /* Makefile.in */; }; + 3E636537116A28630095817A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; + 3E636538116A28630095817A /* FuckingFuckerView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 18F4FB7710E1743700ED93B8 /* FuckingFuckerView.mm */; }; + 3E636539116A28630095817A /* FuckingFuckerMan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18F4FBCE10E3A9F700ED93B8 /* FuckingFuckerMan.cpp */; }; + 3E63653A116A28630095817A /* FuckingAudioIO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1857B97E1112902B00F153F5 /* FuckingAudioIO.cpp */; }; + 3E63653B116A28630095817A /* handyfuncs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1857B992111290E800F153F5 /* handyfuncs.cpp */; }; + 3E63653C116A28630095817A /* ppcopcodes.c in Sources */ = {isa = PBXBuildFile; fileRef = 1857BA661113C69A00F153F5 /* ppcopcodes.c */; }; + 3E63653D116A28630095817A /* GetPID.c in Sources */ = {isa = PBXBuildFile; fileRef = 18FCEC541125B43A000FF84C /* GetPID.c */; }; + 3E63653E116A28630095817A /* i386opcodes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1867F5F5113471B600EE29F1 /* i386opcodes.cpp */; }; + 3E63653F116A28630095817A /* mac_backtrace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18CE41E8114B2C7F00282C50 /* mac_backtrace.cpp */; }; + 3E636540116A28630095817A /* QBacktrace.c in Sources */ = {isa = PBXBuildFile; fileRef = 18CE41EA114B2C7F00282C50 /* QBacktrace.c */; }; + 3E636541116A28630095817A /* QCrashReport.c in Sources */ = {isa = PBXBuildFile; fileRef = 18CE41EC114B2C7F00282C50 /* QCrashReport.c */; }; + 3E636542116A28630095817A /* QMachOImage.c in Sources */ = {isa = PBXBuildFile; fileRef = 18CE41EE114B2C7F00282C50 /* QMachOImage.c */; }; + 3E636543116A28630095817A /* QMachOImageList.c in Sources */ = {isa = PBXBuildFile; fileRef = 18CE41F0114B2C8000282C50 /* QMachOImageList.c */; }; + 3E636544116A28630095817A /* QSymbols.c in Sources */ = {isa = PBXBuildFile; fileRef = 18CE41F2114B2C8000282C50 /* QSymbols.c */; }; + 3E636545116A28630095817A /* QTaskMemory.c in Sources */ = {isa = PBXBuildFile; fileRef = 18CE41F4114B2C8000282C50 /* QTaskMemory.c */; }; + 3E636546116A28630095817A /* OscMan.mm in Sources */ = {isa = PBXBuildFile; fileRef = 18CE43EA114D77E400282C50 /* OscMan.mm */; }; + 3E636548116A28630095817A /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; + 3E636549116A28630095817A /* libportaudio.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1857B94811128E1D00F153F5 /* libportaudio.a */; }; + 3E63654A116A28630095817A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1857B95211128E6F00F153F5 /* AudioToolbox.framework */; }; + 3E63654B116A28630095817A /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1857B95311128E6F00F153F5 /* AudioUnit.framework */; }; + 3E63654C116A28630095817A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1857B95411128E6F00F153F5 /* CoreAudio.framework */; }; + 3E63654D116A28630095817A /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1857B95511128E6F00F153F5 /* CoreServices.framework */; }; + 3E63654E116A28630095817A /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84166E2811409F01004E3684 /* Security.framework */; }; + 3E63654F116A28630095817A /* liblo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 18D4C70A1153ED4F0087A465 /* liblo.a */; }; 84166E2911409F01004E3684 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84166E2811409F01004E3684 /* Security.framework */; }; 8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 29B97318FDCFA39411CA2CEA /* MainMenu.nib */; }; 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; @@ -114,12 +144,30 @@ 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; }; 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; }; 32CA4F630368D1EE00C91783 /* FuckingFucker_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FuckingFucker_Prefix.pch; sourceTree = "<group>"; }; + 3E6363E7116A265F0095817A /* 10.5 3264 uni-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "10.5 3264 uni-Info.plist"; sourceTree = "<group>"; }; + 3E636554116A28630095817A /* FuckingFucker.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FuckingFucker.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 3E636556116A28640095817A /* Info copy.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info copy.plist"; sourceTree = "<group>"; }; 84166E2811409F01004E3684 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = "<absolute>"; }; 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; }; 8D1107320486CEB800E47090 /* FuckingFucker.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FuckingFucker.app; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 3E636547116A28630095817A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3E636548116A28630095817A /* Cocoa.framework in Frameworks */, + 3E636549116A28630095817A /* libportaudio.a in Frameworks */, + 3E63654A116A28630095817A /* AudioToolbox.framework in Frameworks */, + 3E63654B116A28630095817A /* AudioUnit.framework in Frameworks */, + 3E63654C116A28630095817A /* CoreAudio.framework in Frameworks */, + 3E63654D116A28630095817A /* CoreServices.framework in Frameworks */, + 3E63654E116A28630095817A /* Security.framework in Frameworks */, + 3E63654F116A28630095817A /* liblo.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8D11072E0486CEB800E47090 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -215,6 +263,7 @@ isa = PBXGroup; children = ( 8D1107320486CEB800E47090 /* FuckingFucker.app */, + 3E636554116A28630095817A /* FuckingFucker.app */, ); name = Products; sourceTree = "<group>"; @@ -249,6 +298,7 @@ 29B97317FDCFA39411CA2CEA /* Resources */, 29B97323FDCFA39411CA2CEA /* Frameworks */, 19C28FACFE9D520D11CA2CBB /* Products */, + 3E6363E7116A265F0095817A /* 10.5 3264 uni-Info.plist */, ); name = FuckingFucker; sourceTree = "<group>"; @@ -276,6 +326,7 @@ 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, 29B97318FDCFA39411CA2CEA /* MainMenu.nib */, 1857BC1F1114FB9800F153F5 /* Credits.html */, + 3E636556116A28640095817A /* Info copy.plist */, ); name = Resources; sourceTree = "<group>"; @@ -297,6 +348,25 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 3E63652E116A28630095817A /* FuckingFucker10.5 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3E636551116A28630095817A /* Build configuration list for PBXNativeTarget "FuckingFucker10.5" */; + buildPhases = ( + 3E63652F116A28630095817A /* Resources */, + 3E636536116A28630095817A /* Sources */, + 3E636547116A28630095817A /* Frameworks */, + 3E636550116A28630095817A /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = FuckingFucker10.5; + productInstallPath = "$(HOME)/Applications"; + productName = FuckingFucker; + productReference = 3E636554116A28630095817A /* FuckingFucker.app */; + productType = "com.apple.product-type.application"; + }; 8D1107260486CEB800E47090 /* FuckingFucker */ = { isa = PBXNativeTarget; buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "FuckingFucker" */; @@ -329,11 +399,25 @@ projectRoot = ""; targets = ( 8D1107260486CEB800E47090 /* FuckingFucker */, + 3E63652E116A28630095817A /* FuckingFucker10.5 */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 3E63652F116A28630095817A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3E636530116A28630095817A /* MainMenu.nib in Resources */, + 3E636531116A28630095817A /* InfoPlist.strings in Resources */, + 3E636532116A28630095817A /* ff.icns in Resources */, + 3E636533116A28630095817A /* Credits.html in Resources */, + 3E636534116A28630095817A /* Makefile.am in Resources */, + 3E636535116A28630095817A /* Makefile.in in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8D1107290486CEB800E47090 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -363,9 +447,45 @@ shellPath = /bin/sh; shellScript = "if [[ -f /usr/bin/codesign ]]\nthen\n\t# -f means force to re-sign even if already signed\n\tcodesign -f -s \"Institute for Algorhythmics\" \"${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/\"\nfi\n"; }; + 3E636550116A28630095817A /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [[ -f /usr/bin/codesign ]]\nthen\n\t# -f means force to re-sign even if already signed\n\tcodesign -f -s \"Institute for Algorhythmics\" \"${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/\"\nfi\n"; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 3E636536116A28630095817A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3E636537116A28630095817A /* main.m in Sources */, + 3E636538116A28630095817A /* FuckingFuckerView.mm in Sources */, + 3E636539116A28630095817A /* FuckingFuckerMan.cpp in Sources */, + 3E63653A116A28630095817A /* FuckingAudioIO.cpp in Sources */, + 3E63653B116A28630095817A /* handyfuncs.cpp in Sources */, + 3E63653C116A28630095817A /* ppcopcodes.c in Sources */, + 3E63653D116A28630095817A /* GetPID.c in Sources */, + 3E63653E116A28630095817A /* i386opcodes.cpp in Sources */, + 3E63653F116A28630095817A /* mac_backtrace.cpp in Sources */, + 3E636540116A28630095817A /* QBacktrace.c in Sources */, + 3E636541116A28630095817A /* QCrashReport.c in Sources */, + 3E636542116A28630095817A /* QMachOImage.c in Sources */, + 3E636543116A28630095817A /* QMachOImageList.c in Sources */, + 3E636544116A28630095817A /* QSymbols.c in Sources */, + 3E636545116A28630095817A /* QTaskMemory.c in Sources */, + 3E636546116A28630095817A /* OscMan.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8D11072C0486CEB800E47090 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -411,9 +531,66 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ + 3E636552116A28630095817A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)"; + ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64"; + ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1 = "ppc i386"; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INFOPLIST_FILE = "/Users/miyazaki/Documents/Xcode-workfolder/svnAlgorhythmics/FuckingFucker/Info copy.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", + ); + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\""; + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)\""; + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3 = "\"$(SRCROOT)\""; + PRODUCT_NAME = FuckingFucker; + SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; + VALID_ARCHS = "x86_64 i386 ppc"; + WRAPPER_EXTENSION = app; + ZERO_LINK = YES; + }; + name = Debug; + }; + 3E636553116A28630095817A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + ppc, + i386, + ); + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + INFOPLIST_FILE = "/Users/miyazaki/Documents/Xcode-workfolder/svnAlgorhythmics/FuckingFucker/Info copy.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", + ); + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\""; + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)\""; + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3 = "\"$(SRCROOT)\""; + PRODUCT_NAME = FuckingFucker; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; C01FCF4B08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1)"; + ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1 = "ppc i386"; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; @@ -431,6 +608,7 @@ LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)\""; LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3 = "\"$(SRCROOT)\""; PRODUCT_NAME = FuckingFucker; + VALID_ARCHS = "x386_64 i386 ppc"; WRAPPER_EXTENSION = app; ZERO_LINK = YES; }; @@ -464,10 +642,8 @@ C01FCF4F08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = ( - i386, - ppc, - ); + ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)"; + ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64"; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; LINKER_DISPLAYS_MANGLED_NAMES = NO; @@ -495,6 +671,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 3E636551116A28630095817A /* Build configuration list for PBXNativeTarget "FuckingFucker10.5" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3E636552116A28630095817A /* Debug */, + 3E636553116A28630095817A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "FuckingFucker" */ = { isa = XCConfigurationList; buildConfigurations = ( Modified: FuckingFucker/FuckingFuckerMan.cpp =================================================================== --- FuckingFucker/FuckingFuckerMan.cpp 2010-04-05 16:03:22 UTC (rev 133) +++ FuckingFucker/FuckingFuckerMan.cpp 2010-04-05 17:26:17 UTC (rev 134) @@ -33,6 +33,19 @@ //#include "auth.h" #include <Security/Authorization.h> + +#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 +#define FUCKINGSRR0 srr0 +#define FUCKINGEIP eip +#define FUCKINGRIP rip +#define FUCKINGR0 r0 +#else +#define FUCKINGSRR0 __srr0 +#define FUCKINGEIP __eip +#define FUCKINGRIP __rip +#define FUCKINGR0 __r0 +#endif + void *attachProcessHelper(void* arg); void *catchProcessHelper(void* arg); @@ -342,15 +355,19 @@ int err; task_t task; cpu_type_t cputype; - + bool is64Bit; err = task_for_pid(mach_task_self(), pid, &task); //TODO:are we leaking this? - err = QMOImageCreateFromTaskDyld(task, CPU_TYPE_X86, &dyld); - - cputype = GetTaskCPUType(dyld); + //first attempt 32 bit. if that fails, do 64 + + err = QMOImageCreateFromTaskDyld(task, CPU_TYPE_X86, &dyld); + if(!dyld) + err = QMOImageCreateFromTaskDyld(task, CPU_TYPE_X86_64, &dyld); + + is64Bit = IsTask64Bit(dyld); QMOImageDestroy(dyld); - if(cputype == CPU_TYPE_X86_64) + if(is64Bit) i386_64_init_attach_data(data); else i386_init_attach_data(data); @@ -510,7 +527,7 @@ //thread_set_exception_ports() - enable single stepping // we can get single step by bit ORing the 0x400UL bit to the srr0 (PC) register. for ppc i guess #define kOpDelayMicros 500 -#define kPrintTimerFireMicros 1000000 +#define kPrintTimerFireMicros 500 //#define kPrintTimerFireMicros 1000000 //returns -1 if no error int ppcAnalyzeState(task_t& port, void* thread_state, void* float_state, void* priv, int & printtimer) @@ -527,7 +544,10 @@ struct disassemble_info info;//for ppc sizeRead = sizeof(instruction); - err = vm_read_overwrite(port,(vm_address_t) ppc_state.srr0, sizeof(instruction), (vm_address_t) &instruction, &sizeRead); + + + err = vm_read_overwrite(port,(vm_address_t) ppc_state.FUCKINGSRR0, sizeof(instruction), (vm_address_t) &instruction, &sizeRead); + if ( (err == 0) && (sizeRead == sizeof(instruction)) ) { err = -1; } @@ -602,7 +622,7 @@ if(printtimer<0) { printtimer=kPrintTimerFireMicros; - FuckingFuckerMan::Instance()->AppendToOutput( [NSString stringWithFormat:@"pc: 0x%X(%f) inst: 0x%X( %s, %X) stacksize:%i\n",ppc_state.srr0,analysis->cursor,instruction,info.name,info.opval,frameCount]); + FuckingFuckerMan::Instance()->AppendToOutput( [NSString stringWithFormat:@"pc: 0x%X(%f) inst: 0x%X( %s, %X) stacksize:%i\n",ppc_state.FUCKINGSRR0,analysis->cursor,instruction,info.name,info.opval,frameCount]); } //turn it into a sample and insert it into the sound manager. @@ -611,12 +631,12 @@ //reset phase only if the instruction changed //set the min/max pc. - if(analysis->minpc>ppc_state.srr0) - analysis->minpc=ppc_state.srr0; - if(analysis->maxpc<ppc_state.srr0) - analysis->maxpc=ppc_state.srr0; + if(analysis->minpc>ppc_state.FUCKINGSRR0) + analysis->minpc=ppc_state.FUCKINGSRR0; + if(analysis->maxpc<ppc_state.FUCKINGSRR0) + analysis->maxpc=ppc_state.FUCKINGSRR0; - analysis->cursor = (float) (ppc_state.srr0-analysis->minpc)/analysis->maxpc; + analysis->cursor = (float) (ppc_state.FUCKINGSRR0-analysis->minpc)/analysis->maxpc; //send instruction to the osc guy if(FuckingFuckerMan::Instance()->IsOSCOn()) [[OscMan sharedMan] sendDiracWithPan:analysis->cursor]; @@ -642,7 +662,7 @@ //convert the unsigned int at the register to a float from -1.0 to 1.0 FuckingFuckerMan::Instance()->SetBufferValue( FuckingFuckerMan::Instance()->GetOpcodeAnalysis()->bufstart/*+randint(FuckingFuckerMan::Instance()->GetOpcodeAnalysis()->buflen)*/, /* (float)((*(&ppc_state.r0)+value)-INT_MAX)/INT_MAX * */coinflip()?1.0:-1.0 ); - FuckingFuckerMan::Instance()->GetOpcodeAnalysis()->lastreg= *((&ppc_state.r0)+value); + FuckingFuckerMan::Instance()->GetOpcodeAnalysis()->lastreg= *((&ppc_state.FUCKINGR0)+value); } } } @@ -668,16 +688,18 @@ i386_float_state_t& floatState = *((i386_float_state_t*) float_state); //it appears there are several really boring eip/pc values that are constant for all programs - skip these - if(threadState.eip == 0x90009CD7 || threadState.eip == 0x900248C7 || threadState.eip == 0x90037B57 - || threadState.eip == 0x90047DD7 || threadState.eip == 0x900248C7) + if(threadState.FUCKINGEIP == 0x90009CD7 || threadState.FUCKINGEIP == 0x900248C7 || threadState.FUCKINGEIP == 0x90037B57 + || threadState.FUCKINGEIP == 0x90047DD7 || threadState.FUCKINGEIP == 0x900248C7) return -1; //reset the print cursor info->desc_cursor = 0; - if(print_insn (threadState.eip, info)>0) + if(print_insn (threadState.FUCKINGEIP, info)>0) { - + //ignore ret opcodes + if(info->opcodebyte == 0xC3) + return -1; //get the actual instruction bytecode unsigned long long opcode = 0; struct dis_private* dis_priv = &info->private_data; @@ -692,7 +714,7 @@ if(printtimer<0) { printtimer=kPrintTimerFireMicros; - FuckingFuckerMan::Instance()->AppendToOutput( [NSString stringWithFormat:@"pc: 0x%X opcode:%qX byte:%.2X inst:(%s)\n",threadState.eip,opcode,(int)info->opcodebyte, info->desc]); + FuckingFuckerMan::Instance()->AppendToOutput( [NSString stringWithFormat:@"pc: 0x%X opcode:%qX byte:%.2X inst:(%s)\n",threadState.FUCKINGEIP,opcode,(int)info->opcodebyte, info->desc]); //start backtrace - doesnt work for intel mac core2duo // //QSymbols testSymbols; // QBTFrame * frames; @@ -748,12 +770,12 @@ //reset phase only if the instruction changed //set the min/max pc. - if(analysis->minpc>threadState.eip) - analysis->minpc=threadState.eip; - if(analysis->maxpc<threadState.eip) - analysis->maxpc=threadState.eip; + if(analysis->minpc>threadState.FUCKINGEIP) + analysis->minpc=threadState.FUCKINGEIP; + if(analysis->maxpc<threadState.FUCKINGEIP) + analysis->maxpc=threadState.FUCKINGEIP; - analysis->cursor = (float) (threadState.eip-analysis->minpc)/analysis->maxpc; + analysis->cursor = (float) (threadState.FUCKINGEIP-analysis->minpc)/analysis->maxpc; analysis->phase = ((float)info->opcodebyte/256.0)*M_PI; analysis->freq = 0.1+exp2cursor((float)info->opcodebyte/256.0)*5.0;//allow aliasing. analysis->buflen =((float)info->opcodebyte/256.0)*kFFManAudioBufferSize*0.5+512; @@ -799,18 +821,21 @@ x86_thread_state64_t& threadState = *((x86_thread_state64_t*) thread_state); x86_float_state64_t& floatState = *((x86_float_state64_t*) float_state); - //it appears there are several really boring eip/pc values that are constant for all programs - skip these - if(threadState.rip == 0x90009CD7 || threadState.rip == 0x900248C7 || threadState.rip == 0x90037B57 - || threadState.rip == 0x90047DD7 || threadState.rip == 0x900248C7) + //it appears there are several really boring FUCKINGEIP/pc values that are constant for all programs - skip these + if(threadState.FUCKINGRIP == 0x90009CD7 || threadState.FUCKINGRIP == 0x900248C7 || threadState.FUCKINGRIP == 0x90037B57 + || threadState.FUCKINGRIP == 0x90047DD7 || threadState.FUCKINGRIP == 0x900248C7) return -1; //reset the print cursor info->desc_cursor = 0; - if(print_insn (threadState.rip, info)>0) + if(print_insn (threadState.FUCKINGRIP, info)>0) { - - //get the actual instruction bytecode + //ignore ret opcodes + if(info->opcodebyte == 0xC3) + return -1; + + //get the actual instruction bytecode unsigned long long opcode = 0; struct dis_private* dis_priv = &info->private_data; int opcodeLength = dis_priv->max_fetched - dis_priv->the_buffer; @@ -820,11 +845,13 @@ opcode= opcode << 8; } + + opcode_analysis* analysis = FuckingFuckerMan::Instance()->GetOpcodeAnalysis(); if(printtimer<0) { printtimer=kPrintTimerFireMicros; - FuckingFuckerMan::Instance()->AppendToOutput( [NSString stringWithFormat:@"pc: 0x%qX opcode:%qX byte:%.2X inst:(%s)\n",threadState.rip,opcode,(int)info->opcodebyte, info->desc]); + FuckingFuckerMan::Instance()->AppendToOutput( [NSString stringWithFormat:@"pc: 0x%qX opcode:%qX byte:%.2X inst:(%s)\n",threadState.FUCKINGRIP,opcode,(int)info->opcodebyte, info->desc]); //start backtrace - doesnt work for intel mac core2duo // //QSymbols testSymbols; // QBTFrame * frames; @@ -880,12 +907,12 @@ //reset phase only if the instruction changed //set the min/max pc. - if(analysis->minpc>threadState.rip) - analysis->minpc=threadState.rip; - if(analysis->maxpc<threadState.rip) - analysis->maxpc=threadState.rip; + if(analysis->minpc>threadState.FUCKINGRIP) + analysis->minpc=threadState.FUCKINGRIP; + if(analysis->maxpc<threadState.FUCKINGRIP) + analysis->maxpc=threadState.FUCKINGRIP; - analysis->cursor = (float) (threadState.rip-analysis->minpc)/analysis->maxpc; + analysis->cursor = (float) (threadState.FUCKINGRIP-analysis->minpc)/analysis->maxpc; analysis->phase = ((float)info->opcodebyte/256.0)*M_PI; analysis->freq = 0.1+exp2cursor((float)info->opcodebyte/256.0)*5.0;//allow aliasing. analysis->buflen =((float)info->opcodebyte/256.0)*kFFManAudioBufferSize*0.5+512; Modified: FuckingFucker/FuckingFuckerMan.h =================================================================== --- FuckingFucker/FuckingFuckerMan.h 2010-04-05 16:03:22 UTC (rev 133) +++ FuckingFucker/FuckingFuckerMan.h 2010-04-05 17:26:17 UTC (rev 134) @@ -24,8 +24,8 @@ volatile int bufstart; volatile int mode; volatile int lastreg; - volatile unsigned long minpc; - volatile unsigned long maxpc; + volatile unsigned long long minpc; + volatile unsigned long long maxpc; } opcode_analysis; Modified: FuckingFucker/OscMan.mm =================================================================== --- FuckingFucker/OscMan.mm 2010-04-05 16:03:22 UTC (rev 133) +++ FuckingFucker/OscMan.mm 2010-04-05 17:26:17 UTC (rev 134) @@ -116,7 +116,7 @@ // convStr=[[str substringToIndex:255] cStringUsingEncoding:[NSString defaultCStringEncoding]]; //else //convStr= [str cStringUsingEncoding:[NSString defaultCStringEncoding]]; - lo_send(t, "/s_new", "siiisf", "dirac", nodeID++, 1, 0, "pan", pan);//, loc, num+randSenderNum); + lo_send(t, "/s_new", "siiisf", "dirac", nodeID++, 1, 0, "pan", 1.0);// pan);//, loc, num+randSenderNum); lo_address_free(t); if(nodeID>10000) nodeID=1000; Modified: FuckingFucker/boincbacktrace/QBacktrace.c =================================================================== --- FuckingFucker/boincbacktrace/QBacktrace.c 2010-04-05 16:03:22 UTC (rev 133) +++ FuckingFucker/boincbacktrace/QBacktrace.c 2010-04-05 17:26:17 UTC (rev 134) @@ -129,6 +129,32 @@ #include <mach-o/arch.h> + +#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 +#define FUCKINGsrr0 srr0 +#define FUCKINGeip eip +#define FUCKINGebp ebp +#define FUCKINGesp esp +#define FUCKINGrip rip +#define FUCKINGrsp rsp +#define FUCKINGrbp rbp +#define FUCKINGr0 r0 +#define FUCKINGr1 r1 +#define FUCKINGlr lr +#else +#define FUCKINGsrr0 __srr0 +#define FUCKINGeip __eip +#define FUCKINGebp __ebp +#define FUCKINGesp __esp +#define FUCKINGrip __rip +#define FUCKINGrsp __rsp +#define FUCKINGrbp __rbp +#define FUCKINGr0 __r0 +#define FUCKINGr1 __r1 +#define FUCKINGlr __lr +#endif + + #if defined(__cplusplus) extern "C" { #endif @@ -314,11 +340,12 @@ } -cpu_type_t GetTaskCPUType(QMOImageRef qmoImage) +int IsTask64Bit(QMOImageRef qmoImage) { - const QBTArchInfo * arch; - arch = GetTaskArch(qmoImage); - return arch->cputype; +// const QBTArchInfo * arch; +// arch = GetTaskArch(qmoImage); + return QMOImageIs64Bit(qmoImage); + } ///////////////////////////////////////////////////////////////// #pragma mark ***** Backtrace Core @@ -1045,14 +1072,14 @@ err = 0; switch (context->threadStateFlavor) { case PPC_THREAD_STATE: - pc = ((const ppc_thread_state_t *) context->threadState)->srr0; - lr = ((const ppc_thread_state_t *) context->threadState)->lr; - r1 = ((const ppc_thread_state_t *) context->threadState)->r1; + pc = ((const ppc_thread_state_t *) context->threadState)->FUCKINGsrr0; + lr = ((const ppc_thread_state_t *) context->threadState)->FUCKINGlr; + r1 = ((const ppc_thread_state_t *) context->threadState)->FUCKINGr1; break; case PPC_THREAD_STATE64: - pc = ((const ppc_thread_state64_t *) context->threadState)->srr0; - lr = ((const ppc_thread_state64_t *) context->threadState)->lr; - r1 = ((const ppc_thread_state64_t *) context->threadState)->r1; + pc = ((const ppc_thread_state64_t *) context->threadState)->FUCKINGsrr0; + lr = ((const ppc_thread_state64_t *) context->threadState)->FUCKINGlr; + r1 = ((const ppc_thread_state64_t *) context->threadState)->FUCKINGr1; break; default: @@ -1594,14 +1621,14 @@ #else case x86_THREAD_STATE64: - pc = ((const x86_thread_state64_t *) context->threadState)->rip; - sp = ((const x86_thread_state64_t *) context->threadState)->rsp; - fp = ((const x86_thread_state64_t *) context->threadState)->rbp; + pc = ((const x86_thread_state64_t *) context->threadState)->FUCKINGrip; + sp = ((const x86_thread_state64_t *) context->threadState)->FUCKINGrsp; + fp = ((const x86_thread_state64_t *) context->threadState)->FUCKINGrbp; break; case x86_THREAD_STATE32: - pc = ((const x86_thread_state32_t *) context->threadState)->eip; - sp = ((const x86_thread_state32_t *) context->threadState)->esp; - fp = ((const x86_thread_state32_t *) context->threadState)->ebp; + pc = ((const x86_thread_state32_t *) context->threadState)->FUCKINGeip; + sp = ((const x86_thread_state32_t *) context->threadState)->FUCKINGesp; + fp = ((const x86_thread_state32_t *) context->threadState)->FUCKINGebp; break; #endif default: @@ -2465,8 +2492,8 @@ flavor = PPC_THREAD_STATE; state = (ppc_thread_state_t *) calloc(1, sizeof(*state)); if (state != NULL) { - state->srr0 = (uintptr_t) pc; - state->r1 = (uintptr_t) fp; + state->FUCKINGsrr0 = (uintptr_t) pc; + state->FUCKINGr1 = (uintptr_t) fp; } #elif TARGET_CPU_PPC64 ppc_thread_state64_t * state; @@ -2483,8 +2510,8 @@ flavor = x86_THREAD_STATE32; state = (x86_thread_state32_t *) calloc(1, sizeof(*state)); if (state != NULL) { - state->eip = (uintptr_t) pc; - state->ebp = (uintptr_t) fp; + state->FUCKINGeip = (uintptr_t) pc; + state->FUCKINGebp = (uintptr_t) fp; } #elif TARGET_CPU_X86_64 x86_thread_state64_t * state; Modified: FuckingFucker/boincbacktrace/QBacktrace.h =================================================================== --- FuckingFucker/boincbacktrace/QBacktrace.h 2010-04-05 16:03:22 UTC (rev 133) +++ FuckingFucker/boincbacktrace/QBacktrace.h 2010-04-05 17:26:17 UTC (rev 134) @@ -747,7 +747,7 @@ size_t * stateSizePtr ) __attribute__((noinline)); -cpu_type_t GetTaskCPUType(QMOImageRef qmoImage); + int IsTask64Bit(QMOImageRef qmoImage); #ifdef __cplusplus } Modified: FuckingFucker/boincbacktrace/QCrashReport.c =================================================================== --- FuckingFucker/boincbacktrace/QCrashReport.c 2010-04-05 16:03:22 UTC (rev 133) +++ FuckingFucker/boincbacktrace/QCrashReport.c 2010-04-05 17:26:17 UTC (rev 134) @@ -105,7 +105,49 @@ */ ///////////////////////////////////////////////////////////////// +#include "AvailabilityMacros.h" +#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 +#define FUCKINGsrr0 srr0 +#define FUCKINGsrr1 srr1 +#define FUCKINGeip eip +#define FUCKINGebp ebp +#define FUCKINGesp esp +#define FUCKINGeax eax +#define FUCKINGrip rip +#define FUCKINGrsp rsp +#define FUCKINGrbp rbp +#define FUCKINGr0 r0 +#define FUCKINGr1 r1 +#define FUCKINGrax rax +#define FUCKINGlr lr +#define FUCKINGvrsave vrsave +#define FUCKINGxer xer +#define FUCKINGctr ctr +#define FUCKINGcr cr +#define FUCKINGmq mq +#else +#define FUCKINGsrr0 __srr0 +#define FUCKINGsrr1 __srr1 +#define FUCKINGeip __eip +#define FUCKINGebp __ebp +#define FUCKINGesp __esp +#define FUCKINGeax __eax +#define FUCKINGrip __rip +#define FUCKINGrsp __rsp +#define FUCKINGrbp __rbp +#define FUCKINGrax __rax +#define FUCKINGr0 __r0 +#define FUCKINGr1 __r1 +#define FUCKINGlr __lr +#define FUCKINGvrsave __vrsave +#define FUCKINGxer __xer +#define FUCKINGctr __ctr +#define FUCKINGcr __cr +#define FUCKINGmq __mq +#endif + + #include "QCrashReport.h" // System interfaces @@ -118,6 +160,7 @@ #include <unistd.h> #include <stdlib.h> + // Put Mach includes inside extern "C" guards for the C++ build // because the Mach header files don't always have them. @@ -870,10 +913,10 @@ */ fprintf(f, "%s crashed with PPC Thread State:\n", threadID); #ifndef __LP64__ - fprintf(f, " srr0: 0x%08x srr1: 0x%08x vrsave: 0x%08x\n", state->srr0, state->srr1, state->vrsave); - fprintf(f, " xer: 0x%08x lr: 0x%08x ctr: 0x%08x mq: 0x%08x\n", state->xer, state->lr, state->ctr, state->mq); + fprintf(f, " srr0: 0x%08x srr1: 0x%08x vrsave: 0x%08x\n", state->FUCKINGsrr0, state->FUCKINGsrr1, state->FUCKINGvrsave); + fprintf(f, " xer: 0x%08x lr: 0x%08x ctr: 0x%08x mq: 0x%08x\n", state->FUCKINGxer, state->FUCKINGlr, state->FUCKINGctr, state->FUCKINGmq); - regBase = (const unsigned int *) &state->r0; + regBase = (const unsigned int *) &state->FUCKINGr0; #else fprintf(f, " srr0: 0x%08x srr1: 0x%08x vrsave: 0x%08x\n", state->__srr0, state->__srr1, state->__vrsave); fprintf(f, " xer: 0x%08x lr: 0x%08x ctr: 0x%08x mq: 0x%08x\n", state->__xer, state->__lr, state->__ctr, state->__mq); @@ -934,10 +977,10 @@ fprintf(f, "%s crashed with PPC Thread State:\n", threadID); #ifndef __LP64__ - fprintf(f, " srr0: 0x%016llx srr1: 0x%016llx vrsave: 0x%016x\n", state->srr0, state->srr1, state->vrsave); - fprintf(f, " cr: 0x%08x xer: 0x%016llx lr: 0x%016llx ctr: 0x%016llx\n", state->cr, state->xer, state->lr, state->ctr); + fprintf(f, " srr0: 0x%016llx srr1: 0x%016llx vrsave: 0x%016x\n", state->FUCKINGsrr0, state->FUCKINGsrr1, state->FUCKINGvrsave); + fprintf(f, " cr: 0x%08x xer: 0x%016llx lr: 0x%016llx ctr: 0x%016llx\n", state->FUCKINGcr, state->FUCKINGxer, state->FUCKINGlr, state->FUCKINGctr); - regBase = (const unsigned long long *) &state->r0; + regBase = (const unsigned long long *) &state->FUCKINGr0; #else fprintf(f, " srr0: 0x%016llx srr1: 0x%016llx vrsave: 0x%016x\n", state->__srr0, state->__srr1, state->__vrsave); fprintf(f, " cr: 0x%08x xer: 0x%016llx lr: 0x%016llx ctr: 0x%016llx\n", state->__cr, state->__xer, state->__lr, state->__ctr); @@ -998,7 +1041,7 @@ */ fprintf(f, "%s crashed with X86 Thread State (32-bit):\n", threadID); #ifndef __LP64__ - regBase = (const unsigned int *) &state->eax; + regBase = (const unsigned int *) &state->FUCKINGeax; #else regBase = (const unsigned int *) &state->__eax; #endif @@ -1054,7 +1097,7 @@ */ fprintf(f, "%s crashed with X86 Thread State (64-bit):\n", threadID); #ifndef __LP64__ - regBase = (const unsigned long long *) &state->rax; + regBase = (const unsigned long long *) &state->FUCKINGrax; #else regBase = (const unsigned long long *) &state->__rax; #endif Modified: FuckingFucker/i386opcodes.cpp =================================================================== --- FuckingFucker/i386opcodes.cpp 2010-04-05 16:03:22 UTC (rev 133) +++ FuckingFucker/i386opcodes.cpp 2010-04-05 17:26:17 UTC (rev 134) @@ -13361,7 +13361,9 @@ get64 (void) { bfd_vma x; -#ifdef BFD64 + +//FUCKING need 64 bit version.. +//#ifdef BFD64 unsigned int a; unsigned int b; @@ -13375,10 +13377,13 @@ b |= (*codep++ & 0xff) << 16; b |= (*codep++ & 0xff) << 24; x = a + ((bfd_vma) b << 32); -#else - abort (); - x = 0; -#endif + +//FUCKING need 64 bit version.. +//#else +// abort (); +// x = 0; +//FUCKING need 64 bit version.. +//#endif return x; } Modified: FuckingFucker/libportaudio.a =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mc...@us...> - 2010-04-05 16:03:28
|
Revision: 133 http://algorhythmics.svn.sourceforge.net/algorhythmics/?rev=133&view=rev Author: mchinen Date: 2010-04-05 16:03:22 +0000 (Mon, 05 Apr 2010) Log Message: ----------- liblo Modified Paths: -------------- FuckingFucker/liblo.a Modified: FuckingFucker/liblo.a =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mc...@us...> - 2010-04-05 04:01:13
|
Revision: 131 http://algorhythmics.svn.sourceforge.net/algorhythmics/?rev=131&view=rev Author: mchinen Date: 2010-04-05 04:01:07 +0000 (Mon, 05 Apr 2010) Log Message: ----------- adding 64 bit intel support (untested) Modified Paths: -------------- FuckingFucker/FuckingFuckerMan.cpp FuckingFucker/boincbacktrace/QBacktrace.c FuckingFucker/boincbacktrace/QBacktrace.h Modified: FuckingFucker/FuckingFuckerMan.cpp =================================================================== --- FuckingFucker/FuckingFuckerMan.cpp 2010-04-05 00:47:39 UTC (rev 130) +++ FuckingFucker/FuckingFuckerMan.cpp 2010-04-05 04:01:07 UTC (rev 131) @@ -60,6 +60,7 @@ //defined above the attach to process handler int ppcAnalyzeState(task_t&,void*, void*,void*, int& ); int i386AnalyzeState(task_t&,void*, void*,void*, int& ); +int i386_64AnalyzeState(task_t&,void*, void*,void*, int& ); //functions to be used with function pointers for arch specific mach params void ppcGetThreadState(thread_act_t target_thread, void* ppc_state,mach_msg_type_number_t* psc) @@ -146,13 +147,56 @@ //disasembly init data->priv = new disassemble_info_i386; init_disassemble_info_i386((disassemble_info_i386*)data->priv); - if(sizeof(int*) == 4) //system is 32-bit - ((disassemble_info_i386*)data->priv)->mach = bfd_mach_i386_i386; - else if(sizeof(int*) == 8) //system is 64-bit - ((disassemble_info_i386*)data->priv)->mach = bfd_mach_x86_64; + ((disassemble_info_i386*)data->priv)->mach = bfd_mach_i386_i386; + } +//for 64 bit intel (core 2 duo, i3/5/7, but not core duo) +//x86_thread_state64_t +void i386_64GetThreadState(thread_act_t target_thread, void* ppc_state,mach_msg_type_number_t* psc) +{ + *psc=x86_THREAD_STATE64_COUNT; + thread_get_state( target_thread, + x86_THREAD_STATE64, + (thread_state_t)ppc_state, + psc + ); +} +void i386_64GetFloatState(thread_act_t target_thread , void* ppc_state,mach_msg_type_number_t* psc) +{ + *psc=x86_FLOAT_STATE64_COUNT; + thread_get_state( target_thread, + x86_FLOAT_STATE64, + (thread_state_t)ppc_state, + psc + ); +} +void i386_64_cleanup_attach_data(struct attach_data* data) +{ + delete (x86_thread_state64_t*)data->thread_state; + delete (x86_float_state64_t*)data->float_state; +} + +void i386_64_init_attach_data(struct attach_data* data) +{ + //setup function pointers + data->pf_get_thread_state=&i386_64GetThreadState; + data->pf_get_float_state=&i386_64GetFloatState; + data->pf_cleanup_attach_data=&i386_64_cleanup_attach_data; + data->pf_analyze_state=&i386_64AnalyzeState; + data->thread_state = new x86_thread_state64_t; + data->float_state = new x86_float_state64_t; + data->pf_set_taskport=i386_set_taskport; //uses 32bit version. + + //disasembly init + data->priv = new disassemble_info_i386; + //we just have to hope this works using the same 32bit calls. + init_disassemble_info_i386((disassemble_info_i386*)data->priv); + ((disassemble_info_i386*)data->priv)->mach = bfd_mach_x86_64; +} + + struct catch_data{ char bsd_name[100]; int timeout_secs; @@ -273,8 +317,12 @@ return BFD_ENDIAN_BIG; } +cpu_type_t GetTaskCPUType(QMOImageRef qmoImage); void FuckingFuckerMan::AttachToProcess(int pid) { + if(pid ==0) + return; + struct attach_data* data = new attach_data; //start the sound if we haven't yet if(!FuckingAudioIO::Instance()->IsStarted()) @@ -286,7 +334,26 @@ if(machineEndianness()==BFD_ENDIAN_LITTLE) { - i386_init_attach_data(data); + //intel we have to check the task to see what we are attaching to. + //this is because 64bit machines can run 32 bit processes. + //we do this by running the test + //CPU_TYPE_X86 or CPU_TYPE_X86_64 for 2nd param cputype - doesn't matter which + QMOImageRef dyld = NULL; + int err; + task_t task; + cpu_type_t cputype; + + + err = task_for_pid(mach_task_self(), pid, &task); //TODO:are we leaking this? + err = QMOImageCreateFromTaskDyld(task, CPU_TYPE_X86, &dyld); + + cputype = GetTaskCPUType(dyld); + QMOImageDestroy(dyld); + + if(cputype == CPU_TYPE_X86_64) + i386_64_init_attach_data(data); + else + i386_init_attach_data(data); } else { @@ -723,6 +790,140 @@ return -1; } + +int i386_64AnalyzeState(task_t& port, void* thread_state, void* float_state, void* priv, int & printtimer) +{ + struct attach_data& attach = *((struct attach_data*)priv) ; + disassemble_info_i386* info = (disassemble_info_i386* ) attach.priv; + + x86_thread_state64_t& threadState = *((x86_thread_state64_t*) thread_state); + x86_float_state64_t& floatState = *((x86_float_state64_t*) float_state); + + //it appears there are several really boring eip/pc values that are constant for all programs - skip these + if(threadState.rip == 0x90009CD7 || threadState.rip == 0x900248C7 || threadState.rip == 0x90037B57 + || threadState.rip == 0x90047DD7 || threadState.rip == 0x900248C7) + return -1; + + //reset the print cursor + info->desc_cursor = 0; + + if(print_insn (threadState.rip, info)>0) + { + + //get the actual instruction bytecode + unsigned long long opcode = 0; + struct dis_private* dis_priv = &info->private_data; + int opcodeLength = dis_priv->max_fetched - dis_priv->the_buffer; + for(int i = 0; i<opcodeLength;i++) + { + opcode+=dis_priv->the_buffer[i]; + opcode= opcode << 8; + } + + opcode_analysis* analysis = FuckingFuckerMan::Instance()->GetOpcodeAnalysis(); + if(printtimer<0) + { + printtimer=kPrintTimerFireMicros; + FuckingFuckerMan::Instance()->AppendToOutput( [NSString stringWithFormat:@"pc: 0x%qX opcode:%qX byte:%.2X inst:(%s)\n",threadState.rip,opcode,(int)info->opcodebyte, info->desc]); +//start backtrace - doesnt work for intel mac core2duo +// //QSymbols testSymbols; +// QBTFrame * frames; +// size_t frameToAllocate; +// size_t frameCount; +// frameToAllocate = 15; +// //testSymbols.didSuspend = true; +// +// +//frames = (QBTFrame *) calloc(frameToAllocate, sizeof(QBTFrame)); +// +// +// int btres = QBacktraceMachThreadState( +// port, +// /*flavor = */x86_THREAD_STATE32, //x86_THREAD_STATE32; +// &threadState, +// sizeof(i386_thread_state_t), +// CPU_TYPE_X86,// QMOGetLocalCPUType(), +// NULL,// &testSymbols,//symRef, +// 0, +// 0, +// frames, +// frameToAllocate, +// &frameCount +// ); +// char* space; +// space = (char*) malloc(frameToAllocate+1); +// //fill it with holes +// memset(space,' ',frameToAllocate); +// //terminate it +// space[frameToAllocate]=0; +// if(btres==0) +// { +// for(int i=0;i<mymin(frameCount,frameToAllocate);i++) +// { +// //adds indentation by using pointer arithmathic and the spaces string +// FuckingFuckerMan::Instance()->AppendToOutput( [NSString stringWithFormat: +// @"%spc:%qX fp:%qX %s %s\n", +// space+frameToAllocate-i,frames[i].pc,frames[i].fp,frames[i].symbol?frames[i].symbol:"(no symbol)",frames[i].library?frames[i].library:"" ]); +// +// } +// } +// free(space); +// QBacktraceDisposeSymbols(frames,frameToAllocate); +//// QBacktraceDisposeSymbols(frames,mymin(frameCount,frameToAllocate)); +// free(frames); +////end backtrace + + } + //turn it into a sample and insert it into the sound manager. + //the op alone ranges from 0-0x3f (0-191) + //translate into phase and frequency for now. + //reset phase only if the instruction changed + + //set the min/max pc. + if(analysis->minpc>threadState.rip) + analysis->minpc=threadState.rip; + if(analysis->maxpc<threadState.rip) + analysis->maxpc=threadState.rip; + + analysis->cursor = (float) (threadState.rip-analysis->minpc)/analysis->maxpc; + analysis->phase = ((float)info->opcodebyte/256.0)*M_PI; + analysis->freq = 0.1+exp2cursor((float)info->opcodebyte/256.0)*5.0;//allow aliasing. + analysis->buflen =((float)info->opcodebyte/256.0)*kFFManAudioBufferSize*0.5+512; + //analysis->bufstart = randfloat(mymin(1.0,analysis->cursor+0.3))*(kFFManAudioBufferSize-analysis->buflen); + + FuckingFuckerMan::Instance()->GetOpcodeAnalysis()->bufstart = randint(kFFManAudioBufferSize-FuckingFuckerMan::Instance()->GetOpcodeAnalysis()->buflen); + analysis->mode = info->opcodebyte%4;//4 modes + + //for(int j=0;j<info.numoperands;j++) +// { +// struct powerpc_operand *operand; +// long value; //holds the register number or the absolute value if one is specified +// operand = &info.operands[j]; +// value = operand_value_powerpc (operand, instruction, 1); +// if ((operand->flags & PPC_OPERAND_GPR) != 0 +// || ((operand->flags & PPC_OPERAND_GPR_0) != 0 && value != 0)) +// { +// //convert the unsigned int at the register to a float from -1.0 to 1.0 +// FuckingFuckerMan::Instance()->SetBufferValue( FuckingFuckerMan::Instance()->GetOpcodeAnalysis()->bufstart/*+randint(FuckingFuckerMan::Instance()->GetOpcodeAnalysis()->buflen)*/, +// /* (float)((*(&ppc_state.r0)+value)-INT_MAX)/INT_MAX * */coinflip()?1.0:-1.0 ); +// FuckingFuckerMan::Instance()->GetOpcodeAnalysis()->lastreg= *((&ppc_state.r0)+value); +// } +// } +// + if(FuckingFuckerMan::Instance()->IsOSCOn()) + [[OscMan sharedMan] sendDiracWithPan:analysis->cursor]; + + } + else + { + return -2; + } + +return -1; +} + + + //attached thread. long operand_value_powerpc (const struct powerpc_operand *operand, @@ -741,8 +942,9 @@ task_t port; pid = attach->targetPID; kern_return_t errCode; - errCode=task_for_pid(mach_task_self(), pid, &port); + errCode=task_for_pid(mach_task_self(), pid, &port); //TODO:are we leaking this? + //Fetch more info about the process thread_act_port_array_t thread_list; mach_msg_type_number_t thread_count; Modified: FuckingFucker/boincbacktrace/QBacktrace.c =================================================================== --- FuckingFucker/boincbacktrace/QBacktrace.c 2010-04-05 00:47:39 UTC (rev 130) +++ FuckingFucker/boincbacktrace/QBacktrace.c 2010-04-05 04:01:07 UTC (rev 131) @@ -273,6 +273,7 @@ static const QBTArchInfo kArchitectures[]; // forward declaration + static const QBTArchInfo * GetTaskArch(QMOImageRef qmoImage) // Returns a pointer to the architecture associated with the specific // task, or NULL if it's an architecture we don't know about. @@ -312,6 +313,13 @@ return result; } + +cpu_type_t GetTaskCPUType(QMOImageRef qmoImage) +{ + const QBTArchInfo * arch; + arch = GetTaskArch(qmoImage); + return arch->cputype; +} ///////////////////////////////////////////////////////////////// #pragma mark ***** Backtrace Core Modified: FuckingFucker/boincbacktrace/QBacktrace.h =================================================================== --- FuckingFucker/boincbacktrace/QBacktrace.h 2010-04-05 00:47:39 UTC (rev 130) +++ FuckingFucker/boincbacktrace/QBacktrace.h 2010-04-05 04:01:07 UTC (rev 131) @@ -747,6 +747,8 @@ size_t * stateSizePtr ) __attribute__((noinline)); +cpu_type_t GetTaskCPUType(QMOImageRef qmoImage); + #ifdef __cplusplus } #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |