[Lazarus] Feedback Wanted: Next tutoring project

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

[Lazarus] Feedback Wanted: Next tutoring project

Free Pascal - Lazarus mailing list
As some of you may have been following, a little more than a week ago I asked for community feedback on an a project I was planning. The project turned out very well and if you haven't seen yet, or haven't checked out the git repository, I've made a few enhancements including fixing a few cross platform bugs and enhancing the way the node wires are drawn: 


Now I am starting on a new project in the same vein , and that is to design an example program were students I am teaching can get immediate feedback on the functions they add to the project. I'd like to submit my new project idea to you again in the hopes that you can make some good suggestions before I start implementing it.

Here is my idea:

I want to design an example project that allows students to write functions that generate musical tones. These tones can then be mapped to their keyboard where they can play it like a piano. They will also have the ability visual the tones through an oscilloscope like graph that I draw. As tones are played they can see the graph chance in real time.

Types of tones that students might create include square wave, saw wave, sin wave, and other wave types.

I am also considering a simplified musical staff where tones can be placed on it, drags to be resized or move, and a lasso select can alter the tonal properties of their selections.

Finally I might add the ability to save and load tones to and from musical staff so that songs can be created or loaded and played using their tones.

Does anyone care to provide any feedback on this idea before I implement it?

Thanks again.
Anthony

--
_______________________________________________
lazarus mailing list
[hidden email]
https://lists.lazarus-ide.org/listinfo/lazarus
Reply | Threaded
Open this post in threaded view
|

Re: [Lazarus] Feedback Wanted: Next tutoring project

Free Pascal - Lazarus mailing list
Off topic:
You seem to have nailed wire drawing algorithms - do you have a good resource for that? I have to do something similar. 
On topic:
Bravo on the previous project, looking forward to the next one. Was shocked at how complete and awesome it was. By all means, continue. 


On Sun, May 5, 2019 at 3:44 PM Anthony Walter via lazarus <[hidden email]> wrote:
As some of you may have been following, a little more than a week ago I asked for community feedback on an a project I was planning. The project turned out very well and if you haven't seen yet, or haven't checked out the git repository, I've made a few enhancements including fixing a few cross platform bugs and enhancing the way the node wires are drawn: 


Now I am starting on a new project in the same vein , and that is to design an example program were students I am teaching can get immediate feedback on the functions they add to the project. I'd like to submit my new project idea to you again in the hopes that you can make some good suggestions before I start implementing it.

Here is my idea:

I want to design an example project that allows students to write functions that generate musical tones. These tones can then be mapped to their keyboard where they can play it like a piano. They will also have the ability visual the tones through an oscilloscope like graph that I draw. As tones are played they can see the graph chance in real time.

Types of tones that students might create include square wave, saw wave, sin wave, and other wave types.

I am also considering a simplified musical staff where tones can be placed on it, drags to be resized or move, and a lasso select can alter the tonal properties of their selections.

Finally I might add the ability to save and load tones to and from musical staff so that songs can be created or loaded and played using their tones.

Does anyone care to provide any feedback on this idea before I implement it?

Thanks again.
Anthony
--
_______________________________________________
lazarus mailing list
[hidden email]
https://lists.lazarus-ide.org/listinfo/lazarus

--
_______________________________________________
lazarus mailing list
[hidden email]
https://lists.lazarus-ide.org/listinfo/lazarus
Reply | Threaded
Open this post in threaded view
|

Re: [Lazarus] Feedback Wanted: Next tutoring project

Free Pascal - Lazarus mailing list
You can view the logic related to both drawing the nodes and handling how they can connect to one another in the unit below. Note that I also check for circular references so that one node cannot indirectly lead back to itself. Also, the rendering only hits the nodes that are connected to the final output node TDisplayNode or FDisplay in the TNodeList by working its way backwards from it to only connected nodes.


Regarding the next project, I think I am going to concentrate two different programming tasks for my students. One task is to create various tones through simple functions, and the other is to create effects (again through simple functions) which manipulate a sound source. Examples of effects might include a chorus effect, pan effect, flanger effect, reverb effect, echo effect, and probably a few crazy original sounding effects that don't make much sense for musicians to use. In any case, I suspect that I will allow the user to again hook effects up together in a chain, possibly using the same node type user interface where one effect outputs samples that can be fed into other effects.

And in place of the image drawn above like in the Image Shop example, I might just make the rendering take the shape of graphing real time wave forms and cut back slightly on the musical staff, at least until another point in time.

--
_______________________________________________
lazarus mailing list
[hidden email]
https://lists.lazarus-ide.org/listinfo/lazarus
Reply | Threaded
Open this post in threaded view
|

Re: [Lazarus] Feedback Wanted: Next tutoring project

Free Pascal - Lazarus mailing list
On 06/05/2019 01:32, Anthony Walter via lazarus wrote:

