Here's what I want my program to do. What's the best way to achieve this? (newbie)

Discussion in 'Mac Programming' started by bluesdance, Oct 14, 2013.

  1. bluesdance, Oct 14, 2013
    Last edited: Oct 14, 2013

    bluesdance macrumors newbie

    Mar 27, 2006
    Dear friends,
    I recently created this video on Keynote:

    My goal now is to turn this concept into an interactive OS X app. I want the user to be able to freely drag the inner shape around to line up with the notes of his/her choosing. I want the user to be able to click on different note names to hear the notes. Etc.

    My question for you is:
    WHAT is the most straightforward way to accomplish this?

    I downloaded XCode and started reading some tutorials. It seems I need to learn Objective-C, then (I guess?) study OpenGL so I can use graphics, or maybe Quartz Composer has something to do with it? Not sure.

    My programming background is minimal, but I am willing to put in hours to study and learn whatever it is I need to learn in order to make this happen...

  2. ArtOfWarfare macrumors G3


    Nov 26, 2007
    Why do you want this to be an OS X app?

    It seems to me that based on the skill you have right now with Keynote, and the fact you already have put all your assets together in Keynote, you may as well just make your presentation interactive. Keynote offers the ability to make it so that clicking on certain spots of your slide will play certain sounds or trigger certain animations... presentations need not be linear, though they often are. I think that'll be adequate for you, won't it?

    In any event, OpenGL is going to be serious overkill for those graphics. The things you'll need to learn to make this an OS X app are:
    - The C programming language
    - Obj-C, a descendent of C.
    - Possibly C++, another descendent of C... I have found that it's easier to handle audio tasks in C++ than C or Obj-C.
  3. xStep macrumors 68000

    Jan 28, 2003
    Less lost in L.A.

    I'd have to watch and pay closer attention to your video to see if I missed some subtlety but here are some thoughts.

    If the images and lines do not change when changing rotation, then you could create the graphics in a graphics app and use those to minimize any extra graphics coding. If something like the color of the connector lines change, then you'd likely want to learn some basic Core Graphics coding or create multiple images.

    Thinking in layers, you could build up your graphics assets based on their placement and use. For instance the dark circle and gray boxes within it could be a static background image. The dial, tone lines could be two other images. The button images would be another collection placed on top.

    When using the dial, the appropriate buttons would appear and disappear as needed. With some fancy coding, you could even do that animation you display to toss away some buttons. I'd have to give more though on the actual selection process.

    Personally I'd just use Core Graphics to do most if not all of the graphics. First, it would be a nice little challenge. Second, I could make it scalable to the display density and window size.

    I haven't played with audio yet, but I believe there are some easy calls to perform the simple thing your trying to do.
  4. bluesdance thread starter macrumors newbie

    Mar 27, 2006
    I want the user to be able to manually drag the polygon around and have it spin around the central axis as s/he drags; the user should be able to drop the "do" point at any of the twelve notes of the scale and have the program intelligently change things around (i.e. changing sharps to flats, dropping in an F flat or E sharp as needed) to reflect where "do" has been dropped. In the long run, I want to have a little menu on the side to allow the user to change to different types of scales, chords, intervals, and modes i.e. harmonic minor, mixolydian, major 7th chord, perfect 5th, etc. that would yield different polygonal shapes; I want the user to be able to draw his or her own lines to make an original tone row; there's a LOT that I'd like to be able to do that Keynote doesn't support.

    …Oh yeah and as the shape is dragged, I want the text to remain right side up at all times. :cool:

    For an idea of what's inspiring me in this project, see this video:

    especially the last five minutes.

    And I want it to be a Mac app, rather than iOS, because I want to use it with my smart board (which is actually a "Promethean" board) in my classroom.

    Right now I'm reading the beginning of "Become An XCoder". Learning about declaring variables and the like. Down the road I'll try to learn about Core Graphics. Thanks!!!!
  5. devilofspades macrumors member

    Jul 20, 2011
    you definitely don't need to worry about opengl. since this is a 2d concept, quartz / core graphics is going to be your ground work if you want to implement custom drawing that will translate to os x as well as ios devices. otherwise you could use pre rendered images. apple just released their new "spritekit" api which may be an easier entry point to the particle animation in your video if thats what you are after for "effects". if you have previous programming experience objective-c is a breeze to pick up. if not i will say the same thing i say to everyone looking to get into objective-c...learn as much about c as you can first! i can't stress this point enough. a lot of people will poo poo that notion, but this is flat out ignorance. objective-c is c under the hood. all of the lower level api that apple provides for graphics, animation, etc are all c based and use traditional non object oriented c functions. thats not to say you can't do quite a bit in the higher level api's that are objective-c / object oriented, but you will hit a road block not having a solid understanding of core c concepts.
  6. bdrake47 macrumors regular

    Jul 28, 2012
    Cool video Yakov!

    I can't help you with the programming, I'm still learning Xcode myself, but I did learn from your video what a major scale is.:cool:

Share This Page