Hello,

I have an electric violin made from a 3D Printer. Everything is pretty much together, i.e. subtract a few screws.

Anyway, I was going over the ideas in the online lectures. Does anyone know where to jump to in the lectures to get an input from a source?

Seth

P.S. I am asking b/c I am on lecture seven. Seven has inputs or was is six. Anyway, I am still learning about BELA and the Maker Faire is April 10th. I am bringing BELA, a BBB, and this electric violin. I have the output of a small speaker, i.e. nothing too overwhelming. I have the electronic pick up attached to the BELA but I cannot control the speaker via BELA from the GUI yet. Is there a way to do this idea?

    Hello,

    Is this section on the tutorials called Stand Alone what I am looking to attain?

    So, basically:

    Electric Pick up on the Violin to input on the BELA w/ BBB --> some source --> Output on BELA w/ the BBB to a speaker

    Does that sound like a match or is it more complicated? I am starting to get bearing here w/ the process of using the BELA hardware.

    Anyway, I will stay patient in case anyone has time to reply.

    Seth

      silver2row Electric Pick up on the Violin to input on the BELA w/ BBB --> some source --> Output on BELA w/ the BBB to a speaker

      that's straightforward (except for "some source", as I am not sure what you mean, but if it's a "some effect", then I get it).

      silver2row Anyway, I was going over the ideas in the online lectures. Does anyone know where to jump to in the lectures to get an input from a source?

      what do you mean "an input from a source"? Do you mean "reading an audio input"? That's done with audioRead(). I am not sure the lectures cover it, as it was easier not to deal with audio inputs at all (as that would require users to provide their own external source and audio cable).

      silver2row I cannot control the speaker via BELA from the GUI yet.

      what property of the speaker would you want to control from the GUI?

      I guess my question is: what processing do you want to run on Bela?

        Hello Sir,

        giuliomoro

        I have four strings and one pickup for the electric violin. The pickup, transducer, plugs directly into the input of the BELA Cape.

        My speaker works. I have used it before w/ the library you all have provided. I also can control the library to handle BELA source for GUI applications like you all described in the lectures. When you ask 'what processing,' I am not sure I understand.

        If I can use C++ as the source, that is okay. I have not added any external sensors to the BELA outside of the transducer/pickup for gaining sound attention.

        Seth

        P.S. I figured I could get the input of the transducer and output it to a speaker via BELA. Again, I have not added any other external hardware. I am using the output and not the speaker outputs on the BELA for sound for now.

        Would this be a starter idea? https://github.com/BelaPlatform/Bela/blob/master/examples/Audio/convolver/render.cpp

          Hello giuliomoro ,

          Would me using a 'string' midi be possible? For instance, once I get the midi working w/ the four strings and creating different tones w/ each, separate string, I could then move away from that idea.

          Moving away from that idea of a four string midi is secondly, though.

          I would like to be able to control the strings like a midi at first and then progress slowly w/ other ideas.

          Seth

          P.S. I think this better describes what I am looking to attain.

            giuliomoro audioRead

            Hello Sir,

            What exact arguments does the audioRead() function take and where can I find it in the source for BELA?

            Seth

              silver2row What exact arguments does the audioRead() function take and where can I find it in the source for BELA?

              you can find them here, or in the documentation tab of the Bela IDE.

              silver2row When you ask 'what processing,' I am not sure I understand.

              the question here is: what does Bela do in your system. I assume you don't want the sound to just pass through it, but that you want to somehow modify the sound of your pickup as it goes through Bela.

              silver2row some source
              silver2row C++ as the source,

              I know seem to understand that by "source" in your original "diagram" you meant "source code", so the question is: what should that code do? How will it modify (process) the sound ?

              Whether it's a good starting idea depends on what you want to achieve. That example processes incoming audio via a short convolution. This could be used, for instance, to add a more "wooden" resonance to the sound picked up by the pickup installed on your violin.

              silver2row Would me using a 'string' midi be possible? For instance, once I get the midi working w/ the four strings and creating different tones w/ each, separate string, I could then move away from that idea.

              it seems that you want to process the sound coming from the pickup to generate MIDI data. This is much easier said than done. The process of pitch an envelope extraction is by itself fairly challenging when dealing with polyphonic signals. We do not have ready-made code that would do just that, however i believe in the online course there is a class on envelope detection. Even once you get to the point where you have pitch and envelope, the process of generating MIDI data from it is not straightforward either (one could easily spend a PhD working on just that), as MIDI is fundamentally the wrong tool for the job (see for example Moore, The Dysfunctions of MIDI, 1988. Even if you got MIDI out of it, where would you send that MIDI data to in order to synthesise a signal? Virtually no commercially available plugin will run on Bela (or most other embedded ARM computer, for what is worth), so you may end up having to run the sound engine on a laptop connected to Bela, in which case you could instead just use a soundcard and do without using Bela at all.

              So, if you are going to use Bela for this project, you may want to look at ways of using it to apply some effects to the incoming sound ...

                giuliomoro ,

                Seth here and Hello...yes sir. I understand partially what you are saying here as I do not have a long standing relationship w/ music-tech.

                Wooden sounds, heh? Okay...that is a start. I feel like the Maker Faire, which was cancelled until recently, had some disconnect w/ reaching out.

                So, I am learning a lot in a short period to produce an effect from BELA from the violin.

                Seth

                P.S. And right, the sound(s) are not meant to process nothing. I expect the sound to be distorted in some way via BELA. BELA needs to merely exchange and process the data it receives to perform functions on the data to turn it into a different sound. Okay! I am w/ you in this context. How will it modify the sound? "How" in this question is where I am at now.

                giuliomoro 💯

                Hello...I am receiving a bunch of errors. My first error was that /libraries/Biquad/QuadBiquad.h does not exist.

                So, I found it and added it in the file system. I received so many errors that I gave up. Boo to me!

                Anyway, is there an updated image you all provide to handle the /QuadBiquad.h file?

                Seth

                P.S. If it matters, here are the errors:

                In file ./libraries/Biquad/QuadBiquad.h: expected '(' for function-style cast or type construction column: 34, line: 11
                In file ./libraries/Biquad/QuadBiquad.h: expected member name or ';' after declaration specifiers column: 35, line: 11
                In file ./libraries/Biquad/QuadBiquad.h: use of undeclared identifier 'BiquadCoeff' column: 21, line: 33
                In file ./libraries/Biquad/QuadBiquad.h: explicit instantiation of non-template class 'BiquadCoeffT' column: 23, line: 75
                use of undeclared identifier 'BiquadCoeff'; did you mean 'BiquadCoeffT'? column: 9, line: 15
                incomplete type 'BiquadCoeffT' named in nested name specifier column: 9, line: 15
                use of undeclared identifier 'BiquadCoeff'; did you mean 'BiquadCoeffT'? column: 34, line: 25
                incomplete type 'BiquadCoeffT' named in nested name specifier column: 34, line: 25
                use of undeclared identifier 'BiquadCoeff'; did you mean 'BiquadCoeffT'? column: 34, line: 29
                incomplete type 'BiquadCoeffT' named in nested name specifier column: 34, line: 29
                no member named 'filters' in 'QuadBiquad' column: 31, line: 40
                expected function body after function declarator column: 51, line: 72
                In file included from /root/Bela/projects/Making_Wood_Sounds/render.cpp:11:
                ./libraries/Biquad/QuadBiquad.h:11:16: error: use of undeclared identifier 'BiquadCoeffT'
                    std::array<BiquadCoeffT<float>, 4> filters;
                               ^
                ./libraries/Biquad/QuadBiquad.h:11:34: error: expected '(' for function-style cast or type construction
                    std::array<BiquadCoeffT<float>, 4> filters;
                                            ~~~~~^
                ./libraries/Biquad/QuadBiquad.h:11:35: error: expected member name or ';' after declaration specifiers
                    std::array<BiquadCoeffT<float>, 4> filters;
                                                  ^
                ./libraries/Biquad/QuadBiquad.h:33:21: error: use of undeclared identifier 'BiquadCoeff'
                    int setup(const BiquadCoeff::Settings& settings);
                                    ^
                ./libraries/Biquad/QuadBiquad.h:75:23: error: explicit instantiation of non-template class 'BiquadCoeffT'
                extern template class BiquadCoeffT<float>;
                                      ^           ~~~~~~~
                /root/Bela/projects/Making_Wood_Sounds/render.cpp:15:9: error: use of undeclared identifier 'BiquadCoeff'; did you mean 'BiquadCoeffT'?
                        BiquadCoeff::Settings s = {
                        ^~~~~~~~~~~
                        BiquadCoeffT
                ./libraries/Biquad/QuadBiquad.h:75:23: note: 'BiquadCoeffT' declared here
                extern template class BiquadCoeffT<float>;
                                      ^
                /root/Bela/projects/Making_Wood_Sounds/render.cpp:15:9: error: incomplete type 'BiquadCoeffT' named in nested name specifier
                        BiquadCoeff::Settings s = {
                        ^~~~~~~~~~~~~
                ./libraries/Biquad/QuadBiquad.h:75:23: note: forward declaration of 'BiquadCoeffT'
                extern template class BiquadCoeffT<float>;
                                      ^
                /root/Bela/projects/Making_Wood_Sounds/render.cpp:25:34: error: use of undeclared identifier 'BiquadCoeff'; did you mean 'BiquadCoeffT'?
                                        s.type = BiquadCoeff::lowpass;
                                                 ^~~~~~~~~~~
                                                 BiquadCoeffT
                ./libraries/Biquad/QuadBiquad.h:75:23: note: 'BiquadCoeffT' declared here
                extern template class BiquadCoeffT<float>;
                                      ^
                /root/Bela/projects/Making_Wood_Sounds/render.cpp:25:34: error: incomplete type 'BiquadCoeffT' named in nested name specifier
                                        s.type = BiquadCoeff::lowpass;
                                                 ^~~~~~~~~~~~~
                ./libraries/Biquad/QuadBiquad.h:75:23: note: forward declaration of 'BiquadCoeffT'
                extern template class BiquadCoeffT<float>;
                                      ^
                /root/Bela/projects/Making_Wood_Sounds/render.cpp:29:34: error: use of undeclared identifier 'BiquadCoeff'; did you mean 'BiquadCoeffT'?
                                        s.type = BiquadCoeff::highpass;
                                                 ^~~~~~~~~~~
                                                 BiquadCoeffT
                ./libraries/Biquad/QuadBiquad.h:75:23: note: 'BiquadCoeffT' declared here
                extern template class BiquadCoeffT<float>;
                                      ^
                /root/Bela/projects/Making_Wood_Sounds/render.cpp:29:34: error: incomplete type 'BiquadCoeffT' named in nested name specifier
                                        s.type = BiquadCoeff::highpass;
                                                 ^~~~~~~~~~~~~
                ./libraries/Biquad/QuadBiquad.h:75:23: note: forward declaration of 'BiquadCoeffT'
                extern template class BiquadCoeffT<float>;
                                      ^
                /root/Bela/projects/Making_Wood_Sounds/render.cpp:40:31: error: no member named 'filters' in 'QuadBiquad'
                                        bs[b].filters[q].setup(s);
                                        ~~~~~ ^
                /root/Bela/projects/Making_Wood_Sounds/render.cpp:72:51: error: expected function body after function declarator
                void cleanup(BelaContext *context, void *userData)
                                                                  ^
                13 errors generated.
                make: *** [/root/Bela/projects/Making_Wood_Sounds/build/render.o] Error 1

                  silver2row Anyway, is there an updated image you all provide to handle the /QuadBiquad.h file?

                  You should update your Bela code using the procedure here. That should fix most of the above.

                    giuliomoro

                    Hello,

                    I got my 3D Printed violin to make sound from you and your projects resources via BELA and a small tweeter speaker. Anyway, I will be making a video and post it soon to Hackster.io for all of the people still interested in Music, BELA, and hardware along w/ the BBB.

                    Thank you, sir. Now, I can try all sorts of things w/ it.

                    Seth

                    P.S. I will get the link to the video soon once the video uploads.

                    Here is the mildly sound-a-rific violin being played on a tweeter for testing w/ the libraries you all have made.

                    Seth

                    Hi Seth,

                    That video isn't playing here.

                    Also do you have some pics of the violin. I have difficulty printing the simplest thing on my printer, the idea of a 3d printed violin is mad!

                      video plays fine?
                      violin looks sweet!

                      sound may need some work, hah. 🙂
                      good luck!

                        Hello Remork and AndyCap ,

                        I can view the video. It is a f-f-fiddle but in 3/4 size. The fellow that produced the files are all online when one searches for f-f-fiddle.

                        Also, yes. I need to work on the sound. The bow will not be rosined by me firstly. So, I should get a real violin player or a child that is willing to try at the Faire to rosin the bow so they may play.

                        Seth

                        P.S. Thank you! I will need it. I am no C++ expert as most of you can already tell, plus I am not a real violin student, and I love music (all kinds). Soothing to erratic and chaotic to melodic, all suits my needs of ear hole consumption!

                        AndyCap

                        Hello, I just reread what you typed. I kind of said already what to research on this effort but...

                        Here: https://openfabpdx.com/fffiddle/

                        That will bring you directly to the engineer who made it and other products he produces. Most of it is open source but some are a bit complicated, i.e. so he is trying to produce efforts outside of plain-Jane, Open Source.

                        Seth

                        Thanks for that link I will read through it...

                        All I get on the video here on safari on a mac is a play button that doesn't work!

                          video works fine on firefox.