> Regarding the next project, I think I am going to concentrate two
> different programming tasks for my students. One task is to create
> various tones through simple functions, and the other is to create
> effects (again through simple functions) which manipulate a sound
> source. Examples of effects might include a chorus effect, pan effect,
> flanger effect, reverb effect, echo effect, and probably a few crazy
> original sounding effects that don't make much sense for musicians to
> use. In any case, I suspect that I will allow the user to again hook
> effects up together in a chain, possibly using the same node type user
> interface where one effect outputs samples that can be fed into other
> effects.
>
> And in place of the image drawn above like in the Image Shop example,
> I might just make the rendering take the shape of graphing real time
> wave forms and cut back slightly on the musical staff, at least until
> another point in time.

As well as effects to alter the tones, you could consider adding a
repetitive mode in which beats/rhythm is introduced for one or more
tones, such as various drumming styles, pizzicato, rock rhythms, hip
hop, waltz and other dance beats etc. If the tones sounded concurrently
this could add a ground bass effect.

--
_______________________________________________
lazarus mailing list
[hidden email]
https://lists.lazarus-ide.org/listinfo/lazarus
Reply | Threaded
Open this post in threaded view
|

Re: [Lazarus] Feedback Wanted: Next tutoring project

Free Pascal - Lazarus mailing list
In reply to this post by Free Pascal - Lazarus mailing list
On 5/5/2019 6:44 PM, Anthony Walter via lazarus wrote:
> Here is my idea:
>
> I want to design an example project that allows students to write functions
> that generate musical tones. These tones...

> ... They will also have the
> ability visual the tones through an oscilloscope like graph that I draw. As
> tones are played they can see the graph chance in real time.
>
> Types of tones that students might create include square wave, saw wave,
> sin wave, and other wave types.

That sounds *very* good to me!  This would be nice to use to learn how
to use a PicoScope by hooking it up to display the same graph.  You get
*fantastic* software for an inexpensive price:
https://www.picotech.com/oscilloscope/2000/picoscope-2000-overview

There are a few ideas and PicoScope links here:
http://controlpascal.com/tutorial.htm

Best Regards,
Paul
--
_______________________________________________
lazarus mailing list
[hidden email]
https://lists.lazarus-ide.org/listinfo/lazarus
Reply | Threaded
Open this post in threaded view
|

Re: [Lazarus] Feedback Wanted: Next tutoring project

Free Pascal - Lazarus mailing list
Thanks, those are some good ideas. I'll look at PicoScope.

For the students I am going concentrate on having them writing tone functions and effect functions. Tones will return a left and right SmallInt given a time, and effects will have access to a history of the sound samples to alter the current left and right sample. Again the students will be able to connect tones to effects to generate an output, but in this case I think the output kill be a virtual on screen representation of black and white piano keys, such that each key can generate the tone / effect assigned to it through a chain of inputs and outputs.

I believe having the wave form graphed above as you play the keys is still something I'll put into it.



--
_______________________________________________
lazarus mailing list
[hidden email]
https://lists.lazarus-ide.org/listinfo/lazarus
Reply | Threaded
Open this post in threaded view
|

Re: [Lazarus] Feedback Wanted: Next tutoring project

Free Pascal - Lazarus mailing list
In reply to this post by Free Pascal - Lazarus mailing list
Op 6/05/19 om 00:44 schreef Anthony Walter via lazarus:

> Does anyone care to provide any feedback on this idea before I implement it?
>
You could implement reading midi-files. So no need to "compose" your own
tunes ;-)

Koenraad.

--
_______________________________________________
lazarus mailing list
[hidden email]
https://lists.lazarus-ide.org/listinfo/lazarus
Reply | Threaded
Open this post in threaded view
|

Re: [Lazarus] Feedback Wanted: Next tutoring project

Free Pascal - Lazarus mailing list
Thanks, but I think I've decided what I am going to do is allow for sounds to be applied to a virtual keyboard interface. Each sound might be different both in pitch and in actual sound. So are far as reading standard music file formats that won't work. 

Also along these lines, I will also want to allow for sound files such as wav or mp3 files to be used as sources, much like I allow for pictures to be used as sources in my Image Shop program. This will be in addition to tone generation sources which will be purely grammatically generated. The tones will then optionally be able to route through effect functions such as attack, sustain, pan, reverb, flanger, echo and so on to manipulate the tone before it reached the virtual keyboard. All the sources and effects will appear in the user interface as nodes with the end point being a specific virtual keyboard key. The layout of the keyboard to node binding will be able to be saved and loaded. Also users will be able to map virtual keyboard keys to their actual computer keys so that they can play the different node series using their computer keyboard.

I do have one request though, which I shall make a new thread for. And that request is to ask for help from someone in writing an mp3 decoder with a few requirements. If anyone is interested helping me with in this project, the help with and an mp3 and wav decoder would be much appreciated. See the other thread for details.

--
_______________________________________________
lazarus mailing list
[hidden email]
https://lists.lazarus-ide.org/listinfo/lazarus