New Linux Open Orchestra!

What other apps and distros do you use to round out your studio?

Moderators: MattKingUSA, khz

fortea
Established Member
Posts: 6
Joined: Wed Aug 15, 2012 12:20 pm

New Linux Open Orchestra!

Post by fortea »

Hi!
I'm new in this forum. I'm Italian, so sorry for my english.
This post is to announce that I just started to work on London Philarmonia Orchestra samples to create a new Open Orchestra optimized for Linux.

I wrote a script in python to automatically create the sfz files. I used ffmpeg to convert mp3 files to wav. You can download zip packages with mp3 samples from the website above selecting ONLY the instrument and clicking on the link at the top of the table; put them in a new directory, unzip and launch the script.
I can control 'velocity', 'lokey', 'hikey' and 'pitch_keycenter'. I'm going to control also the 'tune' option using aubio.

Ihave to say, I'm not very expert with sfz files, so I would ask you all to help me on some points.
1) Is it possible to use multiple sample per note in one sfz files? for example, I have 4 sample of the note e4. Can I insert all them in a sfz to play simultaneously all the samples?

2)what options would you use to create this orchestra from London Philarmonia samples?

3)Do you want help me?


Here the script I wrote in python:

Code: Select all

#! /usr/bin/env python
#
#
#Copyright 2012
#This program is free software: you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation, either version 3 of the License, or
#any later version.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details, <http://www.gnu.org/licenses/gpl.txt>.

import os
import re
import subprocess

articulation={'1': 'normal', '2': 'legato', '3': 'nonlegato', '4': 'staccato', '5': 'staccatissimo', '6': 'tongued_slur', '7': 'tenuto', '8': 'double_tonguing', '9': 'triple_tonguing', '10': 'fluttertonguing', '11': 'vibrato', '12': 'glissando', '13': 'harmonic', '14': 'major_trill', '15': 'minor_trill', '16': 'tremolo', '17': 'subtone', '18': 'multiphonic', '19': 'air_note', '20': 'slap_tongue', '21': 'key_click', '22': 'growl', '23': 'mute', '24': 'phrase', '25': 'breath_attacks', '26': 'bucket mute', '27': 'cup mute', '28': 'harmon mute', '29': 'waa-waa mute', '30': 'plunger mute', '31': 'wooden mute', '32': 'metal_mute', '33': 'scraped', '34': 'rubbed', '35': 'squeezed', '36': 'blown', '37': 'bowed', '38': 'with_snares', '39': 'without_snares', '40': 'struck_together', '41': 'struck_singly', '42': 'shaken', '43': 'hummed', '44': 'plucked', '45': 'damped', '46': 'undamped', '47': 'clean', '48': 'effect', '49': 'roll', '50': 'flam', '51': 'rhythm', '52': 'rimshot', '53': 'centre', '54': 'muffled', '55': 'ruff', '56': 'body_of_instrument', '57': 'mouth', '58': 'brushes', '59': 'hotrods', '60': 'rute', '61': 'snare_sticks', '62': 'hard_mallet', '63': 'vibe_mallet_damped', '64': 'vibe_mallet_undamped', '65': 'soft_sticks', '66': 'medium_sticks', '67': 'soft_beaters', '68': 'hard_beaters', '69': 'sticks', '70': 'vibe', '71': 'bass_drum_mallet', '72': 'vibe_mallets', '73': 'body', '74': 'hand', '75': 'hard_sticks', '76': 'pres de la table', '77': 'bisbigliando', '78': 'harmonics', '79': 'strumming', '80': 'struck_body', '81': 'struck_strings', '82': 'pizzicato', '83': 'snap', '84': 'rasguardo', '85': 'trill', '86': 'with_couplers', '87': 'arco_major_trill', '88': 'arco_minor_trill', '89': 'arco_glissando', '90': 'arco_harmonic', '91': 'arco_normal', '92': 'arco_au_talon', '93': 'arco_punta_darco', '94': 'arco_col_legno_tratto', '95': 'arco_col_legno_battuto', '96': 'arco_sul_ponticello', '97': 'arco_sul_tasto', '98': 'arco_detache', '99': 'arco_legato', '100': 'arco_tenuto', '101': 'arco_portato', '102': 'arco_staccato', '103': 'arco_spiccato', '104': 'arco_martele', '105': 'arco_ricochet', '106': 'arco_tremolo', '107': 'pizz_normal', '108': 'snap_pizz', '109': 'pizz_tremolo', '110': 'pizz_quasi_guitar', '111': 'molto_vibrato', '112': 'non_vibrato', '113': 'pizz_glissando', '114': 'harmonic_glissando', '115': 'con_sord', '116': 'natural_harmonic', '117': 'artificial_harmonic', '118': 'behind_bridge', '119': 'on_bridge', '120': 'tailpiece', '121': 'striking_strings', '122': 'chord' }





