@markeats @Olivier

to debug this, i might suggest checking for dropped OSC messages. this sometimes happens when sending large numbers of commands “at once” and it’s high priority for fixing in 2.x

2 Likes

Thinking about adding velocity zones to keys, though the design decision of “one sample per MIDI channel, 16 samples max” might make this difficult.

What’s your position on changing this design to many samples per MIDI channel, 256 samples max (the limit in Player)?

1 Like

I’m not sure I totally follow - is it that you’d like to trigger different samples based on what the note velocity is? Or what would be the method for triggering different samples?

Yes, I’d like to trigger different samples based on velocity. This is a design pattern for creating more realistic instrument simulations. The sample sets I’m using have a convention that I’ve seen where there are three for each note range.

  1. p for soft and goes up to about 110 velocity
  2. f for loud from 111 to 127
  3. RT for key retrigger noise of the wooden hammers resetting

There are insane piano sample sets that have 16 velocity layers per note, which I think is a bit much (I couldn’t perceive the difference between some) but the result is a very big realistic sound.

OK cool I see :slight_smile:
I think it probably makes sense to keep the Timber Keys script really simple and generic and then for something like this to be it’s own thing as I’m imagining you’ll want to link a lot of params in the UI, perhaps have a unique loading solution, etc etc. Keep in mind there are only 7 voices which will limit a piano simulation but a script dedicated to it would be nice!

1 Like

Cool, thanks for doing the UI work. The sample start/end/loop screen is awesome.

I’ll fork your repo as a starting point and go from there.

1 Like

Cool! It should be set up so you can just make a copy of the keys script and the libs are hopefully flexible enough to stay the same but let me know if you run into barriers and we can evolve them as need be :+1:

2 Likes

Beta 3 up now:

  • Copy samples to multiple destinations.
  • Copy params – copies everything except start/end/loop and play mode (tagging @dan_derks).
  • Choose move and copy destinations using MIDI keyboard or grid.
  • Extra params in Player for displaying MIDI notes instead of IDs and more Follow options.
  • Fixes for loop point saving.
  • Fixes for saving of streaming sample settings.

Known issue:
I’ve very occasionally seen samples play back silently (playhead moves on-screen, no sound is produced, has happened in all versions). Having trouble reproducing this one though so if you are able to I’d appreciate any info.

16 Likes

Sorry but i need a little bit of help in order to make the install (didn’t used my norns since the update). Tried things by myself but it always ends with an error… So where should i place each file?

Just put the whole folder in code and make sure it’s named timber (not timber-master)

2 Likes

Will hopefully have the time to try and make a resampling mode for Timber tomorrow(resampling processed samples to tape with auto start, stop and save) I have the idea ready on paper, just need to implement it.

Edit: giving up at the time, modifying Timber was a bit heftier than expected.

The idea was to add a resample mode to the Sample Setup menu. That could be toggled to “Yes” or “No”.

When toggled to “Yes”, Timber would automatically start a tape recording when you play a sample with timber(using the original file naming and just adding an ascending number at the end of the filename) and tape would automatically stop when the sample finished playing. Does this make sense? Not even sure it would have worked. Anyone else want to have a crack? This would involve, as far as I can see, some rewrites to the timber_engine.

it would use the following tape calls:

--- open a tape recording file.
-- @param file
Audio.tape_record_open = function(file)
  _norns.tape_record_open(file)
end

--- start tape recording.
Audio.tape_record_start = function()
  _norns.tape_record_start()
end

--- stop tape recording.
Audio.tape_record_stop = function()
  _norns.tape_record_stop()
end
3 Likes

This is truly amazing! Now I was finally able to customise a MIDI keyboard using Timber/Player that triggers my samples that I had first recorded in every tone going from C1 till C4. To avoid having to play with an all ‘pitched’ keyboard from one sample, but to get every actual sound per note in it’s right tone, like how a Mellotron works. Very cool!!

So, playing polyphonic with these samples I started noticing some notes freeze randomly when playing multiple trigs at the same time. Also sometimes it skips a note or two.
Would this be due to settings, or possible bug? All trigs are set to Gate, not Loop.

Thanks so much for creating this!

1 Like

Sounds like a bug, could you give some more details or perhaps share a video? If you have some steps to re-create or can describe in detail that’d be much appreciated.

I prepared and assigned all my wav samples (approx 10-20sec each) in Timber Keys. With some of them I also adjusted the start point of the sample. Then I changed every trig mode to gate.

I’ll include a video where you can see 2 notes freeze at the end playing every time 4 notes per chord on the MIDI keyboard. It also happens sometimes when playing only two notes at the same time. It doesn’t seem to be caused by doing the same action, so really random. Other moments for an entire minute or two it doesn’t freeze at all.

At the start of the video you can see 2 notes did not sound, as I am hitting four notes every time.
https://vimeo.com/338133191
And one with keyboard:
https://vimeo.com/338133459

Hope this helps!

What midi keyboard are you using?

https://www.esi-audio.com/products/keycontrol49/

I am using this one, more than 6 years old. But I haven’t had any problems with it so far!

Thanks for posting the videos, that always helps a lot! Here’s what I’m noticing:

  • Looks like you’re using the Player script rather than Keys which makes sense.
  • It seems like MIDI messages are simply failing to get through occasionally, sometimes the note-ons, sometimes the note-offs.

I’d be curious as to if you have the same problem with other norns scripts with this keyboard (my bet is you will but I can’t be 100% sure). I’m assuming if you play using the grid you never have this issue?

Another thing you could test, if you’re comfortable with maiden, is uncommenting two lines within the script (lines 142 and 153), and then watching the console in maiden to see if sometimes there are missing note on/offs not getting printed.

1 Like

Apologies, yes I am using the Player script! Looks like I mixed up the titles:)

I haven’t used a keyboard with other scripts. I will test it later on today, good idea.
I am not very experienced in maiden but I am happy to give this a try as well.

I’d like to borrow some of the UI elements for my own synth from this library. I’m going through timber_engine.lua and there’s a lot of what looks like OOP conventions…but everything is just a table!?! @markeats would you have any advice about how you decided on these conventions for the UI? At first glance it looks like there’s a deeper OO system than I imagined.

bloody hell this is awesome. Only loaded it to play with Orca but goodness me this has a lot of potential

thank you!

(thank you as well for the UI work on. this - more to “borrow” for my own scripts :slight_smile: )

2 Likes