schoappied wrote:
> Do you use hydrogen or midi to make drum parts for your songs?
midi (muse) and samples (specimen)
> Are there nice drum hydrogen files available? where?
> Are there nice drum midi files available? Where?
Ok, this made me download hydrogen and indeed it has some nice kits
(each within it's own directory, most of them wav). I also had a few
collections of samples of old drummachines laying around, which made me
play around with specimen.
So I wrote the attached python-script, that simply makes a .beef
(specimen file) from all .wav-files in a directory. It'll assign every
sample on a new note chromatically from a given note (default is 36), so
it's mostly useful for drums.
I think it's gonna allow me to make noise more easily :-) I post it here
in the hope others might find it useful too...
-- peace, love & harmony Atte http://atte.dk | http://myspace.com/attejensen http://anagrammer.dk | http://modlys.dk
#!/usr/bin/env python
# -*- coding: latin-1 -*-
import os, optparse, sys, os.path, wave
parser = optparse.OptionParser()
if '-?' in sys.argv:
sys.argv.remove('-?')
sys.argv.append('-h')
parser.add_option('-d','--directory-containing-wavs', dest="wavDir", default='.')
parser.add_option('-l','--lowest-note-of-mapping', dest="startNote", default='36')
parser.add_option('-f','--force-overwrite', action="store_true", dest="forceOverwrite", default=False)
parser.add_option('-s','--stdout', action="store_true", dest="stdOut", default=False)
parser.add_option('-o','--outfile', dest="outFile")
(options, args) = parser.parse_args()
def getDir(dir):
result = []
import os.path
path = os.path.abspath(dir) + '/'
list = os.listdir(dir)
for file in list:
(root, ext) = os.path.splitext(file)
if os.path.isfile(path + file) and ext in ['.wav','.WAV']:
result.append(path + file)
return result
header = """<?xml version="1.0"?>
<beef>"""
patch = """ <patch>
<name>%s</name>
<file>%s</file>
<channel>0</channel>
<note>%s</note>
<volume>1,000000</volume>
<pan>0,000000</pan>
<play_mode>5</play_mode>
<cut>0</cut>
<cut_by>0</cut_by>
<range>0</range>
<lower_note>%s</lower_note>
<upper_note>%s</upper_note>
<sample_start>0</sample_start>
<sample_stop>%s</sample_stop>
<loop_start>0</loop_start>
<loop_stop>%s</loop_stop>
<cutoff>1,000000</cutoff>
<resonance>0,000000</resonance>
<pitch>0,000000</pitch>
<pitch_steps>2</pitch_steps>
<portamento>no</portamento>
<portamento_time>0,050000</portamento_time>
<monophonic>no</monophonic>
<legato>no</legato>
<volume_a>0,000000</volume_a>
<volume_env_on>no</volume_env_on>
<volume_amt>0,000000</volume_amt>
<volume_d>0,000000</volume_d>
<volume_s>1,000000</volume_s>
<volume_r>0,000000</volume_r>
<volume_delay>0,000000</volume_delay>
<volume_hold>0,000000</volume_hold>
<volume_lfo_amt>0,000000</volume_lfo_amt>
<volume_lfo_on>no</volume_lfo_on>
<volume_vel_amt>1,000000</volume_vel_amt>
<volume_lfo_a>0,000000</volume_lfo_a>
<volume_lfo_delay>0,000000</volume_lfo_delay>
<volume_lfo_beats>1,000000</volume_lfo_beats>
<volume_lfo_freq>1,000000</volume_lfo_freq>
<volume_lfo_global>no</volume_lfo_global>
<volume_lfo_sync>no</volume_lfo_sync>
<volume_lfo_positive>no</volume_lfo_positive>
<volume_lfo_shape>sine</volume_lfo_shape>
<panning_a>0,000000</panning_a>
<panning_env_on>no</panning_env_on>
<panning_amt>0,000000</panning_amt>
<panning_d>0,000000</panning_d>
<panning_s>1,000000</panning_s>
<panning_r>0,000000</panning_r>
<panning_delay>0,000000</panning_delay>
<panning_hold>0,000000</panning_hold>
<panning_lfo_amt>0,000000</panning_lfo_amt>
<panning_lfo_on>no</panning_lfo_on>
<panning_vel_amt>0,000000</panning_vel_amt>
<panning_lfo_a>0,000000</panning_lfo_a>
<panning_lfo_delay>0,000000</panning_lfo_delay>
<panning_lfo_beats>1,000000</panning_lfo_beats>
<panning_lfo_freq>1,000000</panning_lfo_freq>
<panning_lfo_global>no</panning_lfo_global>
<panning_lfo_sync>no</panning_lfo_sync>
<panning_lfo_positive>no</panning_lfo_positive>
<panning_lfo_shape>sine</panning_lfo_shape>
<cutoff_a>0,000000</cutoff_a>
<cutoff_env_on>no</cutoff_env_on>
<cutoff_amt>0,000000</cutoff_amt>
<cutoff_d>0,000000</cutoff_d>
<cutoff_s>1,000000</cutoff_s>
<cutoff_r>0,000000</cutoff_r>
<cutoff_delay>0,000000</cutoff_delay>
<cutoff_hold>0,000000</cutoff_hold>
<cutoff_lfo_amt>0,000000</cutoff_lfo_amt>
<cutoff_lfo_on>no</cutoff_lfo_on>
<cutoff_vel_amt>0,000000</cutoff_vel_amt>
<cutoff_lfo_a>0,000000</cutoff_lfo_a>
<cutoff_lfo_delay>0,000000</cutoff_lfo_delay>
<cutoff_lfo_beats>1,000000</cutoff_lfo_beats>
<cutoff_lfo_freq>1,000000</cutoff_lfo_freq>
<cutoff_lfo_global>no</cutoff_lfo_global>
<cutoff_lfo_sync>no</cutoff_lfo_sync>
<cutoff_lfo_positive>no</cutoff_lfo_positive>
<cutoff_lfo_shape>sine</cutoff_lfo_shape>
<resonance_a>0,000000</resonance_a>
<resonance_env_on>no</resonance_env_on>
<resonance_amt>0,000000</resonance_amt>
<resonance_d>0,000000</resonance_d>
<resonance_s>1,000000</resonance_s>
<resonance_r>0,000000</resonance_r>
<resonance_delay>0,000000</resonance_delay>
<resonance_hold>0,000000</resonance_hold>
<resonance_lfo_amt>0,000000</resonance_lfo_amt>
<resonance_lfo_on>no</resonance_lfo_on>
<resonance_vel_amt>0,000000</resonance_vel_amt>
<resonance_lfo_a>0,000000</resonance_lfo_a>
<resonance_lfo_delay>0,000000</resonance_lfo_delay>
<resonance_lfo_beats>1,000000</resonance_lfo_beats>
<resonance_lfo_freq>1,000000</resonance_lfo_freq>
<resonance_lfo_global>no</resonance_lfo_global>
<resonance_lfo_sync>no</resonance_lfo_sync>
<resonance_lfo_positive>no</resonance_lfo_positive>
<resonance_lfo_shape>sine</resonance_lfo_shape>
<pitch_a>0,000000</pitch_a>
<pitch_env_on>no</pitch_env_on>
<pitch_amt>0,000000</pitch_amt>
<pitch_d>0,000000</pitch_d>
<pitch_s>1,000000</pitch_s>
<pitch_r>0,000000</pitch_r>
<pitch_delay>0,000000</pitch_delay>
<pitch_hold>0,000000</pitch_hold>
<pitch_lfo_amt>0,000000</pitch_lfo_amt>
<pitch_lfo_on>no</pitch_lfo_on>
<pitch_vel_amt>0,000000</pitch_vel_amt>
<pitch_lfo_a>0,000000</pitch_lfo_a>
<pitch_lfo_delay>0,000000</pitch_lfo_delay>
<pitch_lfo_beats>1,000000</pitch_lfo_beats>
<pitch_lfo_freq>1,000000</pitch_lfo_freq>
<pitch_lfo_global>no</pitch_lfo_global>
<pitch_lfo_sync>no</pitch_lfo_sync>
<pitch_lfo_positive>no</pitch_lfo_positive>
<pitch_lfo_shape>sine</pitch_lfo_shape>
</patch>"""
footer = "</beef>"
# --- the action ----
output = []
output.append(header)
note = int(options.startNote)
for file in getDir(options.wavDir):
(head, tail) = os.path.split(file)
(basename, ext) = os.path.splitext(tail)
wav = wave.open(file)
end = wav.getnframes() -1
values = (basename,file,note, note, note, end, end)
output.append(patch % values)
note = note + 1
output.append(footer)
if options.stdOut == True:
print '\n'.join(output)
sys.exit()
if not options.outFile:
options.outFile = options.wavDir.strip('/').split('/')[-1:][0] + '.beef'
if not os.path.exists(options.outFile) or options.forceOverwrite:
FILE = open(options.outFile,"w")
for line in output:
FILE.write(line)
else:
print 'outfile "' + options.outFile + '" exists, use -f to force overwrite'
_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@email-addr-hidden
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-user
Received on Sun Apr 6 20:15:04 2008
This archive was generated by hypermail 2.1.8 : Sun Apr 06 2008 - 20:15:04 EEST