def CreateSfz(directory):
#"Main function to create sfz files in london philarmonia instrument directory"	
	name=directory[13:-16]
	os.mkdir(name)

	for art in articulation.keys():				 #selecting articulation
		v=0					 	 #number of different velocity for articulation
		samples=[]					 #this is the list of tuples wich will contain (velocity, 'note', 'file'), see line 25
		notes=[]
		
		for vel in range(5,11):		 	 	 #selecting velocity
			flag=0
			regex=re.compile('.*_[^7]_%d_'%vel+art+'.mp3') #this '7' corresponds to "phrase"...
			for FILE in os.listdir(directory):
				if regex.match(FILE):
					flag=1
					ffmpeg=['ffmpeg', '-i', directory+'/'+FILE, name+'/'+FILE[:-3]+'wav']
					print 'Converting '+FILE+' to wav...\r',
					p=subprocess.Popen(ffmpeg, stdout=subprocess.PIPE, stderr=subprocess.STDOUT).communicate()[0]
					samples.append(FILE[:-4]+'.wav')
					notes.append((vel, FILE.split('_')[2]))
					#selecting files corresponding to articulation and velocity, saving with (velocity, 'note', 'file')
			if flag==1: v+=1
		if v!= 0:
			OrchestraSfz(samples, notes, v, art, name) #notes is sorted using the first element of tuples, in this case velocity
#			SoloSfz(notes, v, art, directory)






def OrchestraSfz(samples, notes, v, art, name):
#"Create sfz for solo instrument, choicing a pseudo-casual sample to use"
	out_file=open(name+'-'+articulation[art]+'.sfz', 'w')	#directory[13:-16] is the instrument name
	old_vel=''
	hivel=0
	t=0
	
	j=0
	samples.sort
	notemap=sorted(set(notes))
	print '\nCreating '+out_file.name+'...'
	for a in notemap:					#taking parameters to print the sfz file
		note=int(a[1])	
		vel=a[0]
	
		if vel != old_vel:				#velocity!			
			j+=1
			lovel=hivel+1
			hivel=(127/v)*j
			if j==v: hivel=127
			out_file.write('<group>\nlovel=%d\nhivel=%d\n\n'%(lovel, hivel))
			old_vel=vel
			last=0
		
		if last==0:					#lokey and hikey 
			lownote=0
		else:
			n=(note-last)/2					
			if ((note-last)%2)==0: n-=1
			lownote=note-n
			
		i=notemap.index(a)		
		if i  != (len(notemap)-1):
			Next=int(notemap[i+1][1])
			n=(Next-note)/2
			highnote=note+n
			if notemap[i+1][0] != vel:
				highnote=127
		else:
			highnote=127
		
		
		regex=re.compile('.*%d_.?_%d_'%(note, vel)+art+'.wav')	#sample file name
		for b in samples:
			if regex.match(b):
