6 Replies - 3023 Views - Last Post: 20 November 2012 - 09:20 AM

#1 NecroWinter  Icon User is offline

  • D.I.C Regular

Reputation: 38
  • View blog
  • Posts: 321
  • Joined: 21-October 11

working on music software, what are good resources?

Posted 18 November 2012 - 08:29 PM

im not sure if this is the right sub forum, so if i posted in the wrong one please move it, sorry.

As a musician and a person who will be graduating soonish, I was thinking what it would be like working on software to be used by musicians. The problem is, i have zero experience with this and I dont even know where to start with it. What kind of books should I look up to prepare me to actually work on software with audio, and what else should I know? Im looking for a general over view kind of thing, because I dont know where specifically I would like to focus my programming ability for audio production. What kind of math is necessary, what books are good to learn, what kind of documentation should I be looking at and any kind of meaningful help a person can throw at me will be appreciated.

(and before people with obvious emotional problems step in, no I dont think that im going to be handed a job after graduation, nor do I believe anything that is a variation of this theme...)

This post has been edited by NecroWinter: 18 November 2012 - 08:30 PM


Is This A Good Question/Topic? 0
  • +

Replies To: working on music software, what are good resources?

#2 tlhIn`toq  Icon User is offline

  • Please show what you have already tried when asking a question.
  • member icon

Reputation: 5678
  • View blog
  • Posts: 12,213
  • Joined: 02-June 10

Re: working on music software, what are good resources?

Posted 19 November 2012 - 05:41 PM


My standard beginner resources post


We have a tutorials section and a learning C# series of articles.

First learn the language by working 2-5 "Learn C# in 30 days" type books cover to cover. Do a couple hundred on-line tutorial projects where you build what you're told to build, the way you are told to build it WITH AN EXPLANATION OF WHY so you can learn.

Then later you can start architecting your own simple stuff. Build a calculator. Build a DVD library program. Etc. Stuff that doesn't involve the complexity of a game. Then move up to games.



There are three routes people seem to take when learning programming.
  • Just start trying to create programs
  • Start taking apart other programs and try to figure out the language by reverse engineering
  • Follow a guided learning course (school or self-teaching books)


For the life of me I can't figure out why people try 1 & 2. I strongly suggest taking the guided learning approach. Those book authors go in a certain order for a reason: They know what they're doing and they know the best order to learn the materials.

Quote

Where do I start?


You start by learning a coding language FIRST.
Learn to plan before you type.
THEN you start designing software with a purpose.


If this sounds like you

Newbie/Rookie said:

I have a little programming experience but I need to write ...
read this section
Spoiler


Otherwise, you can just jump to the resources here:
Some of the tutorials below are for C# or Java not C, C++, VB.NET [...]. But the conceptual stuff of classes, object oriented design, events etc. are not language specific and should give you enough guidance in theory of program development for you to be able to look-up specific code example in your chosen coding language.



Resources, references and suggestions for new programmers. - Updated Oct 2012
Spoiler



Intermediate:
OOP design patterns


Microsoft Events (webcasts and podcasts)
The tutorials below walk through making an application including inheritance, custom events and custom controls, object serialization and more.
Quick and easy custom events
Bulding an application - Part 1
Building an application - Part 2
Separating data from GUI - PLUS - serializing the data to XML
WPF version (WPF-MVVM data binding)
Passing values between forms/classes
Decouple your multi-threaded work from the GUI so forms don't hang

Working with environmental variables
'Why do we use delegates?' thread
And everyone always wants to connect to a database, right out of the gate so Database tutorials right here on DIC

C# Cookbooks
Are a great place to get good code, broken down by need, written by coding professionals. You can use the code as-is, but take the time to actually study it. These professionals write in a certain style for a reason developed by years of experience and heartache.

Everyone:
Debugging tutorial
Debugging tips
Debugging in detail
Great debugging tips
It still doesn't work, article

I urge you to work through the C# learning series here on DIC, and to work a self-teaching book from cover to cover before you even think about designing your own applications.
Microsoft Visual Studio Tips, 251 ways to improve your productivity, Microsoft press, ISBN 0-7356-2640-5 Has many, many great, real-world tips that I use all the time.

These are just good every-day references to put in your bookmarks.
MSDN C# Developers Center with tutorials
Welcome to Visual Studio
Free editions of Visual Studio 2010
Student editions of Visual Studio


Windows Presentation Foundation:
Create Animations Programmatically

