Hi everyone, hoping to get opinions from gurus on here, who have been
*incredibly* helpful in getting my project to where its at. A million thank
yous!
Ok, the situation so far, which is working well:
- the app uses a generalized 'message' structure, all the different forms
of messages fit into this structure by having it act alike a union. ( ie, a
message always takes up the same amount of space, no matter the type )
- messages do not container pointers, in order that they be simple to send
and receive over network clients, hardware, etc
- there are ringbuffers between my audio thread and real time thread
What I'm tackling:
- I want to add the capability for messages to have deferred execution, so
they can be sent with a 'process at 4:3:1' kind of thing
- I think the best tradeoff for my app so far will be to use a hybrid of a
timeline array and a linked list. there will be coarse time values stored
by raw array indexing, speeding up lookup, and fine time values will be
stored in the messages themselves
- so, when the engine is processing deferred messages, it will go and check
timelineArray for all messages at bar 1:beat 1, which will be a linked list
of all the messages with start time between bar:1 beat 1 and bar 1: beat 2
( time resolution may change, this just for example
- then the engine iterates on every tick through that list of messages.
This way, iteration on every tick is limited to a reasonable sized linked
list and I can play with the cpu vs data storage equation by simply
changing the resolution of the time line array
Issues:
- I need to allocate memory for new linked list items in the realtime thread
- the timeline array needs to be able to grow in the real time thread
Thoughts:
- I don't need to get it perfect *right now* but I need to be able to
change it to Really Good later
- I checked out some resources, like this one the Design Patterns for *Real*
-*Time* Computer *Music*
Systems<http://www.google.ca/url?sa=t&rct=j&q=audio%20allocating%20memory%20in%20re…>
and the supercollider book chapter and see there are a lot of options
- I could pre-allocate a giant list of messages and pluck the data off that
list when I need to make a new one
- I could pre-allocate a block of memory and allocate off that
- I could allocate in the non-realtime thread and then pass memory over in
queues.
Would love to hear opinions on how others would solve these, including
tradeoffs of each.
thanks!
iain
Hello list,
I would like to share a piece I've just finished.
The original blog entry is here, but for your convenience I'll include a copy into this mail.
Feel free to use any channel you want if you would like to comment on it.
http://www.nilsgey.de/2012/02/29/airship-theme/
Airship - A 16bit Soundtrack Theme
direct download: http://www.nilsgey.de/uploads/NilsGey-AirshipTheme.mp3
I have finished my first just-for-fun composition since a very long time ago. It is a game-soundtrack like piece I named “Airship”. I can imagine this in a Japanese 90’s RPG from the SNES or Sega Genesis/MegaDrive era.
Software used: Laborejo composition and midi generation, Fluidsynth for midi to wave rendering and Ardour for the fadeout :) .
I used an .sf2 called Setzers SPC which I have downloaded here. I am not sure about the soundfonts legal status so I am careful and release the Airship Theme not as a free piece but just as: Listen to it freely, share and redistribute it but don’t use it in any work, derived or original, or as part of a game or video etc. Don’t do anything commercial with it and don’t change the mp3 tags. If you find a named, matching License to this description feel free to use that instead.
I would be very happy if you leave a comment or click this blogs “Like” button.
Greetings,
Nils
http://www.nilsgey.dehttp://www.laborejo.org
If there is Linux and Alsa, we should just be able to cross-compile (or even compile on the Raspberry if there is gcc); I don't see many difficulties. It should be easier than android and iOS.
I might see if I can get one to run Csound on.
Regards
Victor
On 29 Feb 2012, at 10:46, James Harrison wrote:
> I'm hoping that adding an ADC won't be too tricky, though it has USB so a USB sound card should work. For $25 an end, it'd make a lovely portable IP codec for broadcast with CELT and RTP...
>
> Cheap synth would be neat, though. Wonder how much stuff in the Linux audio world is ARM-compatible?
>
> Cheers,
> James Harrison
>
>
> On 29/02/2012 10:45, Victor Lazzarini wrote:
>> Thanks, sounds good, I am thinking here: cheap synthesizer.
>>
>> Victor
>> On 29 Feb 2012, at 10:40, James Harrison wrote:
>>
>>> Comes with a DAC, but no ADC as far as I can see.
>>>
>>> Cheers,
>>> James Harrison
>>>
>>>
>>> On 29/02/2012 10:30, Victor Lazzarini wrote:
>>>> Does anyone know whether the Raspberry PI comes with a DAC/ADC?
>>>>
>>>> Dr Victor Lazzarini
>>>> Senior Lecturer
>>>> Dept. of Music
>>>> NUI Maynooth Ireland
>>>> tel.: +353 1 708 3545
>>>> Victor dot Lazzarini AT nuim dot ie
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Linux-audio-dev mailing list
>>>> Linux-audio-dev(a)lists.linuxaudio.org
>>>> http://lists.linuxaudio.org/listinfo/linux-audio-dev
>> Dr Victor Lazzarini
>> Senior Lecturer
>> Dept. of Music
>> NUI Maynooth Ireland
>> tel.: +353 1 708 3545
>> Victor dot Lazzarini AT nuim dot ie
>>
>>
>>
>> _______________________________________________
>> Linux-audio-dev mailing list
>> Linux-audio-dev(a)lists.linuxaudio.org
>> http://lists.linuxaudio.org/listinfo/linux-audio-dev
Dr Victor Lazzarini
Senior Lecturer
Dept. of Music
NUI Maynooth Ireland
tel.: +353 1 708 3545
Victor dot Lazzarini AT nuim dot ie
Does anyone know whether the Raspberry PI comes with a DAC/ADC?
Dr Victor Lazzarini
Senior Lecturer
Dept. of Music
NUI Maynooth Ireland
tel.: +353 1 708 3545
Victor dot Lazzarini AT nuim dot ie
Here's another video, this one demonstrating the fact that NSM can
manage a single session with clients spread across multiple machines
(nsmd must be running on each system).
http://youtu.be/xzspJXbEoc0
I forgot to show that when you add a client via the GUI, it asks you
which server to start it on. Otherwise, the behavior is identical to
having a session on a single machine. If you just start up an NSM
capable client on any of the machines participating in the session
(with the appropriate environment variable set), then that client will
join the session as normal.
This distributed session feature is just a natural consequence of the
architecture of NSM and doesn't add any complexity to either the
client or server implementation (just a small amount to the session
manager GUI).
I'm getting pretty close to doing the release, but I still have a lot
of documentation to write and update for the user interface changes.
Enjoy!
Greetings,
I notice that whenever I use any Juce-based native Linux VST plugin - fx
or instrument - in Ardour3 the plugin produces dramatically more xruns
than any LV2 or LADSPA plug. Does anyone else have that problem ? If so,
can anything be done about it, apart from raising my latency settings ?
Thanks,
dp
Sometimes, I wonder why I even bother... First, recordmydesktop didn't
work, so I had to film the screen with a video camera, then ffmpeg2theora
took ages to transcode the video from MJPEG and added some annoying clicks
to the audio track, then the new archive.org uploader didn't work, so I was
stuck with using youtube.com, which refuses to display the video in HD.
Alas, I am to learn again and again that the only way to have things done
right is to do them yourself. On that note, I'd like to introduce to the
wider audience a project that I started shortly after writing this:
http://lists.linuxaudio.org/pipermail/linux-audio-dev/2008-May/021084.html
... post to the LAD list back in 2008. Well, I haven't been very active
since then--well, such is life--but in the past couple of weeks I've spent
some time developing the idea and I'd like to demonstrate it in the
following video:
http://www.youtube.com/watch?v=ui-gC_ZMeGM
I'll be pushing my changes in the next week or two along with some other
fixes and enhancements to the Non-* family. Those who have been following
on #lad may have already seen draft versions of the NSM API. The final
draft (version 1.0) will be posted to the LAD list soon also.
Robust audio session management on Linux is now a solved problem. You're
welcome ;-)
Enjoy!
hi everyone!
yesterday, i visited my friends' new studio, to help them shake out some
bugs in the patch and fix a monitor problem. there i came across a
really weird issue with the line outputs on two rme fireface 800s:
we put a test tone out in logic (yeah, they run a mac shop), and i went
to measure the outputs. in addition to really high fluctuations from one
output to the next (with identical digital input signals), i measured
huge differences in voltage on the hot and cold side, such as
hot to ground: 2.00 V
cold to ground: 1.82 V
despite the fluctuations across several channels, this trend was pretty
constant. so i figured, maybe this box has a problem with its negative
voltage rail. they had another ff 800 in there, which we measured for
comparison. same issue.
i figured, maybe apple wrote an oscillator with a dc offset, so we
applied a known-good test tone .wav file. same result.
is my thinking flawed, or are rme really delivering such crappy output
stages on such a pricey box?
my multimeter is not a calibrated one, but it's in the 100+€ range, and
i used AC true rms measurement mode.
i understand my meter has a very high input impedance, and that's what
line level connections should have, right? operating more or less
open-loop, without significant currents flowing. or should i use a shunt
resistor and measure across that? if so, what value is recommended?
thanks for any insights, best,
jörn
Hello all,
I've written a new sampler/drum machine lv2 plugin called DrMr. You can
find it here: https://github.com/nicklan/drmr
It's main reason to exist is to give a way for lv2 hosts to have a built
in drum synth that can save its entire state (i.e. no need to go out to
external tools and no need to save extra state). DrMr currently
supports the following:
- Control via midi
- Scan for and load hydrogen drum kits
- Multi-layer hydrogen kits (will pick layer based on that sample's
set gain)
- Kit is set via an LV2 control
- LV2 controls for gain on each sample
- LV2 controls for pan on each sample
- GTK ui that can select a kit and control gain/pan on each sample
There's more info in the README.md which you can see if you click the
above link. There are a couple of screenshots on the github wiki page.
I hope people find it useful, and as it's rather new code, bug reports
are of course very welcome.
Cheers,
Nick