#				smpl=os.path.abspath(name)+'/'+b[2]
				smpl=os.path.relpath(name)+'/'+b		#use this for relative path name
				out_file.write('<region>\nsample=%s\nlokey=%d\nhikey=%d\npitch_keycenter=%d\n\n'%(smpl, lownote, highnote, note))
		last=note
		i+=1
	out_file.close()



LIST=os.listdir('.')
for i in LIST:
	if i[-4:]=='.zip':
		continue
#	os.chdir(i)
	CreateSfz(i)
#	os.chdir('..')
Last edited by fortea on Sat Feb 01, 2014 4:50 pm, edited 1 time in total.
studio32

Re: New Linux Open Orchestra!

Post by studio32 »

See another discussion about this topic

http://linuxaudio.org/mailarchive/lau/2012/8/13/192166
fortea
Established Member
Posts: 6
Joined: Wed Aug 15, 2012 12:20 pm

Re: New Linux Open Orchestra!

Post by fortea »

Hello! this is a new version of the script.
I improved it in speed, I covered some bugs and I also mixed samples using sox. It doesn't depends no more on ffmpeg, because in some distribution (Debian) it is not distribuited with support to mp3. I use lame instead.

I would need help with other options. For example, someone knows how to create sustain?

Thanks

Code: Select all

#! /usr/bin/env python
#
#
#Copyright 2012 Federico Simonetta (ffgsimonetta@libero.it)
#This program is free software: you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation, either version 3 of the License, or
#any later version.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details <http://www.gnu.org/licenses/gpl.txt>.

#This program depends on lame and sox. Try 'apt-get install lame sox' before of run it.

import os
import re
import subprocess
import sys

articulation={'1': 'normal', '2': 'legato', '3': 'nonlegato', '4': 'staccato', '5': 'staccatissimo', '6': 'tongued_slur', '7': 'tenuto', '8': 'double_tonguing', '9': 'triple_tonguing', '10': 'fluttertonguing', '11': 'vibrato', '12': 'glissando', '13': 'harmonic', '14': 'major_trill', '15': 'minor_trill', '16': 'tremolo', '17': 'subtone', '18': 'multiphonic', '19': 'air_note', '20': 'slap_tongue', '21': 'key_click', '22': 'growl', '23': 'mute', '24': 'phrase', '25': 'breath_attacks', '26': 'bucket mute', '27': 'cup mute', '28': 'harmon mute', '29': 'waa-waa mute', '30': 'plunger mute', '31': 'wooden mute', '32': 'metal_mute', '33': 'scraped', '34': 'rubbed', '35': 'squeezed', '36': 'blown', '37': 'bowed', '38': 'with_snares', '39': 'without_snares', '40': 'struck_together', '41': 'struck_singly', '42': 'shaken', '43': 'hummed', '44': 'plucked', '45': 'damped', '46': 'undamped', '47': 'clean', '48': 'effect', '49': 'roll', '50': 'flam', '51': 'rhythm', '52': 'rimshot', '53': 'centre', '54': 'muffled', '55': 'ruff', '56': 'body_of_instrument', '57': 'mouth', '58': 'brushes', '59': 'hotrods', '60': 'rute', '61': 'snare_sticks', '62': 'hard_mallet', '63': 'vibe_mallet_damped', '64': 'vibe_mallet_undamped', '65': 'soft_sticks', '66': 'medium_sticks', '67': 'soft_beaters', '68': 'hard_beaters', '69': 'sticks', '70': 'vibe', '71': 'bass_drum_mallet', '72': 'vibe_mallets', '73': 'body', '74': 'hand', '75': 'hard_sticks', '76': 'pres de la table', '77': 'bisbigliando', '78': 'harmonics', '79': 'strumming', '80': 'struck_body', '81': 'struck_strings', '82': 'pizzicato', '83': 'snap', '84': 'rasguardo', '85': 'trill', '86': 'with_couplers', '87': 'arco_major_trill', '88': 'arco_minor_trill', '89': 'arco_glissando', '90': 'arco_harmonic', '91': 'arco_normal', '92': 'arco_au_talon', '93': 'arco_punta_darco', '94': 'arco_col_legno_tratto', '95': 'arco_col_legno_battuto', '96': 'arco_sul_ponticello', '97': 'arco_sul_tasto', '98': 'arco_detache', '99': 'arco_legato', '100': 'arco_tenuto', '101': 'arco_portato', '102': 'arco_staccato', '103': 'arco_spiccato', '104': 'arco_martele', '105': 'arco_ricochet', '106': 'arco_tremolo', '107': 'pizz_normal', '108': 'snap_pizz', '109': 'pizz_tremolo', '110': 'pizz_quasi_guitar', '111': 'molto_vibrato', '112': 'non_vibrato', '113': 'pizz_glissando', '114': 'harmonic_glissando', '115': 'con_sord', '116': 'natural_harmonic', '117': 'artificial_harmonic', '118': 'behind_bridge', '119': 'on_bridge', '120': 'tailpiece', '121': 'striking_strings', '122': 'chord' }