Some of my common tips (some may apply more than others to your specific style):
  • You have to program as if everything breaks, nothing works, the cyberworld is not perfect, the attached hardware is flakey, the network is slow and unreliable, the harddrive is about to fail, every method will return an error and every user will do their best to break your software. Confirm everything. Range check every value. Make no assumptions or presumptions.

  • Take the extra 3 seconds to rename your controls each time you drag them onto a form. The default names of button1, button2... button54 aren't very helpful. If you rename them right away to something like btnOk, btnCancel, btnSend etc. it helps tremendously when you make the methods for them because they are named after the button by the designer.btnSend_Click(object sender, eventargs e) is a lot easier to maintain than button1_click(object sender, eventargs e)

  • You aren't paying for variable names by the byte. So instead of variables names of a, b, c go ahead and use meaningful names like index, timeOut, row, column and so on. You should avoid 'T' for the timer. Amongst other things 'T' is commonly used throughout C# for Type and this will lead to problems. There are naming guidelines you should follow so your code confirms to industry standards. It makes life much easier on everyone around you, including those of us here to help. If you start using the standards from the beginning you don't have to retrain yourself later.
    You might want to look at some of the naming guidelines. Its a lot easier to start with good habits than to break bad habits later and re-learn.



  • Try to avoid having work actually take place in GUI control event handlers. It is better to have the GUI handler call other methods so those methods can be reused and make the code more readable. This is also how you can send parameters rather than use excessive global variables. Get in this habit even if you are using WinForms because WPF works a lot under the idea of "commands" and this will get you working towards that. Think of each gester, control click, menu option etc. as a command to do something such as a command to SAVE. It doesn't matter where the command comes from, all sources should point at the same target to do the actual saving.
    Spoiler


  • Don't replace lines of code that don't work. Instead comment them out and put your new attempts below that. This will keep you from re-trying the same ideas over and over. Also, when you come back to us saying "I've tried this 100 different ways and still can't get it", we can actually see what you tried. So often a failed attempt is very very close and just needs a little nudge in the right direction. So if we can say "See what you did in attempt 3... blah blah" it helps a lot

    Spoiler

    If you are using Visual Studio you can select a block of lines and hit control+k control+c (Kode Comment) to comment it out. control+k control+u (Kode Uncomment) to uncomment a selected block.


  • I strongly suggest installing VMware or some other virtualization technology on your development PC so you can create a couple virtual computers for testing. This would allow you to debug and test inside: WinXP32, XP64, Vista, Win7x32, Win7x64... etc. without having to actually have 5 physical PC's. Visual Studio will let you send the debug directly into one of these virtual machines so you can watch it operate, check its variables, see the crashes and so on just as if it were debugging on your real machine.

  • This can't be stressed enough in today's world of cell phone messaging:
    Don't use txt/sms/leet/T9 speak like: u no, u r, dnt, wut i m do-n, coz, al gud, b4, ny1, sum1, please and so on like this guy:

    Spoiler


[/spoiler]

This post has been edited by tlhIn`toq: 19 November 2012 - 05:42 PM

Was This Post Helpful? 1
  • +
  • -

#3 NecroWinter  Icon User is offline

  • D.I.C Regular

Reputation: 38
  • View blog
  • Posts: 321
  • Joined: 21-October 11

Re: working on music software, what are good resources?

Posted 19 November 2012 - 10:43 PM

I was thinking more about the mathematics of music, and some information about how various audio manipulation techniques are done by machines. I was thinking that a book on these topics could be given, I dont even really know where to look for this topic, so thats why I made a thread.
Was This Post Helpful? 0
  • +
  • -

#4 macosxnerd101  Icon User is offline

  • Self-Trained Economist
  • member icon




Reputation: 10821
  • View blog
  • Posts: 40,340
  • Joined: 27-December 08

Re: working on music software, what are good resources?

Posted 19 November 2012 - 10:46 PM

I did a quick Google search and got the following:
http://blogs.msdn.co...epresented.aspx
http://mitpress.mit....rogramming-book
Was This Post Helpful? 1
  • +
  • -

#5 depricated  Icon User is online

  • RISC Architecture is going to change everything.

Reputation: 929
  • View blog
  • Posts: 3,009
  • Joined: 13-September 08

Re: working on music software, what are good resources?

Posted 20 November 2012 - 06:28 AM

Awesome post tlhIn`toq, thanks for sharing.

I have a question on something you mentioned. I've avoided large IDEs for the most part, because I've heard that I should learn to write without them so that I don't use their features as a crutch.

As such, though I own a copy of Visual Studios 2010, I've never installed it, and only used it for VB.NET in school. The VMWare debugging feature you mentioned sounds really useful though. Is that an obvious feature if I poke around the VS interface, or does that take a more in-depth setup?
Was This Post Helpful? 0
  • +
  • -

#6 tlhIn`toq  Icon User is offline

  • Please show what you have already tried when asking a question.
  • member icon

Reputation: 5678
  • View blog
  • Posts: 12,213
  • Joined: 02-June 10

Re: working on music software, what are good resources?

Posted 20 November 2012 - 07:54 AM

Modern software is simply far too complex to not use modern IDE's for.
There are easily a half million calls in the .NET framework. If it weren't for the Intellisense feature of Visual Studio you couldn't effectively make use of the framework.

Anyone saying you should be writing WPF software in Notepad is a fool from the days of single threaded 1980's BASIC.
Was This Post Helpful? 0
  • +
  • -

#7 wordswords  Icon User is offline

  • D.I.C Regular
  • member icon

Reputation: 76
  • View blog
  • Posts: 272
  • Joined: 17-December 11

Re: working on music software, what are good resources?

Posted 20 November 2012 - 09:20 AM

View PostNecroWinter, on 20 November 2012 - 05:43 AM, said:

I was thinking more about the mathematics of music, and some information about how various audio manipulation techniques are done by machines. I was thinking that a book on these topics could be given, I dont even really know where to look for this topic, so thats why I made a thread.


Look up digital signal processing and analog signal processing. There is a lot of math in music creation. I would recommend looking at the software 'Max/MSP' in order to experiment with creating software-based instruments.

This post has been edited by wordswords: 20 November 2012 - 09:52 AM

Was This Post Helpful? 2
  • +
  • -

Page 1 of 1