def CreateSamples(directory):
	name=directory[13:-16]
	temp=name+'_tmp'
	os.mkdir(name)
	os.mkdir(temp)
	filelist=os.listdir(directory)

	for art in articulation.keys():				#selecting articulation
		if os.system('ls '+directory+'/*_'+art+'.mp3 1>/dev/null 2>/dev/null')!=0:
			continue
		v=0					 	#number of different velocity for articulation
		notes=[]					#this is the list of tuples wich will contain (velocity, 'note', 'file'), see line 25
		
		for vel in range(5,11):		 	 	 	#selecting velocity
			flag=0
			for NOTE in [ '%03d' %i for i in range(128) ]: 	#selecting note
				samples=[] 			 	#list of samples to be layered
				regex=re.compile('.*_'+NOTE+'_[^7]_%d_'%(vel)+art+'.mp3') #this '7' corresponds to "phrase"...
				smpllist=[smpl for smpl in filelist if regex.match(smpl)]
				print '\r\033[K'+NOTE+' note to wav...',
				for FILE in smpllist: 
					flag=1
					nFILE=FILE.replace(' ','-')			
					#this is needed because some files contain spaces wich break sox and mv commands (lines 70-74) 
					#lame converts file to wav:
					lame=['lame', '--decode', directory+'/'+FILE, temp+'/'+nFILE[:-4]+'.wav']
					p=subprocess.Popen(lame, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
					buf=p.communicate()[0]
					if p.poll()!=0:
#some samples provided by London Philarmonia are empty file. Actually, they are 3: one from viola, one from saxophone and one from bassoon. I skip them.
						if os.path.getsize(directory+'/'+FILE)==0:	
							continue
						print '\n\nERROR converting file '+directory+'/'+FILE+'!!'
						print '\nTry to re-unzip or re-downloading '+name+' package!\n'


						sys.exit(1)
					samples.append(temp+'/'+nFILE[:-4]+'.wav')		#list of samples to be layered
				
				final=name+'/'+name+'_'+NOTE+'_%d_'%(vel)+art+'.wav'		#final name of the (layered) sample	
				print '\r\033[K'+NOTE+' note layering',
				if len(samples)>1:
					os.system('sox -m '+' '.join(samples)+' '+final)	#sox mixes samples
					notes.append((NOTE, vel, final))
				#saving layered samples ('note', velocity, 'file'), corresponding to selected articulation, velocity, and note.
				elif len(samples)==1:
					os.system('mv '+samples[0]+' '+final)
					notes.append((NOTE, vel, final))
			if flag==1: 
				v+=1

		if v!= 0:
			OrchestraSfz(notes, v, art, name)
	
	os.system('rm -r '+temp) #(this line need only one identation)




def OrchestraSfz(notes, v, art, name):
	out_file=open(name+'-'+articulation[art]+'.sfz', 'w')	#directory[13:-16] is the instrument name
	old_vel=''
	hivel=0
	
	j=0
	print '\nCreating '+out_file.name+'...'
	for a in notes:						#taking parameters to print the sfz file
		NOTE=int(a[0])	
		vel=a[1]
	
		if vel != old_vel:				#velocity!			
			j+=1
			lovel=hivel+1
			hivel=(127/v)*j
			if j==v: hivel=127
			out_file.write('<group>\nlovel=%d\nhivel=%d\n\n'%(lovel, hivel))
			old_vel=vel
			last=0
		
		if last==0:					#lokey and hikey 
			lownote=0
		else:
			n=(NOTE-last)/2					
			if ((NOTE-last)%2)==0: n-=1
			lownote=NOTE-n
			
		i=notes.index(a)		
		if i==(len(notes)-1):
			highnote=127
		else:
			next=int(notes[i+1][0])
			n=(next-NOTE)/2
			highnote=NOTE+n
			if notes[i+1][1] != vel:
				highnote=127
					
		
		sample=os.path.relpath(a[2])			 #use this for relative path name
		out_file.write('<region>\nsample=%s\nlokey=%d\nhikey=%d\npitch_keycenter=%d\n\n'%(sample, lownote, highnote, NOTE))
		last=NOTE

	out_file.close()


#check dependencies
#unzip package

LIST=os.listdir('.')
for i in LIST:
	if i[-4:]!='.zip':
		CreateSamples(i)
User avatar
raboof
Established Member
Posts: 1855
Joined: Tue Apr 08, 2008 11:58 am
Location: Deventer, NL
Has thanked: 50 times
Been thanked: 74 times
Contact:

Re: New Linux Open Orchestra!

Post by raboof »

studio32 wrote:See another discussion about this topic

http://linuxaudio.org/mailarchive/lau/2012/8/13/192166
The thread you link to is about creating a new sample library, from scratch (so both the samples and the metadata), in a distributed way.

This topic is about enriching an existing collection of samples (the London Philarmonia Orchestra ones) with metadata so they can be easily used by samplers.

These are quite different topics.
User avatar
raboof
Established Member
Posts: 1855
Joined: Tue Apr 08, 2008 11:58 am
Location: Deventer, NL
Has thanked: 50 times
Been thanked: 74 times
Contact:

Re: New Linux Open Orchestra!

Post by raboof »

fortea wrote:I'm new in this forum. I'm Italian, so sorry for my english.
Welcome!
This post is to announce that I just started to work on London Philarmonia Orchestra samples to create a new Open Orchestra optimized for Linux.
Cool. I don't have any experience with sfz so i'm not sure if i can be of much help, but cool stuff.
You can download zip packages with mp3 samples from the website above selecting ONLY the instrument and clicking on the link at the top of the table; put them in a new directory, unzip and launch the script.
That seems a bit cumbersome - would it be useful if we zipped up the resulting directory and hosted it somewhere? Not sure how big that would be, but I could provide some hosting.
Is it possible to use multiple sample per note in one sfz files? for example, I have 4 sample of the note e4. Can I insert all them in a sfz to play simultaneously all the samples?
Is this a good idea at all? Wouldn't it sound more natural to just choose the best one?
Here the script I wrote in python:
Are you familiar with version control systems like github? Might be easier to keep track of changes and collaborate.

This might be a dumb question, but what exactly is the result you're after? One sfz sample per instrument, or a 'big' sfz with all instruments in it? In 'General MIDI' layout or some custom layout?
User avatar
raboof
Established Member
Posts: 1855
Joined: Tue Apr 08, 2008 11:58 am
Location: Deventer, NL
Has thanked: 50 times
Been thanked: 74 times
Contact:

Re: New Linux Open Orchestra!

Post by raboof »

fortea wrote:For example, someone knows how to create sustain?
How does sustain work in sfz? I guess the primitive way of achieving sustain would be to set loop points, is that what sfz does? I guess you'd need to do some sample processing and choose the points wisely to make the loop sound 'smooth' - does sfz offer anything smart for that or is that all? And how to define what happens when the sustain is released? Does it just fade out the loop?
fortea
Established Member
Posts: 6
Joined: Wed Aug 15, 2012 12:20 pm

Re: New Linux Open Orchestra!

Post by fortea »

raboof wrote:
You can download zip packages with mp3 samples from the website above selecting ONLY the instrument and clicking on the link at the top of the table; put them in a new directory, unzip and launch the script.
That seems a bit cumbersome - would it be useful if we zipped up the resulting directory and hosted it somewhere? Not sure how big that would be, but I could provide some hosting.
This is the license that appear on th London Philarmonia website:
License: You are free to use these samples as you wish, including releasing them as part of a commercial work. The only restriction is they must not be sold or made available 'as is' (i.e. as sampler or as a sampler instrument).
The script creates the sfz files, now with a different format, name and metatags. So I think we could re-distribuite them. We could zip the directory with the processed samples and with the sfz files, similarly to http://sso.mattiaswestlund.net/download.html
raboof wrote:
Is it possible to use multiple sample per note in one sfz files? for example, I have 4 sample of the note e4. Can I insert all them in a sfz to play simultaneously all the samples?
Is this a good idea at all? Wouldn't it sound more natural to just choose the best one?
I solved this problem by mixing samples with sox in the second version of this script...

raboof wrote:
Here the script I wrote in python:
Are you familiar with version control systems like github? Might be easier to keep track of changes and collaborate.
Sincerely not. I'm new in the open source as active member, and I'm not very experienced with these tools. I would be happy to learn them.
raboof wrote: This might be a dumb question, but what exactly is the result you're after? One sfz sample per instrument, or a 'big' sfz with all instruments in it? In 'General MIDI' layout or some custom layout?
Personally, I thought to a sfz for instrument articulation, so one for violin pizzicato, one for violin normal, etc. However we can think to a more strategic organization.
raboof wrote:
fortea wrote:For example, someone knows how to create sustain?
How does sustain work in sfz? I guess the primitive way of achieving sustain would be to set loop points, is that what sfz does? I guess you'd need to do some sample processing and choose the points wisely to make the loop sound 'smooth' - does sfz offer anything smart for that or is that all? And how to define what happens when the sustain is released? Does it just fade out the loop?
I'm going to read carefully the linuxsampler official documentation about sfz support. I think that the answer is in the table 1.10 .
fortea
Established Member
Posts: 6
Joined: Wed Aug 15, 2012 12:20 pm

Re: New Linux Open Orchestra!

Post by fortea »

Look at table 1.6, loop_mode, loop_start and loop_end...
nils
Established Member
Posts: 537
Joined: Wed Oct 22, 2008 9:05 pm
Has thanked: 35 times
Been thanked: 94 times
Contact:

Re: New Linux Open Orchestra!

Post by nils »

mp3s as samples is still a no-go.
Please make it very clear in your description and documentation that these are based on a compressed format so that they will not be used in real music productions. It would be really bad if they were used and in the end the whole mix is full of compression artifacts after mastering.
User avatar
GraysonPeddie
Established Member
Posts: 657
Joined: Sun Feb 12, 2012 11:12 pm
Location: Altha, FL
Been thanked: 6 times
Contact:

Re: New Linux Open Orchestra!

Post by GraysonPeddie »

I'd laugh at compression artifacts and MP3. C'mon! Why not a 24-bit/96 kHz Linux Open Orchestra?
--Grayson Peddie

Music Interest: New Age w/ a mix of modern smooth jazz, light techno/trance & downtempo -- something Epcot Future World/Tomorrowland-flavored.
User avatar
karm
Established Member
Posts: 131
Joined: Tue Jan 25, 2011 9:25 am
Location: Cracow, Poland

Re: New Linux Open Orchestra!

Post by karm »

GraysonPeddie wrote:I'd laugh at compression artifacts and MP3. C'mon! Why not a 24-bit/96 kHz Linux Open Orchestra?
24 bit and 96 kHz make sense when it comes to audio processing. This is because of dsp algorythms precision (bit depth to minimise the rounding error and high sampling rate because buffer size is in samples so higher sample rate gives more precisie operation and lower latency). In terms of audio sample's bit rate is used for amplitude dynamics and defines "how much" information can be stored before it melts with noise (16 bits gives you 96 dB while 24 bit 144 dB. check SNR on wikipedia for details). Sampling rate describes maximum frequency that can be stored in such sample.

So, to paraphrase you I'd say: I'd laugh at 24-bit/96kHz samples and waste of resources. C'mon! Why not 16 bit/44.1kHz Linux Orchestra?
Only birds fly first class
Archlinux on desktop pc.
User avatar
GraysonPeddie
Established Member
Posts: 657
Joined: Sun Feb 12, 2012 11:12 pm
Location: Altha, FL
Been thanked: 6 times
Contact:

Re: New Linux Open Orchestra!

Post by GraysonPeddie »

Don't you want studio-quality sound out of orchestrated instruments? 44.1 kHz/16-bit is CD quality, right?
--Grayson Peddie

Music Interest: New Age w/ a mix of modern smooth jazz, light techno/trance & downtempo -- something Epcot Future World/Tomorrowland-flavored.
User avatar
raboof
Established Member
Posts: 1855
Joined: Tue Apr 08, 2008 11:58 am
Location: Deventer, NL
Has thanked: 50 times
Been thanked: 74 times
Contact:

Re: New Linux Open Orchestra!

Post by raboof »

GraysonPeddie wrote:Don't you want studio-quality sound out of orchestrated instruments?
Of course.
44.1 kHz/16-bit is CD quality, right?
Yes. This means ideally the instruments should be higher-quality, because you'll want to do some post-processing and apply some effects, and those plugins often incur some quality loss. I'm not sure 96bit/24bit is a good choice, I seem to remember some qualities can be 'sampled down' to CD quality after processing easier than others, but having something better than your intended output quality is useful.

The main advantage of the London Philarmonia Orchestra samples are that They Are There. Sure, it'd be even better if we had higher-quality samples. But collecting/creating/buying such a library is no small matter. For now, I think any sample library, even one with MP3 artifacts, is possibly useful for doing interesting things.
User avatar
karm
Established Member
Posts: 131
Joined: Tue Jan 25, 2011 9:25 am
Location: Cracow, Poland

Re: New Linux Open Orchestra!

Post by karm »

GraysonPeddie wrote:Don't you want studio-quality sound out of orchestrated instruments? 44.1 kHz/16-bit is CD quality, right?
Please reread my post. You gain nothing from recording samples in 24 bit and 96 kHz. You can't hear the frequencies above 20 kHz (most adults can't hear above 16 kHz which is natural) and most performers probably can't play their instruments with 96 dB dynamics scale (although I can be wrong on the last one). If you can't hear 20 kHz then why store up to 48 kHz?

Of course you can process 16 bit 44.1 kHz samples with 24 bit 96 kHz dsp algorythms which makes them very precise and low latency.

Please read this article: http://people.xiph.org/~xiphmont/demo/neil-young.html
It is about Apple's pointless policy of 24 bit 192 kHz music files on itunes but will give you some insight on our topic aswell.
Only birds fly first class
Archlinux on desktop pc.
User avatar
GMaq
Established Member
Posts: 2774
Joined: Fri Sep 25, 2009 1:42 pm
Has thanked: 520 times
Been thanked: 555 times

Re: New Linux Open Orchestra!

Post by GMaq »

@karm

Thanks so much for sharing that article, it confirms a lot of stuff I've always believed but couldn't adequately explain. Great link!
Post Reply